[llvm] [WIP] [Coroutines] fix coroutines + std::unique_ptr with async exceptions validation errors (PR #149691)

via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 2 22:36:43 PDT 2025


https://github.com/tzuralon updated https://github.com/llvm/llvm-project/pull/149691

>From 6ccbdcd94a604e050a181b438bd3a15cf6399ff0 Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 20 Jul 2025 01:08:15 +0300
Subject: [PATCH 1/8] [Coroutines] added 5 tests that fail on the validations
 errors in #148035

---
 .../Coroutines/pr148035_0_coroutine.ll        | 7609 +++++++++++++++++
 .../pr148035_1_coroutine_w_std_unique.ll      |  866 ++
 ...coroutine_w_arg_w_move_ctor_and_deleter.ll |  727 ++
 .../pr148035_inst_does_not_dominate.ll        |   76 +
 ...48035_unwind_edges_not_having_same_dest.ll |   74 +
 5 files changed, 9352 insertions(+)
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll

diff --git a/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll b/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
new file mode 100644
index 0000000000000..2457bc3045cec
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
@@ -0,0 +1,7609 @@
+; This is the cppreference example for coroutines, in llvm IR form, built with async exceptions flag.
+; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
+; RUN: opt < %s -passes=coro-split -S | FileCheck %s
+; CHECK: define
+
+; ModuleID = 'coroutine.cpp'
+source_filename = "coroutine.cpp"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+%"class.std::basic_ostream" = type { ptr, [4 x i8], i32, %"class.std::basic_ios" }
+%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, ptr, i8 }
+%"class.std::ios_base" = type { ptr, i64, i32, i32, i32, i64, i64, ptr, ptr, ptr }
+%rtti.TypeDescriptor23 = type { ptr, ptr, [24 x i8] }
+%eh.CatchableType = type { i32, i32, i32, i32, i32, i32, i32 }
+%rtti.TypeDescriptor19 = type { ptr, ptr, [20 x i8] }
+%eh.CatchableTypeArray.2 = type { i32, [2 x i32] }
+%eh.ThrowInfo = type { i32, i32, i32, i32 }
+%rtti.CompleteObjectLocator = type { i32, i32, i32, i32, i32, i32 }
+%rtti.ClassHierarchyDescriptor = type { i32, i32, i32, i32 }
+%rtti.BaseClassDescriptor = type { i32, i32, i32, i32, i32, i32, i32 }
+%"struct.std::nostopstate_t" = type { i8 }
+%rtti.TypeDescriptor26 = type { ptr, ptr, [27 x i8] }
+%rtti.TypeDescriptor22 = type { ptr, ptr, [23 x i8] }
+%eh.CatchableTypeArray.5 = type { i32, [5 x i32] }
+%"union.std::error_category::_Addr_storage" = type { i64 }
+%rtti.TypeDescriptor35 = type { ptr, ptr, [36 x i8] }
+%rtti.TypeDescriptor24 = type { ptr, ptr, [25 x i8] }
+%"struct.std::_Fake_allocator" = type { i8 }
+%rtti.TypeDescriptor30 = type { ptr, ptr, [31 x i8] }
+%eh.CatchableTypeArray.3 = type { i32, [3 x i32] }
+%struct.awaitable = type { ptr }
+%struct.task = type { i8 }
+%"struct.task::promise_type" = type { i8 }
+%"struct.std::suspend_never" = type { i8 }
+%"class.std::thread::id" = type { i32 }
+%"struct.std::coroutine_handle" = type { ptr }
+%"struct.std::coroutine_handle.0" = type { ptr }
+%"class.std::basic_ostream<char>::sentry" = type { %"class.std::basic_ostream<char>::_Sentry_base", i8 }
+%"class.std::basic_ostream<char>::_Sentry_base" = type { ptr }
+%"class.std::runtime_error" = type { %"class.std::exception" }
+%"class.std::exception" = type { ptr, %struct.__std_exception_data }
+%struct.__std_exception_data = type { ptr, i8 }
+%"class.std::jthread" = type { %"class.std::thread", %"class.std::stop_source" }
+%"class.std::thread" = type { %struct._Thrd_t }
+%struct._Thrd_t = type { ptr, i32 }
+%"class.std::stop_source" = type { ptr }
+%class.anon = type { %"struct.std::coroutine_handle" }
+%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
+%"class.std::_Compressed_pair" = type { ptr }
+%"struct.std::_Stop_state" = type { %"struct.std::atomic", %"struct.std::atomic", %"class.std::_Locked_pointer", %"struct.std::atomic.6", i32 }
+%"struct.std::atomic" = type { %"struct.std::_Atomic_integral_facade" }
+%"struct.std::_Atomic_integral_facade" = type { %"struct.std::_Atomic_integral" }
+%"struct.std::_Atomic_integral" = type { %"struct.std::_Atomic_storage" }
+%"struct.std::_Atomic_storage" = type { %"struct.std::_Atomic_padded" }
+%"struct.std::_Atomic_padded" = type { i32 }
+%"class.std::_Locked_pointer" = type { %"struct.std::atomic.1" }
+%"struct.std::atomic.1" = type { %"struct.std::_Atomic_integral_facade.2" }
+%"struct.std::_Atomic_integral_facade.2" = type { %"struct.std::_Atomic_integral.3" }
+%"struct.std::_Atomic_integral.3" = type { %"struct.std::_Atomic_storage.4" }
+%"struct.std::_Atomic_storage.4" = type { %"struct.std::_Atomic_padded.5" }
+%"struct.std::_Atomic_padded.5" = type { i64 }
+%"struct.std::atomic.6" = type { %"struct.std::_Atomic_pointer" }
+%"struct.std::_Atomic_pointer" = type { %"struct.std::_Atomic_storage.7" }
+%"struct.std::_Atomic_storage.7" = type { %"struct.std::_Atomic_padded.8" }
+%"struct.std::_Atomic_padded.8" = type { ptr }
+%"struct.std::_Exact_args_t" = type { i8 }
+%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
+%"class.std::tuple" = type { %"struct.std::_Tuple_val" }
+%"struct.std::_Tuple_val" = type { %class.anon }
+%"class.std::_Stop_callback_base" = type { ptr, ptr, ptr, ptr }
+%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr }
+%"class.std::ios_base::failure" = type { %"class.std::system_error" }
+%"class.std::system_error" = type { %"class.std::_System_error" }
+%"class.std::_System_error" = type { %"class.std::runtime_error", %"class.std::error_code" }
+%"class.std::error_code" = type { i32, ptr }
+%"class.std::basic_string" = type { %"class.std::_Compressed_pair.10" }
+%"class.std::_Compressed_pair.10" = type { %"class.std::_String_val" }
+%"class.std::_String_val" = type { %"union.std::_String_val<std::_Simple_types<char>>::_Bxty", i64, i64 }
+%"union.std::_String_val<std::_Simple_types<char>>::_Bxty" = type { ptr, [8 x i8] }
+%"class.std::error_condition" = type { i32, ptr }
+%"struct.std::_Fake_proxy_ptr_impl" = type { i8 }
+%"class.std::bad_array_new_length" = type { %"class.std::bad_alloc" }
+%"class.std::bad_alloc" = type { %"class.std::exception" }
+%"class.std::error_category" = type { ptr, %"union.std::error_category::_Addr_storage" }
+%"class.std::allocator" = type { i8 }
+%"struct.std::_One_then_variadic_args_t" = type { i8 }
+%class.anon.11 = type { i8 }
+
+$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
+
+$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
+
+$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
+
+$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
+
+$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
+
+$"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z" = comdat any
+
+$"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z" = comdat any
+
+$"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z" = comdat any
+
+$"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ" = comdat any
+
+$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"??0jthread at std@@QEAA at XZ" = comdat any
+
+$"??1jthread at std@@QEAA at XZ" = comdat any
+
+$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
+
+$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
+
+$"??0id at thread@std@@AEAA at I@Z" = comdat any
+
+$"?joinable at jthread@std@@QEBA_NXZ" = comdat any
+
+$"??0runtime_error at std@@QEAA at PEBD@Z" = comdat any
+
+$"??0runtime_error at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??0exception at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??1runtime_error at std@@UEAA at XZ" = comdat any
+
+$"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
+
+$"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ" = comdat any
+
+$"?joinable at thread@std@@QEBA_NXZ" = comdat any
+
+$"??0exception at std@@QEAA at QEBD@Z" = comdat any
+
+$"??1exception at std@@UEAA at XZ" = comdat any
+
+$"??_Gruntime_error at std@@UEAAPEAXI at Z" = comdat any
+
+$"?what at exception@std@@UEBAPEBDXZ" = comdat any
+
+$"??_Gexception at std@@UEAAPEAXI at Z" = comdat any
+
+$"??0thread at std@@QEAA at XZ" = comdat any
+
+$"??0stop_source at std@@QEAA at XZ" = comdat any
+
+$"??1stop_source at std@@QEAA at XZ" = comdat any
+
+$"??1thread at std@@QEAA at XZ" = comdat any
+
+$"??0_Stop_state at std@@QEAA at XZ" = comdat any
+
+$"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ" = comdat any
+
+$"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z" = comdat any
+
+$"??0?$atomic at _K@std@@QEAA at XZ" = comdat any
+
+$"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z" = comdat any
+
+$"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z" = comdat any
+
+$"?resume@?$coroutine_handle at X@std@@QEBAXXZ" = comdat any
+
+$"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z" = comdat any
+
+$"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z" = comdat any
+
+$"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z" = comdat any
+
+$_Check_memory_order = comdat any
+
+$"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z" = comdat any
+
+$"?_Try_cancel_and_join at jthread@std@@AEAAXXZ" = comdat any
+
+$"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
+
+$"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
+
+$"?request_stop at stop_source@std@@QEAA_NXZ" = comdat any
+
+$"?join at thread@std@@QEAAXXZ" = comdat any
+
+$"?_Request_stop at _Stop_state@std@@QEAA_NXZ" = comdat any
+
+$"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z" = comdat any
+
+$"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ" = comdat any
+
+$"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z" = comdat any
+
+$"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ" = comdat any
+
+$"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z" = comdat any
+
+$"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z" = comdat any
+
+$"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z" = comdat any
+
+$"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z" = comdat any
+
+$"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z" = comdat any
+
+$"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z" = comdat any
+
+$"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z" = comdat any
+
+$"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z" = comdat any
+
+$"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z" = comdat any
+
+$"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z" = comdat any
+
+$"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z" = comdat any
+
+$"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z" = comdat any
+
+$"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z" = comdat any
+
+$"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z" = comdat any
+
+$"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ" = comdat any
+
+$"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z" = comdat any
+
+$"??0stop_source at std@@QEAA@$$QEAV01@@Z" = comdat any
+
+$"?swap at stop_source@std@@QEAAXAEAV12@@Z" = comdat any
+
+$"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z" = comdat any
+
+$"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z" = comdat any
+
+$"?get_id at thread@std@@QEBA?AVid at 12@XZ" = comdat any
+
+$"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z" = comdat any
+
+$"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z" = comdat any
+
+$"?width at ios_base@std@@QEBA_JXZ" = comdat any
+
+$"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z" = comdat any
+
+$"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ" = comdat any
+
+$"?flags at ios_base@std@@QEBAHXZ" = comdat any
+
+$"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z" = comdat any
+
+$"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ" = comdat any
+
+$"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z" = comdat any
+
+$"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ" = comdat any
+
+$"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ" = comdat any
+
+$"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z" = comdat any
+
+$"?width at ios_base@std@@QEAA_J_J at Z" = comdat any
+
+$"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z" = comdat any
+
+$"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z" = comdat any
+
+$"?good at ios_base@std@@QEBA_NXZ" = comdat any
+
+$"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ" = comdat any
+
+$"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ" = comdat any
+
+$"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"?rdstate at ios_base@std@@QEBAHXZ" = comdat any
+
+$"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ" = comdat any
+
+$"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ" = comdat any
+
+$"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z" = comdat any
+
+$"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ" = comdat any
+
+$"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z" = comdat any
+
+$"?clear at ios_base@std@@QEAAXH_N at Z" = comdat any
+
+$"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z" = comdat any
+
+$"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z" = comdat any
+
+$"??0failure at ios_base@std@@QEAA at AEBV012@@Z" = comdat any
+
+$"??0system_error at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??0_System_error at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??1failure at ios_base@std@@UEAA at XZ" = comdat any
+
+$"?iostream_category at std@@YAAEBVerror_category at 1@XZ" = comdat any
+
+$"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z" = comdat any
+
+$"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ" = comdat any
+
+$"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z" = comdat any
+
+$"?name at _Iostream_error_category2@std@@UEBAPEBDXZ" = comdat any
+
+$"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z" = comdat any
+
+$"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z" = comdat any
+
+$"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z" = comdat any
+
+$"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z" = comdat any
+
+$"??1_Iostream_error_category2 at std@@UEAA at XZ" = comdat any
+
+$"??1error_category at std@@UEAA at XZ" = comdat any
+
+$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z" = comdat any
+
+$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z" = comdat any
+
+$"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
+
+$"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z" = comdat any
+
+$"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ" = comdat any
+
+$"??0?$allocator at D@std@@QEAA at XZ" = comdat any
+
+$"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
+
+$"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ" = comdat any
+
+$"?_Xlen_string at std@@YAXXZ" = comdat any
+
+$"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ" = comdat any
+
+$"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z" = comdat any
+
+$"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z" = comdat any
+
+$"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z" = comdat any
+
+$"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ" = comdat any
+
+$"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z" = comdat any
+
+$"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z" = comdat any
+
+$"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z" = comdat any
+
+$"??$_Unfancy at D@std@@YAPEADPEAD at Z" = comdat any
+
+$"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z" = comdat any
+
+$"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ" = comdat any
+
+$"??$max at _K@std@@YAAEB_KAEB_K0 at Z" = comdat any
+
+$"??$min at _K@std@@YAAEB_KAEB_K0 at Z" = comdat any
+
+$"?max@?$numeric_limits at _J@std@@SA_JXZ" = comdat any
+
+$"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ" = comdat any
+
+$"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ" = comdat any
+
+$"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z" = comdat any
+
+$"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z" = comdat any
+
+$"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z" = comdat any
+
+$"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z" = comdat any
+
+$"??$_Get_size_of_n@$00 at std@@YA_K_K at Z" = comdat any
+
+$"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z" = comdat any
+
+$"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z" = comdat any
+
+$"?_Throw_bad_array_new_length at std@@YAXXZ" = comdat any
+
+$"??0bad_array_new_length at std@@QEAA at XZ" = comdat any
+
+$"??0bad_array_new_length at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??0bad_alloc at std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??1bad_array_new_length at std@@UEAA at XZ" = comdat any
+
+$"??0bad_alloc at std@@AEAA at QEBD@Z" = comdat any
+
+$"??1bad_alloc at std@@UEAA at XZ" = comdat any
+
+$"??_Gbad_array_new_length at std@@UEAAPEAXI at Z" = comdat any
+
+$"??0exception at std@@QEAA at QEBDH@Z" = comdat any
+
+$"??_Gbad_alloc at std@@UEAAPEAXI at Z" = comdat any
+
+$"??$_Convert_size at _K_K@std@@YA_K_K at Z" = comdat any
+
+$"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z" = comdat any
+
+$"??8error_category at std@@QEBA_NAEBV01@@Z" = comdat any
+
+$"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ" = comdat any
+
+$"?value at error_code@std@@QEBAHXZ" = comdat any
+
+$"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z" = comdat any
+
+$"??8std@@YA_NAEBVerror_condition at 0@0 at Z" = comdat any
+
+$"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ" = comdat any
+
+$"?value at error_condition@std@@QEBAHXZ" = comdat any
+
+$"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z" = comdat any
+
+$"??1system_error at std@@UEAA at XZ" = comdat any
+
+$"??_Gfailure at ios_base@std@@UEAAPEAXI at Z" = comdat any
+
+$"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z" = comdat any
+
+$"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ" = comdat any
+
+$"??1_System_error at std@@UEAA at XZ" = comdat any
+
+$"??_Gsystem_error at std@@UEAAPEAXI at Z" = comdat any
+
+$"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z" = comdat any
+
+$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z" = comdat any
+
+$"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z" = comdat any
+
+$"??_G_System_error at std@@UEAAPEAXI at Z" = comdat any
+
+$"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ" = comdat any
+
+$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z" = comdat any
+
+$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z" = comdat any
+
+$"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ" = comdat any
+
+$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z" = comdat any
+
+$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z" = comdat any
+
+$"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ" = comdat any
+
+$"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z" = comdat any
+
+$"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z" = comdat any
+
+$"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ" = comdat any
+
+$"?_Orphan_all at _Container_base0@std@@QEAAXXZ" = comdat any
+
+$"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z" = comdat any
+
+$"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z" = comdat any
+
+$"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z" = comdat any
+
+$"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z" = comdat any
+
+$"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z" = comdat any
+
+$"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ" = comdat any
+
+$"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z" = comdat any
+
+$"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z" = comdat any
+
+$"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z" = comdat any
+
+$"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z" = comdat any
+
+$"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ" = comdat any
+
+$"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ" = comdat any
+
+$"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z" = comdat any
+
+$"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z" = comdat any
+
+$"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ" = comdat any
+
+$"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ" = comdat any
+
+$"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z" = comdat any
+
+$"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ" = comdat any
+
+$"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z" = comdat any
+
+$"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z" = comdat any
+
+$"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@" = comdat any
+
+$"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@" = comdat any
+
+$"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@" = comdat any
+
+$"??_R0?AVruntime_error at std@@@8" = comdat any
+
+$"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" = comdat any
+
+$"??_R0?AVexception at std@@@8" = comdat any
+
+$"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" = comdat any
+
+$"_CTA2?AVruntime_error at std@@" = comdat any
+
+$"_TI2?AVruntime_error at std@@" = comdat any
+
+$"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@" = comdat any
+
+$"??_7runtime_error at std@@6B@" = comdat largest
+
+$"??_R4runtime_error at std@@6B@" = comdat any
+
+$"??_R3runtime_error at std@@8" = comdat any
+
+$"??_R2runtime_error at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@runtime_error at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@exception at std@@8" = comdat any
+
+$"??_R3exception at std@@8" = comdat any
+
+$"??_R2exception at std@@8" = comdat any
+
+$"??_7exception at std@@6B@" = comdat largest
+
+$"??_R4exception at std@@6B@" = comdat any
+
+$"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@" = comdat any
+
+$"?nostopstate at std@@3Unostopstate_t at 1@B" = comdat any
+
+$"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@" = comdat any
+
+$"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@" = comdat any
+
+$"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@" = comdat any
+
+$"??_R0?AVfailure at ios_base@std@@@8" = comdat any
+
+$"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" = comdat any
+
+$"??_R0?AVsystem_error at std@@@8" = comdat any
+
+$"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" = comdat any
+
+$"??_R0?AV_System_error at std@@@8" = comdat any
+
+$"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" = comdat any
+
+$"_CTA5?AVfailure at ios_base@std@@" = comdat any
+
+$"_TI5?AVfailure at ios_base@std@@" = comdat any
+
+$"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B" = comdat any
+
+$"??_7_Iostream_error_category2 at std@@6B@" = comdat largest
+
+$"??_R4_Iostream_error_category2 at std@@6B@" = comdat any
+
+$"??_R0?AV_Iostream_error_category2 at std@@@8" = comdat any
+
+$"??_R3_Iostream_error_category2 at std@@8" = comdat any
+
+$"??_R2_Iostream_error_category2 at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@error_category at std@@8" = comdat any
+
+$"??_R0?AVerror_category at std@@@8" = comdat any
+
+$"??_R3error_category at std@@8" = comdat any
+
+$"??_R2error_category at std@@8" = comdat any
+
+$"??_C at _08LLGCOLLL@iostream?$AA@" = comdat any
+
+$"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB" = comdat any
+
+$"?_Fake_alloc at std@@3U_Fake_allocator at 1@B" = comdat any
+
+$"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@" = comdat any
+
+$"??_R0?AVbad_array_new_length at std@@@8" = comdat any
+
+$"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" = comdat any
+
+$"??_R0?AVbad_alloc at std@@@8" = comdat any
+
+$"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" = comdat any
+
+$"_CTA3?AVbad_array_new_length at std@@" = comdat any
+
+$"_TI3?AVbad_array_new_length at std@@" = comdat any
+
+$"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@" = comdat any
+
+$"??_7bad_array_new_length at std@@6B@" = comdat largest
+
+$"??_R4bad_array_new_length at std@@6B@" = comdat any
+
+$"??_R3bad_array_new_length at std@@8" = comdat any
+
+$"??_R2bad_array_new_length at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@bad_array_new_length at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@bad_alloc at std@@8" = comdat any
+
+$"??_R3bad_alloc at std@@8" = comdat any
+
+$"??_R2bad_alloc at std@@8" = comdat any
+
+$"??_7bad_alloc at std@@6B@" = comdat largest
+
+$"??_R4bad_alloc at std@@6B@" = comdat any
+
+$"??_7failure at ios_base@std@@6B@" = comdat largest
+
+$"??_R4failure at ios_base@std@@6B@" = comdat any
+
+$"??_R3failure at ios_base@std@@8" = comdat any
+
+$"??_R2failure at ios_base@std@@8" = comdat any
+
+$"??_R1A@?0A at EA@failure at ios_base@std@@8" = comdat any
+
+$"??_R1A@?0A at EA@system_error at std@@8" = comdat any
+
+$"??_R3system_error at std@@8" = comdat any
+
+$"??_R2system_error at std@@8" = comdat any
+
+$"??_R1A@?0A at EA@_System_error at std@@8" = comdat any
+
+$"??_R3_System_error at std@@8" = comdat any
+
+$"??_R2_System_error at std@@8" = comdat any
+
+$"??_7system_error at std@@6B@" = comdat largest
+
+$"??_R4system_error at std@@6B@" = comdat any
+
+$"??_7_System_error at std@@6B@" = comdat largest
+
+$"??_R4_System_error at std@@6B@" = comdat any
+
+$"??_C at _02LMMGGCAJ@?3?5?$AA@" = comdat any
+
+@"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A" = external dso_local global %"class.std::basic_ostream", align 8
+@"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [30 x i8] c"Coroutine started on thread: \00", comdat, align 1
+@"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [30 x i8] c"Coroutine resumed on thread: \00", comdat, align 1
+@"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@" = linkonce_odr dso_local unnamed_addr constant [35 x i8] c"Output jthread parameter not empty\00", comdat, align 1
+@"??_7type_info@@6B@" = external constant ptr
+@"??_R0?AVruntime_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor23 { ptr @"??_7type_info@@6B@", ptr null, [24 x i8] c".?AVruntime_error at std@@\00" }, comdat
+ at __ImageBase = external dso_local constant i8
+@"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_R0?AVexception at std@@@8" = linkonce_odr global %rtti.TypeDescriptor19 { ptr @"??_7type_info@@6B@", ptr null, [20 x i8] c".?AVexception at std@@\00" }, comdat
+@"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0exception at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"_CTA2?AVruntime_error at std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.2 { i32 2, [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
+@"_TI2?AVruntime_error at std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1runtime_error at std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA2?AVruntime_error at std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [16 x i8] c"New thread ID: \00", comdat, align 1
+ at 0 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4runtime_error at std@@6B@", ptr @"??_Gruntime_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7runtime_error at std@@6B@")
+@"??_R4runtime_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4runtime_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3runtime_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2runtime_error at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_R1A@?0A at EA@runtime_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R1A@?0A at EA@exception at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3exception at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2exception at std@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+ at 1 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4exception at std@@6B@", ptr @"??_Gexception at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7exception at std@@6B@")
+@"??_R4exception at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4exception at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@" = linkonce_odr dso_local unnamed_addr constant [18 x i8] c"Unknown exception\00", comdat, align 1
+@"?nostopstate at std@@3Unostopstate_t at 1@B" = linkonce_odr dso_local constant %"struct.std::nostopstate_t" zeroinitializer, comdat, align 1
+@"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"ios_base::badbit set\00", comdat, align 1
+@"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [22 x i8] c"ios_base::failbit set\00", comdat, align 1
+@"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"ios_base::eofbit set\00", comdat, align 1
+@"??_R0?AVfailure at ios_base@std@@@8" = linkonce_odr global %rtti.TypeDescriptor26 { ptr @"??_7type_info@@6B@", ptr null, [27 x i8] c".?AVfailure at ios_base@std@@\00" }, comdat
+@"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0failure at ios_base@std@@QEAA at AEBV012@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_R0?AVsystem_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor22 { ptr @"??_7type_info@@6B@", ptr null, [23 x i8] c".?AVsystem_error at std@@\00" }, comdat
+@"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0system_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_R0?AV_System_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor23 { ptr @"??_7type_info@@6B@", ptr null, [24 x i8] c".?AV_System_error at std@@\00" }, comdat
+@"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0_System_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"_CTA5?AVfailure at ios_base@std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.5 { i32 5, [5 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
+@"_TI5?AVfailure at ios_base@std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1failure at ios_base@std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA5?AVfailure at ios_base@std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B" = linkonce_odr dso_local constant { ptr, %"union.std::error_category::_Addr_storage" } { ptr @"??_7_Iostream_error_category2 at std@@6B@", %"union.std::error_category::_Addr_storage" { i64 5 } }, comdat, align 8
+ at 2 = private unnamed_addr constant { [7 x ptr] } { [7 x ptr] [ptr @"??_R4_Iostream_error_category2 at std@@6B@", ptr @"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z", ptr @"?name at _Iostream_error_category2@std@@UEBAPEBDXZ", ptr @"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z", ptr @"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z", ptr @"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z", ptr @"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z"] }, comdat($"??_7_Iostream_error_category2 at std@@6B@")
+@"??_R4_Iostream_error_category2 at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_Iostream_error_category2 at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4_Iostream_error_category2 at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R0?AV_Iostream_error_category2 at std@@@8" = linkonce_odr global %rtti.TypeDescriptor35 { ptr @"??_7type_info@@6B@", ptr null, [36 x i8] c".?AV_Iostream_error_category2 at std@@\00" }, comdat
+@"??_R3_Iostream_error_category2 at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2_Iostream_error_category2 at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_Iostream_error_category2 at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R1A@?0A at EA@error_category at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVerror_category at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R0?AVerror_category at std@@@8" = linkonce_odr global %rtti.TypeDescriptor24 { ptr @"??_7type_info@@6B@", ptr null, [25 x i8] c".?AVerror_category at std@@\00" }, comdat
+@"??_R3error_category at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2error_category at std@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_C at _08LLGCOLLL@iostream?$AA@" = linkonce_odr dso_local unnamed_addr constant [9 x i8] c"iostream\00", comdat, align 1
+@"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB" = linkonce_odr dso_local constant [22 x i8] c"iostream stream error\00", comdat, align 16
+@"?_Fake_alloc at std@@3U_Fake_allocator at 1@B" = linkonce_odr dso_local constant %"struct.std::_Fake_allocator" undef, comdat, align 1
+@"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@" = linkonce_odr dso_local unnamed_addr constant [16 x i8] c"string too long\00", comdat, align 1
+@"??_R0?AVbad_array_new_length at std@@@8" = linkonce_odr global %rtti.TypeDescriptor30 { ptr @"??_7type_info@@6B@", ptr null, [31 x i8] c".?AVbad_array_new_length at std@@\00" }, comdat
+@"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0bad_array_new_length at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_R0?AVbad_alloc at std@@@8" = linkonce_odr global %rtti.TypeDescriptor19 { ptr @"??_7type_info@@6B@", ptr null, [20 x i8] c".?AVbad_alloc at std@@\00" }, comdat
+@"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 16, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"_CTA3?AVbad_array_new_length at std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.3 { i32 3, [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
+@"_TI3?AVbad_array_new_length at std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1bad_array_new_length at std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA3?AVbad_array_new_length at std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
+@"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"bad array new length\00", comdat, align 1
+ at 3 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4bad_array_new_length at std@@6B@", ptr @"??_Gbad_array_new_length at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7bad_array_new_length at std@@6B@")
+@"??_R4bad_array_new_length at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4bad_array_new_length at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3bad_array_new_length at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2bad_array_new_length at std@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_R1A@?0A at EA@bad_array_new_length at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R1A@?0A at EA@bad_alloc at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3bad_alloc at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2bad_alloc at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+ at 4 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4bad_alloc at std@@6B@", ptr @"??_Gbad_alloc at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7bad_alloc at std@@6B@")
+@"??_R4bad_alloc at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4bad_alloc at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+ at 5 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4failure at ios_base@std@@6B@", ptr @"??_Gfailure at ios_base@std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7failure at ios_base@std@@6B@")
+@"??_R4failure at ios_base@std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4failure at ios_base@std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3failure at ios_base@std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 5, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2failure at ios_base@std@@8" = linkonce_odr constant [6 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_R1A@?0A at EA@failure at ios_base@std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 4, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R1A@?0A at EA@system_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 3, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3system_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 4, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2system_error at std@@8" = linkonce_odr constant [5 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+@"??_R1A@?0A at EA@_System_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R3_System_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_R2_System_error at std@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
+ at 6 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4system_error at std@@6B@", ptr @"??_Gsystem_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7system_error at std@@6B@")
+@"??_R4system_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4system_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+ at 7 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4_System_error at std@@6B@", ptr @"??_G_System_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7_System_error at std@@6B@")
+@"??_R4_System_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4_System_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
+@"??_C at _02LMMGGCAJ@?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [3 x i8] c": \00", comdat, align 1
+
+@"??_7runtime_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @0, i32 0, i32 0, i32 1)
+@"??_7exception at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @1, i32 0, i32 0, i32 1)
+@"??_7_Iostream_error_category2 at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [7 x ptr] }, ptr @2, i32 0, i32 0, i32 1)
+@"??_7bad_array_new_length at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @3, i32 0, i32 0, i32 1)
+@"??_7bad_alloc at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @4, i32 0, i32 0, i32 1)
+@"??_7failure at ios_base@std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @5, i32 0, i32 0, i32 1)
+@"??_7system_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @6, i32 0, i32 0, i32 1)
+@"??_7_System_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @7, i32 0, i32 0, i32 1)
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define dso_local i64 @"?switch_to_new_thread@@YA at AEAVjthread@std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 {
+  %2 = alloca %struct.awaitable, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  %4 = getelementptr inbounds nuw %struct.awaitable, ptr %2, i32 0, i32 0
+  %5 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  store ptr %5, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %struct.awaitable, ptr %2, i32 0, i32 0
+  %7 = load ptr, ptr %6, align 8
+  %8 = ptrtoint ptr %7 to i64
+  ret i64 %8
+}
+
+; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
+define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0) #1 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca %struct.task, align 1
+  %3 = alloca ptr, align 8, !coro.outside.frame !16
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.task::promise_type", align 1
+  %6 = alloca %"struct.std::suspend_never", align 1
+  %7 = alloca %"class.std::thread::id", align 4
+  %8 = alloca %struct.awaitable, align 8
+  %9 = alloca %"class.std::thread::id", align 4
+  %10 = alloca %"struct.std::suspend_never", align 1
+  store ptr %0, ptr %3, align 8
+  %11 = bitcast ptr %5 to ptr
+  %12 = call token @llvm.coro.id(i32 16, ptr %11, ptr null, ptr null)
+  %13 = call i1 @llvm.coro.alloc(token %12)
+  br i1 %13, label %14, label %17
+
+14:                                               ; preds = %1
+  %15 = call i64 @llvm.coro.size.i64()
+  %16 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %15) #21
+  br label %17
+
+17:                                               ; preds = %14, %1
+  %18 = phi ptr [ null, %1 ], [ %16, %14 ]
+  %19 = call ptr @llvm.coro.begin(token %12, ptr %18)
+  invoke void @llvm.seh.scope.begin()
+          to label %20 unwind label %112
+
+20:                                               ; preds = %17
+  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
+  %21 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  store ptr %21, ptr %4, align 8
+  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #3
+  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
+          to label %22 unwind label %108
+
+22:                                               ; preds = %20
+  invoke void @llvm.seh.scope.begin()
+          to label %23 unwind label %104
+
+23:                                               ; preds = %22
+  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #3
+  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
+          to label %24 unwind label %54
+
+24:                                               ; preds = %23
+  %25 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
+  br i1 %25, label %30, label %26
+
+26:                                               ; preds = %24
+  %27 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__init") #3
+  %28 = call i8 @llvm.coro.suspend(token %27, i1 false)
+  switch i8 %28, label %100 [
+    i8 0, label %30
+    i8 1, label %29
+  ]
+
+29:                                               ; preds = %26
+  br label %31
+
+30:                                               ; preds = %26, %24
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
+  br label %31
+
+31:                                               ; preds = %30, %29
+  %32 = phi i32 [ 0, %30 ], [ 2, %29 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
+  switch i32 %32, label %91 [
+    i32 0, label %33
+  ]
+
+33:                                               ; preds = %31
+  invoke void @llvm.seh.try.begin()
+          to label %34 unwind label %69
+
+34:                                               ; preds = %33
+  %35 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@")
+          to label %36 unwind label %69
+
+36:                                               ; preds = %34
+  call void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %7) #3
+  %37 = getelementptr inbounds nuw %"class.std::thread::id", ptr %7, i32 0, i32 0
+  %38 = load i32, ptr %37, align 4
+  %39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 %38)
+          to label %40 unwind label %69
+
+40:                                               ; preds = %36
+  %41 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %39, i8 noundef 10)
+          to label %42 unwind label %69
+
+42:                                               ; preds = %40
+  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
+  %43 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %44 = call i64 @"?switch_to_new_thread@@YA at AEAVjthread@std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %43)
+  %45 = getelementptr inbounds nuw %struct.awaitable, ptr %8, i32 0, i32 0
+  %46 = inttoptr i64 %44 to ptr
+  store ptr %46, ptr %45, align 8
+  %47 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %8)
+          to label %48 unwind label %84
+
+48:                                               ; preds = %42
+  br i1 %47, label %56, label %49
+
+49:                                               ; preds = %48
+  %50 = call token @llvm.coro.save(ptr null)
+  invoke void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__await")
+          to label %51 unwind label %84
+
+51:                                               ; preds = %49
+  %52 = call i8 @llvm.coro.suspend(token %50, i1 false)
+  switch i8 %52, label %100 [
+    i8 0, label %56
+    i8 1, label %53
+  ]
+
+53:                                               ; preds = %51
+  br label %58
+
+54:                                               ; preds = %23
+  %55 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
+  cleanupret from %55 unwind label %104
+
+56:                                               ; preds = %51, %48
+  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %8)
+          to label %57 unwind label %84
+
+57:                                               ; preds = %56
+  br label %58
+
+58:                                               ; preds = %57, %53
+  %59 = phi i32 [ 0, %57 ], [ 2, %53 ]
+  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
+  switch i32 %59, label %91 [
+    i32 0, label %60
+  ]
+
+60:                                               ; preds = %58
+  %61 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@")
+          to label %62 unwind label %69
+
+62:                                               ; preds = %60
+  call void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %9) #3
+  %63 = getelementptr inbounds nuw %"class.std::thread::id", ptr %9, i32 0, i32 0
+  %64 = load i32, ptr %63, align 4
+  %65 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 %64)
+          to label %66 unwind label %69
+
+66:                                               ; preds = %62
+  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %65, i8 noundef 10)
+          to label %68 unwind label %69
+
+68:                                               ; preds = %66
+  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
+          to label %83 unwind label %69
+
+69:                                               ; preds = %68, %66, %62, %60, %84, %40, %36, %34, %33
+  %70 = catchswitch within none [label %71] unwind label %104
+
+71:                                               ; preds = %69
+  %72 = catchpad within %70 [ptr null, i32 0, ptr null]
+  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %72) ]
+          to label %73 unwind label %104
+
+73:                                               ; preds = %71
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %72) ]
+          to label %74 unwind label %104
+
+74:                                               ; preds = %73
+  catchret from %72 to label %75
+
+75:                                               ; preds = %74
+  br label %76
+
+76:                                               ; preds = %75
+  br label %77
+
+77:                                               ; preds = %76, %83
+  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #3
+  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %10) #3
+  %78 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br i1 %78, label %86, label %79
+
+79:                                               ; preds = %77
+  %80 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %10, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__final") #3
+  %81 = call i8 @llvm.coro.suspend(token %80, i1 true)
+  switch i8 %81, label %100 [
+    i8 0, label %86
+    i8 1, label %82
+  ]
+
+82:                                               ; preds = %79
+  br label %87
+
+83:                                               ; preds = %68
+  br label %77
+
+84:                                               ; preds = %56, %49, %42
+  %85 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
+  cleanupret from %85 unwind label %69
+
+86:                                               ; preds = %79, %77
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br label %87
+
+87:                                               ; preds = %86, %82
+  %88 = phi i32 [ 0, %86 ], [ 2, %82 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #3
+  switch i32 %88, label %91 [
+    i32 0, label %89
+  ]
+
+89:                                               ; preds = %87
+  invoke void @llvm.seh.scope.end()
+          to label %90 unwind label %104
+
+90:                                               ; preds = %89
+  br label %91
+
+91:                                               ; preds = %90, %87, %58, %31
+  %92 = phi i32 [ %32, %31 ], [ %59, %58 ], [ %88, %87 ], [ 0, %90 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
+  invoke void @llvm.seh.scope.end()
+          to label %93 unwind label %112
+
+93:                                               ; preds = %91
+  %94 = call ptr @llvm.coro.free(token %12, ptr %19)
+  %95 = icmp ne ptr %94, null
+  br i1 %95, label %96, label %98
+
+96:                                               ; preds = %93
+  %97 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %94, i64 noundef %97) #3
+  br label %98
+
+98:                                               ; preds = %93, %96
+  switch i32 %92, label %119 [
+    i32 0, label %99
+    i32 2, label %100
+  ]
+
+99:                                               ; preds = %98
+  br label %100
+
+100:                                              ; preds = %99, %98, %79, %51, %26
+  %101 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
+  %102 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
+  %103 = load i8, ptr %102, align 1
+  ret i8 %103
+
+104:                                              ; preds = %89, %73, %71, %69, %54, %22
+  %105 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %105) ]
+          to label %106 unwind label %108
+
+106:                                              ; preds = %104
+  %107 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %105) ]
+  cleanupret from %105 unwind label %108
+
+108:                                              ; preds = %106, %104, %20
+  %109 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
+  cleanupret from %109 unwind label %110
+
+110:                                              ; preds = %108
+  %111 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
+  cleanupret from %111 unwind label %112
+
+112:                                              ; preds = %91, %110, %17
+  %113 = cleanuppad within none []
+  %114 = call ptr @llvm.coro.free(token %12, ptr %19)
+  %115 = icmp ne ptr %114, null
+  br i1 %115, label %116, label %118
+
+116:                                              ; preds = %112
+  %117 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %114, i64 noundef %117) #3 [ "funclet"(token %113) ]
+  br label %118
+
+118:                                              ; preds = %112, %116
+  cleanupret from %113 unwind to caller
+
+119:                                              ; preds = %98
+  unreachable
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #2
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.alloc(token) #3
+
+; Function Attrs: nobuiltin allocsize(0)
+declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #4
+
+; Function Attrs: nounwind memory(none)
+declare i64 @llvm.coro.size.i64() #5
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #3
+
+declare dso_local i32 @__CxxFrameHandler3(...)
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.begin() #5
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 true
+}
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #7
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #3
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
+  %7 = load ptr, ptr %6, align 8
+  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #3
+  ret void
+}
+
+declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #3
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6
+
+; Function Attrs: nounwind willreturn memory(write)
+declare dso_local void @llvm.seh.try.begin() #9
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i8 noundef %1) #10 comdat personality ptr @__CxxFrameHandler3 {
+  %3 = alloca i8, align 1
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca %"class.std::basic_ostream<char>::sentry", align 8
+  %7 = alloca i64, align 8
+  store i8 %1, ptr %3, align 1
+  store ptr %0, ptr %4, align 8
+  store i32 0, ptr %5, align 4
+  %8 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %9 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(8) %8)
+  invoke void @llvm.seh.scope.begin()
+          to label %10 unwind label %188
+
+10:                                               ; preds = %2
+  %11 = call noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %6)
+  br i1 %11, label %12, label %166
+
+12:                                               ; preds = %10
+  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %14 = getelementptr inbounds i8, ptr %13, i64 0
+  %15 = load ptr, ptr %14, align 8
+  %16 = getelementptr inbounds i32, ptr %15, i32 1
+  %17 = load i32, ptr %16, align 4
+  %18 = sext i32 %17 to i64
+  %19 = add nsw i64 0, %18
+  %20 = getelementptr inbounds i8, ptr %13, i64 %19
+  %21 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %20) #3
+  %22 = icmp sle i64 %21, 1
+  br i1 %22, label %23, label %24
+
+23:                                               ; preds = %12
+  br label %35
+
+24:                                               ; preds = %12
+  %25 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %26 = getelementptr inbounds i8, ptr %25, i64 0
+  %27 = load ptr, ptr %26, align 8
+  %28 = getelementptr inbounds i32, ptr %27, i32 1
+  %29 = load i32, ptr %28, align 4
+  %30 = sext i32 %29 to i64
+  %31 = add nsw i64 0, %30
+  %32 = getelementptr inbounds i8, ptr %25, i64 %31
+  %33 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %32) #3
+  %34 = sub nsw i64 %33, 1
+  br label %35
+
+35:                                               ; preds = %24, %23
+  %36 = phi i64 [ 0, %23 ], [ %34, %24 ]
+  store i64 %36, ptr %7, align 8
+  invoke void @llvm.seh.try.begin()
+          to label %37 unwind label %139
+
+37:                                               ; preds = %35
+  %38 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %39 = getelementptr inbounds i8, ptr %38, i64 0
+  %40 = load ptr, ptr %39, align 8
+  %41 = getelementptr inbounds i32, ptr %40, i32 1
+  %42 = load i32, ptr %41, align 4
+  %43 = sext i32 %42 to i64
+  %44 = add nsw i64 0, %43
+  %45 = getelementptr inbounds i8, ptr %38, i64 %44
+  %46 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %45) #3
+  %47 = and i32 %46, 448
+  %48 = icmp ne i32 %47, 64
+  br i1 %48, label %49, label %89
+
+49:                                               ; preds = %37
+  br label %50
+
+50:                                               ; preds = %85, %49
+  %51 = load i32, ptr %5, align 4
+  %52 = icmp eq i32 %51, 0
+  br i1 %52, label %53, label %56
+
+53:                                               ; preds = %50
+  %54 = load i64, ptr %7, align 8
+  %55 = icmp slt i64 0, %54
+  br label %56
+
+56:                                               ; preds = %53, %50
+  %57 = phi i1 [ false, %50 ], [ %55, %53 ]
+  br i1 %57, label %58, label %88
+
+58:                                               ; preds = %56
+  %59 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %60 = getelementptr inbounds i8, ptr %59, i64 0
+  %61 = load ptr, ptr %60, align 8
+  %62 = getelementptr inbounds i32, ptr %61, i32 1
+  %63 = load i32, ptr %62, align 4
+  %64 = sext i32 %63 to i64
+  %65 = add nsw i64 0, %64
+  %66 = getelementptr inbounds i8, ptr %59, i64 %65
+  %67 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %66) #3
+  %68 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %69 = getelementptr inbounds i8, ptr %68, i64 0
+  %70 = load ptr, ptr %69, align 8
+  %71 = getelementptr inbounds i32, ptr %70, i32 1
+  %72 = load i32, ptr %71, align 4
+  %73 = sext i32 %72 to i64
+  %74 = add nsw i64 0, %73
+  %75 = getelementptr inbounds i8, ptr %68, i64 %74
+  %76 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %75) #3
+  %77 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %67, i8 noundef %76)
+          to label %78 unwind label %139
+
+78:                                               ; preds = %58
+  %79 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
+  %80 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %79, i32 noundef %77) #3
+  br i1 %80, label %81, label %84
+
+81:                                               ; preds = %78
+  %82 = load i32, ptr %5, align 4
+  %83 = or i32 %82, 4
+  store i32 %83, ptr %5, align 4
+  br label %84
+
+84:                                               ; preds = %81, %78
+  br label %85
+
+85:                                               ; preds = %84
+  %86 = load i64, ptr %7, align 8
+  %87 = add nsw i64 %86, -1
+  store i64 %87, ptr %7, align 8
+  br label %50, !llvm.loop !18
+
+88:                                               ; preds = %56
+  br label %89
+
+89:                                               ; preds = %88, %37
+  %90 = load i32, ptr %5, align 4
+  %91 = icmp eq i32 %90, 0
+  br i1 %91, label %92, label %110
+
+92:                                               ; preds = %89
+  %93 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %94 = getelementptr inbounds i8, ptr %93, i64 0
+  %95 = load ptr, ptr %94, align 8
+  %96 = getelementptr inbounds i32, ptr %95, i32 1
+  %97 = load i32, ptr %96, align 4
+  %98 = sext i32 %97 to i64
+  %99 = add nsw i64 0, %98
+  %100 = getelementptr inbounds i8, ptr %93, i64 %99
+  %101 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %100) #3
+  %102 = load i8, ptr %3, align 1
+  %103 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %101, i8 noundef %102)
+          to label %104 unwind label %139
+
+104:                                              ; preds = %92
+  %105 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
+  %106 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %105, i32 noundef %103) #3
+  br i1 %106, label %107, label %110
+
+107:                                              ; preds = %104
+  %108 = load i32, ptr %5, align 4
+  %109 = or i32 %108, 4
+  store i32 %109, ptr %5, align 4
+  br label %110
+
+110:                                              ; preds = %107, %104, %89
+  br label %111
+
+111:                                              ; preds = %162, %110
+  %112 = load i32, ptr %5, align 4
+  %113 = icmp eq i32 %112, 0
+  br i1 %113, label %114, label %117
+
+114:                                              ; preds = %111
+  %115 = load i64, ptr %7, align 8
+  %116 = icmp slt i64 0, %115
+  br label %117
+
+117:                                              ; preds = %114, %111
+  %118 = phi i1 [ false, %111 ], [ %116, %114 ]
+  br i1 %118, label %119, label %165
+
+119:                                              ; preds = %117
+  %120 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %121 = getelementptr inbounds i8, ptr %120, i64 0
+  %122 = load ptr, ptr %121, align 8
+  %123 = getelementptr inbounds i32, ptr %122, i32 1
+  %124 = load i32, ptr %123, align 4
+  %125 = sext i32 %124 to i64
+  %126 = add nsw i64 0, %125
+  %127 = getelementptr inbounds i8, ptr %120, i64 %126
+  %128 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %127) #3
+  %129 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %130 = getelementptr inbounds i8, ptr %129, i64 0
+  %131 = load ptr, ptr %130, align 8
+  %132 = getelementptr inbounds i32, ptr %131, i32 1
+  %133 = load i32, ptr %132, align 4
+  %134 = sext i32 %133 to i64
+  %135 = add nsw i64 0, %134
+  %136 = getelementptr inbounds i8, ptr %129, i64 %135
+  %137 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %136) #3
+  %138 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %128, i8 noundef %137)
+          to label %155 unwind label %139
+
+139:                                              ; preds = %119, %92, %58, %35
+  %140 = catchswitch within none [label %141] unwind label %188
+
+141:                                              ; preds = %139
+  %142 = catchpad within %140 [ptr null, i32 0, ptr null]
+  %143 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %144 = getelementptr inbounds i8, ptr %143, i64 0
+  %145 = load ptr, ptr %144, align 8
+  %146 = getelementptr inbounds i32, ptr %145, i32 1
+  %147 = load i32, ptr %146, align 4
+  %148 = sext i32 %147 to i64
+  %149 = add nsw i64 0, %148
+  %150 = getelementptr inbounds i8, ptr %143, i64 %149
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %150, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %142) ]
+          to label %151 unwind label %188
+
+151:                                              ; preds = %141
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %142) ]
+          to label %152 unwind label %188
+
+152:                                              ; preds = %151
+  catchret from %142 to label %153
+
+153:                                              ; preds = %152
+  br label %154
+
+154:                                              ; preds = %153, %165
+  br label %166
+
+155:                                              ; preds = %119
+  %156 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
+  %157 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %156, i32 noundef %138) #3
+  br i1 %157, label %158, label %161
+
+158:                                              ; preds = %155
+  %159 = load i32, ptr %5, align 4
+  %160 = or i32 %159, 4
+  store i32 %160, ptr %5, align 4
+  br label %161
+
+161:                                              ; preds = %158, %155
+  br label %162
+
+162:                                              ; preds = %161
+  %163 = load i64, ptr %7, align 8
+  %164 = add nsw i64 %163, -1
+  store i64 %164, ptr %7, align 8
+  br label %111, !llvm.loop !20
+
+165:                                              ; preds = %117
+  br label %154
+
+166:                                              ; preds = %154, %10
+  %167 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %168 = getelementptr inbounds i8, ptr %167, i64 0
+  %169 = load ptr, ptr %168, align 8
+  %170 = getelementptr inbounds i32, ptr %169, i32 1
+  %171 = load i32, ptr %170, align 4
+  %172 = sext i32 %171 to i64
+  %173 = add nsw i64 0, %172
+  %174 = getelementptr inbounds i8, ptr %167, i64 %173
+  %175 = call noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %174, i64 noundef 0) #3
+  %176 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %177 = getelementptr inbounds i8, ptr %176, i64 0
+  %178 = load ptr, ptr %177, align 8
+  %179 = getelementptr inbounds i32, ptr %178, i32 1
+  %180 = load i32, ptr %179, align 4
+  %181 = sext i32 %180 to i64
+  %182 = add nsw i64 0, %181
+  %183 = getelementptr inbounds i8, ptr %176, i64 %182
+  %184 = load i32, ptr %5, align 4
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %183, i32 noundef %184, i1 noundef zeroext false)
+          to label %185 unwind label %188
+
+185:                                              ; preds = %166
+  %186 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  invoke void @llvm.seh.scope.end()
+          to label %187 unwind label %188
+
+187:                                              ; preds = %185
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
+  ret ptr %186
+
+188:                                              ; preds = %185, %166, %151, %141, %139, %2
+  %189 = cleanuppad within none []
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3 [ "funclet"(token %189) ]
+  cleanupret from %189 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 %1) #10 comdat {
+  %3 = alloca %"class.std::thread::id", align 4
+  %4 = alloca ptr, align 8
+  %5 = alloca [11 x i8], align 1
+  %6 = alloca ptr, align 8
+  %7 = getelementptr inbounds nuw %"class.std::thread::id", ptr %3, i32 0, i32 0
+  store i32 %1, ptr %7, align 4
+  store ptr %0, ptr %4, align 8
+  %8 = call noundef ptr @"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z"(ptr noundef nonnull align 1 dereferenceable(11) %5) #3
+  store ptr %8, ptr %6, align 8
+  %9 = load ptr, ptr %6, align 8
+  %10 = getelementptr inbounds i8, ptr %9, i32 -1
+  store ptr %10, ptr %6, align 8
+  store i8 0, ptr %10, align 1
+  %11 = getelementptr inbounds nuw %"class.std::thread::id", ptr %3, i32 0, i32 0
+  %12 = load i32, ptr %11, align 4
+  %13 = load ptr, ptr %6, align 8
+  %14 = call noundef ptr @"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z"(ptr noundef %13, i32 noundef %12)
+  store ptr %14, ptr %6, align 8
+  %15 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %16 = load ptr, ptr %6, align 8
+  %17 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %16)
+  ret ptr %17
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #10 comdat personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca i64, align 8
+  %7 = alloca i64, align 8
+  %8 = alloca %"class.std::basic_ostream<char>::sentry", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  store i32 0, ptr %5, align 4
+  %9 = load ptr, ptr %3, align 8
+  %10 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %9) #3
+  store i64 %10, ptr %6, align 8
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds i8, ptr %11, i64 0
+  %13 = load ptr, ptr %12, align 8
+  %14 = getelementptr inbounds i32, ptr %13, i32 1
+  %15 = load i32, ptr %14, align 4
+  %16 = sext i32 %15 to i64
+  %17 = add nsw i64 0, %16
+  %18 = getelementptr inbounds i8, ptr %11, i64 %17
+  %19 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %18) #3
+  %20 = icmp sle i64 %19, 0
+  br i1 %20, label %33, label %21
+
+21:                                               ; preds = %2
+  %22 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %23 = getelementptr inbounds i8, ptr %22, i64 0
+  %24 = load ptr, ptr %23, align 8
+  %25 = getelementptr inbounds i32, ptr %24, i32 1
+  %26 = load i32, ptr %25, align 4
+  %27 = sext i32 %26 to i64
+  %28 = add nsw i64 0, %27
+  %29 = getelementptr inbounds i8, ptr %22, i64 %28
+  %30 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %29) #3
+  %31 = load i64, ptr %6, align 8
+  %32 = icmp sle i64 %30, %31
+  br i1 %32, label %33, label %34
+
+33:                                               ; preds = %21, %2
+  br label %46
+
+34:                                               ; preds = %21
+  %35 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %36 = getelementptr inbounds i8, ptr %35, i64 0
+  %37 = load ptr, ptr %36, align 8
+  %38 = getelementptr inbounds i32, ptr %37, i32 1
+  %39 = load i32, ptr %38, align 4
+  %40 = sext i32 %39 to i64
+  %41 = add nsw i64 0, %40
+  %42 = getelementptr inbounds i8, ptr %35, i64 %41
+  %43 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %42) #3
+  %44 = load i64, ptr %6, align 8
+  %45 = sub nsw i64 %43, %44
+  br label %46
+
+46:                                               ; preds = %34, %33
+  %47 = phi i64 [ 0, %33 ], [ %45, %34 ]
+  store i64 %47, ptr %7, align 8
+  %48 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %49 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(8) %48)
+  invoke void @llvm.seh.scope.begin()
+          to label %50 unwind label %203
+
+50:                                               ; preds = %46
+  %51 = invoke noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %8)
+          to label %52 unwind label %203
+
+52:                                               ; preds = %50
+  br i1 %51, label %56, label %53
+
+53:                                               ; preds = %52
+  %54 = load i32, ptr %5, align 4
+  %55 = or i32 %54, 4
+  store i32 %55, ptr %5, align 4
+  br label %190
+
+56:                                               ; preds = %52
+  invoke void @llvm.seh.try.begin()
+          to label %57 unwind label %153
+
+57:                                               ; preds = %56
+  %58 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %59 = getelementptr inbounds i8, ptr %58, i64 0
+  %60 = load ptr, ptr %59, align 8
+  %61 = getelementptr inbounds i32, ptr %60, i32 1
+  %62 = load i32, ptr %61, align 4
+  %63 = sext i32 %62 to i64
+  %64 = add nsw i64 0, %63
+  %65 = getelementptr inbounds i8, ptr %58, i64 %64
+  %66 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %65) #3
+  %67 = and i32 %66, 448
+  %68 = icmp ne i32 %67, 64
+  br i1 %68, label %69, label %104
+
+69:                                               ; preds = %57
+  br label %70
+
+70:                                               ; preds = %100, %69
+  %71 = load i64, ptr %7, align 8
+  %72 = icmp slt i64 0, %71
+  br i1 %72, label %73, label %103
+
+73:                                               ; preds = %70
+  %74 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %75 = getelementptr inbounds i8, ptr %74, i64 0
+  %76 = load ptr, ptr %75, align 8
+  %77 = getelementptr inbounds i32, ptr %76, i32 1
+  %78 = load i32, ptr %77, align 4
+  %79 = sext i32 %78 to i64
+  %80 = add nsw i64 0, %79
+  %81 = getelementptr inbounds i8, ptr %74, i64 %80
+  %82 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %81) #3
+  %83 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %84 = getelementptr inbounds i8, ptr %83, i64 0
+  %85 = load ptr, ptr %84, align 8
+  %86 = getelementptr inbounds i32, ptr %85, i32 1
+  %87 = load i32, ptr %86, align 4
+  %88 = sext i32 %87 to i64
+  %89 = add nsw i64 0, %88
+  %90 = getelementptr inbounds i8, ptr %83, i64 %89
+  %91 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %90) #3
+  %92 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %82, i8 noundef %91)
+          to label %93 unwind label %153
+
+93:                                               ; preds = %73
+  %94 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
+  %95 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %94, i32 noundef %92) #3
+  br i1 %95, label %96, label %99
+
+96:                                               ; preds = %93
+  %97 = load i32, ptr %5, align 4
+  %98 = or i32 %97, 4
+  store i32 %98, ptr %5, align 4
+  br label %103
+
+99:                                               ; preds = %93
+  br label %100
+
+100:                                              ; preds = %99
+  %101 = load i64, ptr %7, align 8
+  %102 = add nsw i64 %101, -1
+  store i64 %102, ptr %7, align 8
+  br label %70, !llvm.loop !21
+
+103:                                              ; preds = %96, %70
+  br label %104
+
+104:                                              ; preds = %103, %57
+  %105 = load i32, ptr %5, align 4
+  %106 = icmp eq i32 %105, 0
+  br i1 %106, label %107, label %126
+
+107:                                              ; preds = %104
+  %108 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %109 = getelementptr inbounds i8, ptr %108, i64 0
+  %110 = load ptr, ptr %109, align 8
+  %111 = getelementptr inbounds i32, ptr %110, i32 1
+  %112 = load i32, ptr %111, align 4
+  %113 = sext i32 %112 to i64
+  %114 = add nsw i64 0, %113
+  %115 = getelementptr inbounds i8, ptr %108, i64 %114
+  %116 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %115) #3
+  %117 = load i64, ptr %6, align 8
+  %118 = load ptr, ptr %3, align 8
+  %119 = invoke noundef i64 @"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z"(ptr noundef nonnull align 8 dereferenceable(104) %116, ptr noundef %118, i64 noundef %117)
+          to label %120 unwind label %153
+
+120:                                              ; preds = %107
+  %121 = load i64, ptr %6, align 8
+  %122 = icmp ne i64 %119, %121
+  br i1 %122, label %123, label %126
+
+123:                                              ; preds = %120
+  %124 = load i32, ptr %5, align 4
+  %125 = or i32 %124, 4
+  store i32 %125, ptr %5, align 4
+  br label %126
+
+126:                                              ; preds = %123, %120, %104
+  %127 = load i32, ptr %5, align 4
+  %128 = icmp eq i32 %127, 0
+  br i1 %128, label %129, label %180
+
+129:                                              ; preds = %126
+  br label %130
+
+130:                                              ; preds = %176, %129
+  %131 = load i64, ptr %7, align 8
+  %132 = icmp slt i64 0, %131
+  br i1 %132, label %133, label %179
+
+133:                                              ; preds = %130
+  %134 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %135 = getelementptr inbounds i8, ptr %134, i64 0
+  %136 = load ptr, ptr %135, align 8
+  %137 = getelementptr inbounds i32, ptr %136, i32 1
+  %138 = load i32, ptr %137, align 4
+  %139 = sext i32 %138 to i64
+  %140 = add nsw i64 0, %139
+  %141 = getelementptr inbounds i8, ptr %134, i64 %140
+  %142 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %141) #3
+  %143 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %144 = getelementptr inbounds i8, ptr %143, i64 0
+  %145 = load ptr, ptr %144, align 8
+  %146 = getelementptr inbounds i32, ptr %145, i32 1
+  %147 = load i32, ptr %146, align 4
+  %148 = sext i32 %147 to i64
+  %149 = add nsw i64 0, %148
+  %150 = getelementptr inbounds i8, ptr %143, i64 %149
+  %151 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %150) #3
+  %152 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %142, i8 noundef %151)
+          to label %169 unwind label %153
+
+153:                                              ; preds = %133, %107, %73, %56
+  %154 = catchswitch within none [label %155] unwind label %203
+
+155:                                              ; preds = %153
+  %156 = catchpad within %154 [ptr null, i32 0, ptr null]
+  %157 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %158 = getelementptr inbounds i8, ptr %157, i64 0
+  %159 = load ptr, ptr %158, align 8
+  %160 = getelementptr inbounds i32, ptr %159, i32 1
+  %161 = load i32, ptr %160, align 4
+  %162 = sext i32 %161 to i64
+  %163 = add nsw i64 0, %162
+  %164 = getelementptr inbounds i8, ptr %157, i64 %163
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %164, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %156) ]
+          to label %165 unwind label %203
+
+165:                                              ; preds = %155
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %156) ]
+          to label %166 unwind label %203
+
+166:                                              ; preds = %165
+  catchret from %156 to label %167
+
+167:                                              ; preds = %166
+  br label %168
+
+168:                                              ; preds = %167, %180
+  br label %190
+
+169:                                              ; preds = %133
+  %170 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
+  %171 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %170, i32 noundef %152) #3
+  br i1 %171, label %172, label %175
+
+172:                                              ; preds = %169
+  %173 = load i32, ptr %5, align 4
+  %174 = or i32 %173, 4
+  store i32 %174, ptr %5, align 4
+  br label %179
+
+175:                                              ; preds = %169
+  br label %176
+
+176:                                              ; preds = %175
+  %177 = load i64, ptr %7, align 8
+  %178 = add nsw i64 %177, -1
+  store i64 %178, ptr %7, align 8
+  br label %130, !llvm.loop !22
+
+179:                                              ; preds = %172, %130
+  br label %180
+
+180:                                              ; preds = %179, %126
+  %181 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %182 = getelementptr inbounds i8, ptr %181, i64 0
+  %183 = load ptr, ptr %182, align 8
+  %184 = getelementptr inbounds i32, ptr %183, i32 1
+  %185 = load i32, ptr %184, align 4
+  %186 = sext i32 %185 to i64
+  %187 = add nsw i64 0, %186
+  %188 = getelementptr inbounds i8, ptr %181, i64 %187
+  %189 = call noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %188, i64 noundef 0) #3
+  br label %168
+
+190:                                              ; preds = %168, %53
+  %191 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %192 = getelementptr inbounds i8, ptr %191, i64 0
+  %193 = load ptr, ptr %192, align 8
+  %194 = getelementptr inbounds i32, ptr %193, i32 1
+  %195 = load i32, ptr %194, align 4
+  %196 = sext i32 %195 to i64
+  %197 = add nsw i64 0, %196
+  %198 = getelementptr inbounds i8, ptr %191, i64 %197
+  %199 = load i32, ptr %5, align 4
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %198, i32 noundef %199, i1 noundef zeroext false)
+          to label %200 unwind label %203
+
+200:                                              ; preds = %190
+  %201 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  invoke void @llvm.seh.scope.end()
+          to label %202 unwind label %203
+
+202:                                              ; preds = %200
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3
+  ret ptr %201
+
+203:                                              ; preds = %200, %190, %165, %155, %153, %50, %46
+  %204 = cleanuppad within none []
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3 [ "funclet"(token %204) ]
+  cleanupret from %204 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = call i32 @_Thrd_id()
+  %4 = call noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %3) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 false
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@4@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 %11)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@4@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 %1) #10 align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca %"class.std::runtime_error", align 8
+  %7 = alloca %"class.std::jthread", align 8
+  %8 = alloca %class.anon, align 8
+  %9 = alloca %"class.std::thread::id", align 4
+  %10 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %11 = inttoptr i64 %1 to ptr
+  store ptr %11, ptr %10, align 8
+  store ptr %0, ptr %4, align 8
+  %12 = load ptr, ptr %4, align 8
+  %13 = getelementptr inbounds nuw %struct.awaitable, ptr %12, i32 0, i32 0
+  %14 = load ptr, ptr %13, align 8
+  store ptr %14, ptr %5, align 8
+  %15 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %16 = call noundef zeroext i1 @"?joinable at jthread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(24) %15) #3
+  br i1 %16, label %17, label %19
+
+17:                                               ; preds = %2
+  %18 = call noundef ptr @"??0runtime_error at std@@QEAA at PEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef @"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@")
+  call void @_CxxThrowException(ptr %6, ptr @"_TI2?AVruntime_error at std@@") #22
+  unreachable
+
+19:                                               ; preds = %2
+  %20 = getelementptr inbounds nuw %class.anon, ptr %8, i32 0, i32 0
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %3, i64 8, i1 false)
+  %21 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@jthread at std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAV01@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
+  invoke void @llvm.seh.scope.begin()
+          to label %22 unwind label %32
+
+22:                                               ; preds = %19
+  %23 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %24 = call noundef nonnull align 8 dereferenceable(24) ptr @"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %7) #3
+  invoke void @llvm.seh.scope.end()
+          to label %25 unwind label %32
+
+25:                                               ; preds = %22
+  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %7) #3
+  %26 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@")
+  %27 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  call void @"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %9) #3
+  %28 = getelementptr inbounds nuw %"class.std::thread::id", ptr %9, i32 0, i32 0
+  %29 = load i32, ptr %28, align 4
+  %30 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %26, i32 %29)
+  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %30, i8 noundef 10)
+  ret void
+
+32:                                               ; preds = %22, %19
+  %33 = cleanuppad within none []
+  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %7) #3 [ "funclet"(token %33) ]
+  cleanupret from %33 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.end() #5
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #3
+  ret void
+}
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #3
+
+; Function Attrs: nobuiltin nounwind
+declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #11
+
+; Function Attrs: nounwind memory(argmem: read)
+declare ptr @llvm.coro.free(token, ptr readonly captures(none)) #12
+
+; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
+define dso_local noundef i32 @main() #13 personality ptr @__CxxFrameHandler3 {
+  %1 = alloca %"class.std::jthread", align 8
+  %2 = alloca %struct.task, align 1
+  %3 = call noundef ptr @"??0jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %8
+
+4:                                                ; preds = %0
+  %5 = invoke i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %1)
+          to label %6 unwind label %8
+
+6:                                                ; preds = %4
+  invoke void @llvm.seh.scope.end()
+          to label %7 unwind label %8
+
+7:                                                ; preds = %6
+  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
+  ret i32 0
+
+8:                                                ; preds = %6, %4, %0
+  %9 = cleanuppad within none []
+  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3 [ "funclet"(token %9) ]
+  cleanupret from %9 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0jthread at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  %3 = alloca %"struct.std::nostopstate_t", align 1
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::jthread", ptr %4, i32 0, i32 0
+  %6 = call noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %7 unwind label %18
+
+7:                                                ; preds = %1
+  %8 = getelementptr inbounds nuw %"class.std::jthread", ptr %4, i32 0, i32 1
+  %9 = getelementptr inbounds nuw %"struct.std::nostopstate_t", ptr %3, i32 0, i32 0
+  %10 = load i8, ptr %9, align 1
+  %11 = call noundef ptr @"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %10) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %15
+
+12:                                               ; preds = %7
+  invoke void @llvm.seh.scope.end()
+          to label %13 unwind label %15
+
+13:                                               ; preds = %12
+  invoke void @llvm.seh.scope.end()
+          to label %14 unwind label %18
+
+14:                                               ; preds = %13
+  ret ptr %4
+
+15:                                               ; preds = %12, %7
+  %16 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %16) ]
+          to label %17 unwind label %18
+
+17:                                               ; preds = %15
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3 [ "funclet"(token %16) ]
+  cleanupret from %16 unwind label %18
+
+18:                                               ; preds = %13, %17, %15, %1
+  %19 = cleanuppad within none []
+  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %14
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.begin()
+          to label %5 unwind label %10
+
+5:                                                ; preds = %4
+  call void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
+  invoke void @llvm.seh.scope.end()
+          to label %6 unwind label %10
+
+6:                                                ; preds = %5
+  %7 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  invoke void @llvm.seh.scope.end()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %6
+  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
+  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %9) #3
+  ret void
+
+10:                                               ; preds = %5, %4
+  %11 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %11) ]
+          to label %12 unwind label %14
+
+12:                                               ; preds = %10
+  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind label %14
+
+14:                                               ; preds = %6, %12, %10, %1
+  %15 = cleanuppad within none []
+  %16 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
+  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %16) #3 [ "funclet"(token %15) ]
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #3
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+declare dso_local i32 @_Thrd_id() #14
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"class.std::thread::id", ptr %5, i32 0, i32 0
+  %7 = load i32, ptr %3, align 4
+  store i32 %7, ptr %6, align 4
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?joinable at jthread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
+  %5 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
+  ret i1 %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at PEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = call noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  store ptr @"??_7exception at std@@6B@", ptr %5, align 8
+  %6 = getelementptr inbounds nuw %"class.std::exception", ptr %5, i32 0, i32 1
+  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 16, i1 false)
+  %7 = getelementptr inbounds nuw %"class.std::exception", ptr %5, i32 0, i32 1
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = getelementptr inbounds nuw %"class.std::exception", ptr %8, i32 0, i32 1
+  call void @__std_exception_copy(ptr noundef %9, ptr noundef %7)
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+declare dso_local void @_CxxThrowException(ptr, ptr)
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #15
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@jthread at std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAV01@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
+  %7 = call noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %21
+
+8:                                                ; preds = %2
+  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 1
+  %10 = invoke noundef ptr @"??0stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9)
+          to label %11 unwind label %21
+
+11:                                               ; preds = %8
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %18
+
+12:                                               ; preds = %11
+  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
+  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  invoke void @"??$_Start at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@$$V at thread@std@@AEAAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
+          to label %15 unwind label %18
+
+15:                                               ; preds = %12
+  invoke void @llvm.seh.scope.end()
+          to label %16 unwind label %18
+
+16:                                               ; preds = %15
+  invoke void @llvm.seh.scope.end()
+          to label %17 unwind label %21
+
+17:                                               ; preds = %16
+  ret ptr %5
+
+18:                                               ; preds = %15, %12, %11
+  %19 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %19) ]
+          to label %20 unwind label %21
+
+20:                                               ; preds = %18
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind label %21
+
+21:                                               ; preds = %16, %20, %18, %8, %2
+  %22 = cleanuppad within none []
+  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3 [ "funclet"(token %22) ]
+  cleanupret from %22 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(24) ptr @"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %4, align 8
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %8 = icmp eq ptr %6, %7
+  br i1 %8, label %9, label %10
+
+9:                                                ; preds = %2
+  store ptr %6, ptr %3, align 8
+  br label %19
+
+10:                                               ; preds = %2
+  call void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds nuw %"class.std::jthread", ptr %11, i32 0, i32 0
+  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %6, i32 0, i32 0
+  %14 = call noundef nonnull align 8 dereferenceable(16) ptr @"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %12) #3
+  %15 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %16 = getelementptr inbounds nuw %"class.std::jthread", ptr %15, i32 0, i32 1
+  %17 = getelementptr inbounds nuw %"class.std::jthread", ptr %6, i32 0, i32 1
+  %18 = call noundef nonnull align 8 dereferenceable(8) ptr @"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %16) #3
+  store ptr %6, ptr %3, align 8
+  br label %19
+
+19:                                               ; preds = %10, %9
+  %20 = load ptr, ptr %3, align 8
+  ret ptr %20
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
+  call void @"?get_id at thread@std@@QEBA?AVid at 12@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %1) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::thread", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
+  %6 = load i32, ptr %5, align 8
+  %7 = icmp ne i32 %6, 0
+  ret i1 %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %struct.__std_exception_data, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  store ptr @"??_7exception at std@@6B@", ptr %6, align 8
+  %7 = getelementptr inbounds nuw %"class.std::exception", ptr %6, i32 0, i32 1
+  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 16, i1 false)
+  %8 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %5, i32 0, i32 0
+  %9 = load ptr, ptr %3, align 8
+  store ptr %9, ptr %8, align 8
+  %10 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %5, i32 0, i32 1
+  store i8 1, ptr %10, align 8
+  %11 = getelementptr inbounds nuw %"class.std::exception", ptr %6, i32 0, i32 1
+  call void @__std_exception_copy(ptr noundef %5, ptr noundef %11)
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  store ptr @"??_7exception at std@@6B@", ptr %3, align 8
+  %4 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
+  call void @__std_exception_destroy(ptr noundef %4)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gruntime_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?what at exception@std@@UEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
+  %5 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  %7 = icmp ne ptr %6, null
+  br i1 %7, label %8, label %12
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
+  %10 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %9, i32 0, i32 0
+  %11 = load ptr, ptr %10, align 8
+  br label %13
+
+12:                                               ; preds = %1
+  br label %13
+
+13:                                               ; preds = %12, %8
+  %14 = phi ptr [ %11, %8 ], [ @"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@", %12 ]
+  ret ptr %14
+}
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
+declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #16
+
+declare dso_local void @__std_exception_copy(ptr noundef, ptr noundef) #14
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gexception at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+declare dso_local void @__std_exception_destroy(ptr noundef) #14
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::thread", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 0
+  store ptr null, ptr %5, align 8
+  %6 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
+  store i32 0, ptr %6, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::stop_source", ptr %3, i32 0, i32 0
+  %5 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef 32) #24
+  invoke void @llvm.seh.scope.begin()
+          to label %6 unwind label %9
+
+6:                                                ; preds = %1
+  %7 = call noundef ptr @"??0_Stop_state at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
+  invoke void @llvm.seh.scope.end()
+          to label %8 unwind label %9
+
+8:                                                ; preds = %6
+  store ptr %5, ptr %4, align 8
+  ret ptr %3
+
+9:                                                ; preds = %6, %1
+  %10 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 32) #23 [ "funclet"(token %10) ]
+  cleanupret from %10 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal void @"??$_Start at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@$$V at thread@std@@AEAAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"class.std::unique_ptr", align 8
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"??$make_unique at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@2@@Z at QEAAXU?$coroutine_handle at X@2@@Z@$0A@@std@@YA?AV?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@0@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %8)
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %30
+
+9:                                                ; preds = %2
+  store ptr @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z", ptr %6, align 8
+  %10 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
+  %11 = getelementptr inbounds nuw %struct._Thrd_t, ptr %10, i32 0, i32 1
+  %12 = call noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  %13 = invoke i64 @_beginthreadex(ptr noundef null, i32 noundef 0, ptr noundef @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z", ptr noundef %12, i32 noundef 0, ptr noundef %11)
+          to label %14 unwind label %30
+
+14:                                               ; preds = %9
+  %15 = inttoptr i64 %13 to ptr
+  %16 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
+  %17 = getelementptr inbounds nuw %struct._Thrd_t, ptr %16, i32 0, i32 0
+  store ptr %15, ptr %17, align 8
+  %18 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
+  %19 = getelementptr inbounds nuw %struct._Thrd_t, ptr %18, i32 0, i32 0
+  %20 = load ptr, ptr %19, align 8
+  %21 = icmp ne ptr %20, null
+  br i1 %21, label %22, label %24
+
+22:                                               ; preds = %14
+  %23 = call noundef ptr @"?release@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  br label %28
+
+24:                                               ; preds = %14
+  %25 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
+  %26 = getelementptr inbounds nuw %struct._Thrd_t, ptr %25, i32 0, i32 1
+  store i32 0, ptr %26, align 8
+  invoke void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 6) #22
+          to label %27 unwind label %30
+
+27:                                               ; preds = %24
+  unreachable
+
+28:                                               ; preds = %22
+  invoke void @llvm.seh.scope.end()
+          to label %29 unwind label %30
+
+29:                                               ; preds = %28
+  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  ret void
+
+30:                                               ; preds = %28, %24, %9, %2
+  %31 = cleanuppad within none []
+  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3 [ "funclet"(token %31) ]
+  cleanupret from %31 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::stop_source", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load ptr, ptr %3, align 8
+  %8 = icmp ne ptr %7, null
+  br i1 %8, label %9, label %31
+
+9:                                                ; preds = %1
+  %10 = load ptr, ptr %3, align 8
+  %11 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %10, i32 0, i32 1
+  %12 = call noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %11, i32 noundef 2, i32 noundef 4) #3
+  %13 = lshr i32 %12, 1
+  %14 = icmp eq i32 %13, 1
+  br i1 %14, label %15, label %30
+
+15:                                               ; preds = %9
+  %16 = load ptr, ptr %3, align 8
+  %17 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %16, i32 0, i32 0
+  %18 = call noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef 1, i32 noundef 4) #3
+  %19 = icmp eq i32 %18, 1
+  br i1 %19, label %20, label %29
+
+20:                                               ; preds = %15
+  %21 = load ptr, ptr %3, align 8
+  %22 = icmp eq ptr %21, null
+  br i1 %22, label %26, label %23
+
+23:                                               ; preds = %20
+  invoke void @llvm.seh.scope.begin()
+          to label %24 unwind label %27
+
+24:                                               ; preds = %23
+  invoke void @llvm.seh.scope.end()
+          to label %25 unwind label %27
+
+25:                                               ; preds = %24
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %21, i64 noundef 32) #23
+  br label %26
+
+26:                                               ; preds = %25, %20
+  br label %29
+
+27:                                               ; preds = %24, %23
+  %28 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %21, i64 noundef 32) #23 [ "funclet"(token %28) ]
+  cleanupret from %28 unwind to caller
+
+29:                                               ; preds = %26, %15
+  br label %30
+
+30:                                               ; preds = %29, %9
+  br label %31
+
+31:                                               ; preds = %30, %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3
+  br i1 %4, label %5, label %6
+
+5:                                                ; preds = %1
+  call void @terminate() #25
+  unreachable
+
+6:                                                ; preds = %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_Stop_state at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 0
+  %5 = call noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef 1) #3
+  %6 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 1
+  %7 = call noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 2) #3
+  %8 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 2
+  %9 = call noundef ptr @"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
+  %10 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 3
+  %11 = call noundef ptr @"??0?$atomic at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef null) #3
+  %12 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 4
+  store i32 0, ptr %12, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load i32, ptr %3, align 4
+  %7 = call noundef ptr @"??0?$_Atomic_integral_facade at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %3, i32 0, i32 0
+  %5 = call noundef ptr @"??0?$atomic at _K@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??0?$atomic at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = call noundef ptr @"??0?$_Atomic_pointer at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??0?$_Atomic_integral_facade at I@std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load i32, ptr %3, align 4
+  %7 = call noundef ptr @"??0?$_Atomic_integral at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??0?$_Atomic_integral at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load i32, ptr %3, align 4
+  %7 = call noundef ptr @"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %5, i32 0, i32 0
+  %7 = getelementptr inbounds nuw %"struct.std::_Atomic_padded", ptr %6, i32 0, i32 0
+  %8 = load i32, ptr %3, align 4
+  store i32 %8, ptr %7, align 4
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$atomic at _K@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds i8, ptr %3, i64 0
+  call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 8, i1 false)
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??0?$_Atomic_pointer at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = call noundef ptr @"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %5, i32 0, i32 0
+  %7 = getelementptr inbounds nuw %"struct.std::_Atomic_padded.8", ptr %6, i32 0, i32 0
+  %8 = load ptr, ptr %3, align 8
+  store ptr %8, ptr %7, align 8
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal void @"??$make_unique at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@2@@Z at QEAAXU?$coroutine_handle at X@2@@Z@$0A@@std@@YA?AV?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@0@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef 8) #24
+  invoke void @llvm.seh.scope.begin()
+          to label %6 unwind label %11
+
+6:                                                ; preds = %2
+  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %8 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %11
+
+9:                                                ; preds = %6
+  %10 = call noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %5) #3
+  ret void
+
+11:                                               ; preds = %6, %2
+  %12 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 8) #23 [ "funclet"(token %12) ]
+  cleanupret from %12 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef i32 @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z"(ptr noundef %0) #0 align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  %3 = alloca %"class.std::unique_ptr", align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %5 = load ptr, ptr %2, align 8
+  %6 = call noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %5) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %7 unwind label %14
+
+7:                                                ; preds = %1
+  %8 = call noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
+  store ptr %8, ptr %4, align 8
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %10 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$get@$0A at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAAEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z at AEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
+  invoke void @"??$invoke at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10)
+          to label %11 unwind label %14
+
+11:                                               ; preds = %7
+  invoke void @_Cnd_do_broadcast_at_thread_exit()
+          to label %12 unwind label %14
+
+12:                                               ; preds = %11
+  invoke void @llvm.seh.scope.end()
+          to label %13 unwind label %14
+
+13:                                               ; preds = %12
+  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
+  ret i32 0
+
+14:                                               ; preds = %12, %11, %7, %1
+  %15 = cleanuppad within none []
+  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3 [ "funclet"(token %15) ]
+  cleanupret from %15 unwind to caller
+}
+
+declare dso_local i64 @_beginthreadex(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #14
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"?release@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  store ptr null, ptr %3, align 8
+  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
+  %7 = call noundef ptr @"??$exchange at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$$T at std@@YAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0 at AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #3
+  ret ptr %7
+}
+
+; Function Attrs: noreturn
+declare dso_local void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef) #17
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  %7 = icmp ne ptr %6, null
+  br i1 %7, label %8, label %14
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAAAEAU?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
+  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
+  %13 = load ptr, ptr %12, align 8
+  call void @"??R?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@QEBAXPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #3
+  br label %14
+
+14:                                               ; preds = %8, %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::_Exact_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %8 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %5, i32 0, i32 0
+  %9 = load i8, ptr %8, align 1
+  %10 = call noundef ptr @"??$?0U_Exact_args_t at std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA at U_Exact_args_t@1@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 %9, ptr noundef nonnull align 8 dereferenceable(8) %7)
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %6, i32 0, i32 0
+  %8 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %5, i32 0, i32 0
+  %9 = load i8, ptr %8, align 1
+  %10 = call noundef ptr @"??$?0AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1 at AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i8 %9, ptr noundef nonnull align 8 dereferenceable(8) %3) #3
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal noundef ptr @"??$?0U_Exact_args_t at std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA at U_Exact_args_t@1@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) unnamed_addr #10 align 2 {
+  %4 = alloca %"struct.std::_Exact_args_t", align 1
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"struct.std::_Exact_args_t", align 1
+  %8 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %4, i32 0, i32 0
+  store i8 %1, ptr %8, align 1
+  store ptr %2, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %9 = load ptr, ptr %6, align 8
+  %10 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %7, i32 0, i32 0
+  %11 = load i8, ptr %10, align 1
+  %12 = call noundef ptr @"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %9, i8 %11) #3
+  %13 = getelementptr inbounds nuw %"class.std::tuple", ptr %9, i32 0, i32 0
+  %14 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %15 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@@?$_Tuple_val at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
+  ret ptr %9
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z"(ptr noundef nonnull returned align 1 dereferenceable(1) %0, i8 %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca %"struct.std::_Exact_args_t", align 1
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %3, i32 0, i32 0
+  store i8 %1, ptr %5, align 1
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@@?$_Tuple_val at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::_Tuple_val", ptr %5, i32 0, i32 0
+  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %6, ptr align 8 %7, i64 8, i1 false)
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??$?0AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1 at AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) unnamed_addr #0 align 2 {
+  %4 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %4, i32 0, i32 0
+  store i8 %1, ptr %7, align 1
+  store ptr %2, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %8, i32 0, i32 0
+  %10 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %11 = load ptr, ptr %10, align 8
+  store ptr %11, ptr %9, align 8
+  ret ptr %8
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal void @"??$invoke at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  call void @"??R<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z at QEBA?A?<auto>@@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef nonnull align 8 dereferenceable(8) ptr @"??$get@$0A at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAAEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z at AEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  %4 = getelementptr inbounds nuw %"class.std::tuple", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"struct.std::_Tuple_val", ptr %4, i32 0, i32 0
+  ret ptr %5
+}
+
+declare dso_local void @_Cnd_do_broadcast_at_thread_exit() #14
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define internal void @"??R<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z at QEBA?A?<auto>@@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %class.anon, ptr %3, i32 0, i32 0
+  call void @"?resume@?$coroutine_handle at X@std@@QEBAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %4)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?resume@?$coroutine_handle at X@std@@QEBAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %5 = load ptr, ptr %4, align 8
+  call void @llvm.coro.resume(ptr %5)
+  ret void
+}
+
+declare void @llvm.coro.resume(ptr)
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef ptr @"??$exchange at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$$T at std@@YAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0 at AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr null, ptr %9, align 8
+  %10 = load ptr, ptr %5, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAAAEAU?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"??R?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@QEBAXPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = icmp eq ptr %6, null
+  br i1 %7, label %11, label %8
+
+8:                                                ; preds = %2
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %12
+
+9:                                                ; preds = %8
+  invoke void @llvm.seh.scope.end()
+          to label %10 unwind label %12
+
+10:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 8) #23
+  br label %11
+
+11:                                               ; preds = %10, %2
+  ret void
+
+12:                                               ; preds = %9, %8
+  %13 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 8) #23 [ "funclet"(token %13) ]
+  cleanupret from %13 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  store i32 %2, ptr %4, align 4
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i32, ptr %4, align 4
+  %9 = load i32, ptr %5, align 4
+  %10 = call noundef i32 @"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z"(i32 noundef %9) #3
+  %11 = call noundef i32 @"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %7, i32 noundef %10, i32 noundef %8) #3
+  ret i32 %11
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = alloca i32, align 4
+  store i32 %2, ptr %4, align 4
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i32, ptr %4, align 4
+  call void @_Check_memory_order(i32 noundef %9) #3
+  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %8, i32 0, i32 0
+  %11 = call noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %10) #3
+  %12 = load i32, ptr %5, align 4
+  %13 = atomicrmw add ptr %11, i32 %12 seq_cst, align 4
+  store i32 %13, ptr %7, align 4
+  %14 = load i32, ptr %7, align 4
+  ret i32 %14
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z"(i32 noundef %0) #0 comdat align 2 {
+  %2 = alloca i32, align 4
+  store i32 %0, ptr %2, align 4
+  %3 = load i32, ptr %2, align 4
+  %4 = sub i32 0, %3
+  ret i32 %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @_Check_memory_order(i32 noundef %0) #0 comdat {
+  %2 = alloca i32, align 4
+  store i32 %0, ptr %2, align 4
+  %3 = load i32, ptr %2, align 4
+  %4 = icmp ugt i32 %3, 5
+  br i1 %4, label %5, label %6
+
+5:                                                ; preds = %1
+  br label %6
+
+6:                                                ; preds = %5, %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !23
+  ret ptr %3
+}
+
+; Function Attrs: noreturn nounwind
+declare dso_local void @terminate() #18
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
+  %5 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
+  br i1 %5, label %6, label %10
+
+6:                                                ; preds = %1
+  %7 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
+  %8 = call noundef zeroext i1 @"?request_stop at stop_source@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
+  call void @"?join at thread@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(16) %9)
+  br label %10
+
+10:                                               ; preds = %6, %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %struct._Thrd_t, align 8
+  %6 = alloca %struct._Thrd_t, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %7) #3
+  br i1 %8, label %9, label %10
+
+9:                                                ; preds = %2
+  call void @terminate() #25
+  unreachable
+
+10:                                               ; preds = %2
+  %11 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 0
+  store ptr null, ptr %11, align 8
+  %12 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 1
+  store i32 0, ptr %12, align 8
+  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %14 = getelementptr inbounds nuw %"class.std::thread", ptr %13, i32 0, i32 0
+  call void @"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z"(ptr dead_on_unwind writable sret(%struct._Thrd_t) align 8 %5, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %6) #3
+  %15 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %5, i64 16, i1 false)
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"class.std::stop_source", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %8 = call noundef ptr @"??0stop_source at std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %11
+
+9:                                                ; preds = %2
+  call void @"?swap at stop_source@std@@QEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %10 unwind label %11
+
+10:                                               ; preds = %9
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  ret ptr %6
+
+11:                                               ; preds = %9, %2
+  %12 = cleanuppad within none []
+  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3 [ "funclet"(token %12) ]
+  cleanupret from %12 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?request_stop at stop_source@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::stop_source", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load ptr, ptr %3, align 8
+  %8 = icmp ne ptr %7, null
+  br i1 %8, label %9, label %12
+
+9:                                                ; preds = %1
+  %10 = load ptr, ptr %3, align 8
+  %11 = call noundef zeroext i1 @"?_Request_stop at _Stop_state@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3
+  br label %12
+
+12:                                               ; preds = %9, %1
+  %13 = phi i1 [ false, %1 ], [ %11, %9 ]
+  ret i1 %13
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?join at thread@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #10 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca %struct._Thrd_t, align 8
+  %4 = alloca %struct._Thrd_t, align 8
+  store ptr %0, ptr %2, align 8
+  %5 = load ptr, ptr %2, align 8
+  %6 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  br i1 %6, label %8, label %7
+
+7:                                                ; preds = %1
+  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 1) #22
+  unreachable
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
+  %10 = getelementptr inbounds nuw %struct._Thrd_t, ptr %9, i32 0, i32 1
+  %11 = load i32, ptr %10, align 8
+  %12 = call i32 @_Thrd_id()
+  %13 = icmp eq i32 %11, %12
+  br i1 %13, label %14, label %15
+
+14:                                               ; preds = %8
+  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 5) #22
+  unreachable
+
+15:                                               ; preds = %8
+  %16 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3, ptr align 8 %16, i64 16, i1 false)
+  %17 = call i32 @_Thrd_join(ptr noundef %3, ptr noundef null)
+  %18 = icmp ne i32 %17, 0
+  br i1 %18, label %19, label %20
+
+19:                                               ; preds = %15
+  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 2) #22
+  unreachable
+
+20:                                               ; preds = %15
+  %21 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 0
+  store ptr null, ptr %21, align 8
+  %22 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
+  store i32 0, ptr %22, align 8
+  %23 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %4, i64 16, i1 false)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?_Request_stop at _Stop_state@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca i1, align 1
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  %7 = load ptr, ptr %3, align 8
+  %8 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 1
+  %9 = call noundef i32 @"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef 1, i32 noundef 5) #3
+  %10 = and i32 %9, 1
+  %11 = icmp ne i32 %10, 0
+  br i1 %11, label %12, label %13
+
+12:                                               ; preds = %1
+  store i1 false, ptr %2, align 1
+  br label %42
+
+13:                                               ; preds = %1
+  %14 = call i32 @_Thrd_id()
+  %15 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 4
+  store i32 %14, ptr %15, align 8
+  br label %16
+
+16:                                               ; preds = %35, %13
+  %17 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
+  %18 = call noundef ptr @"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %17) #3
+  store ptr %18, ptr %4, align 8
+  %19 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 3
+  %20 = load ptr, ptr %4, align 8
+  call void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef %20, i32 noundef 0) #3
+  %21 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 3
+  call void @"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %21) #3
+  %22 = load ptr, ptr %4, align 8
+  %23 = icmp eq ptr %22, null
+  br i1 %23, label %24, label %26
+
+24:                                               ; preds = %16
+  %25 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
+  call void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef null) #3
+  store i1 true, ptr %2, align 1
+  br label %42
+
+26:                                               ; preds = %16
+  store ptr null, ptr %6, align 8
+  %27 = load ptr, ptr %4, align 8
+  %28 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %27, i32 0, i32 1
+  %29 = call noundef ptr @"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
+  store ptr %29, ptr %5, align 8
+  %30 = load ptr, ptr %5, align 8
+  %31 = icmp ne ptr %30, null
+  br i1 %31, label %32, label %35
+
+32:                                               ; preds = %26
+  %33 = load ptr, ptr %5, align 8
+  %34 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %33, i32 0, i32 2
+  store ptr null, ptr %34, align 8
+  br label %35
+
+35:                                               ; preds = %32, %26
+  %36 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
+  %37 = load ptr, ptr %5, align 8
+  call void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %37) #3
+  %38 = load ptr, ptr %4, align 8
+  %39 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %38, i32 0, i32 3
+  %40 = load ptr, ptr %39, align 8
+  %41 = load ptr, ptr %4, align 8
+  call void %40(ptr noundef %41) #3
+  br label %16, !llvm.loop !24
+
+42:                                               ; preds = %24, %12
+  %43 = load i1, ptr %2, align 1
+  ret i1 %43
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = alloca i32, align 4
+  store i32 %2, ptr %4, align 4
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i32, ptr %4, align 4
+  call void @_Check_memory_order(i32 noundef %9) #3
+  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %8, i32 0, i32 0
+  %11 = call noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %10) #3
+  %12 = load i32, ptr %5, align 4
+  %13 = atomicrmw or ptr %11, i32 %12 seq_cst, align 4
+  store i32 %13, ptr %7, align 4
+  %14 = load i32, ptr %7, align 4
+  ret i32 %14
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca i64, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
+  %6 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 0) #3
+  store i64 %6, ptr %3, align 8
+  br label %7
+
+7:                                                ; preds = %36, %1
+  %8 = load i64, ptr %3, align 8
+  %9 = and i64 %8, 3
+  switch i64 %9, label %35 [
+    i64 0, label %10
+    i64 1, label %19
+    i64 2, label %30
+  ]
+
+10:                                               ; preds = %7
+  %11 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
+  %12 = load i64, ptr %3, align 8
+  %13 = or i64 %12, 1
+  %14 = call noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef %13) #3
+  br i1 %14, label %15, label %18
+
+15:                                               ; preds = %10
+  %16 = load i64, ptr %3, align 8
+  %17 = inttoptr i64 %16 to ptr
+  ret ptr %17
+
+18:                                               ; preds = %10
+  call void @llvm.x86.sse2.pause()
+  br label %36
+
+19:                                               ; preds = %7
+  %20 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
+  %21 = load i64, ptr %3, align 8
+  %22 = and i64 %21, -4
+  %23 = or i64 %22, 2
+  %24 = call noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef %23) #3
+  br i1 %24, label %26, label %25
+
+25:                                               ; preds = %19
+  call void @llvm.x86.sse2.pause()
+  br label %36
+
+26:                                               ; preds = %19
+  %27 = load i64, ptr %3, align 8
+  %28 = and i64 %27, -4
+  %29 = or i64 %28, 2
+  store i64 %29, ptr %3, align 8
+  br label %30
+
+30:                                               ; preds = %7, %26
+  %31 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
+  %32 = load i64, ptr %3, align 8
+  call void @"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %31, i64 noundef %32, i32 noundef 0) #3
+  %33 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
+  %34 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %33, i32 noundef 0) #3
+  store i64 %34, ptr %3, align 8
+  br label %36
+
+35:                                               ; preds = %7
+  call void @abort() #25
+  unreachable
+
+36:                                               ; preds = %30, %25, %18
+  br label %7, !llvm.loop !25
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca i64, align 8
+  store i32 %2, ptr %4, align 4
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %9 = load ptr, ptr %6, align 8
+  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %9, i32 0, i32 0
+  %11 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
+  store ptr %11, ptr %7, align 8
+  %12 = call noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  store i64 %12, ptr %8, align 8
+  %13 = load i32, ptr %4, align 4
+  switch i32 %13, label %20 [
+    i32 0, label %14
+    i32 3, label %17
+    i32 1, label %21
+    i32 2, label %21
+    i32 4, label %21
+    i32 5, label %22
+  ]
+
+14:                                               ; preds = %3
+  %15 = load ptr, ptr %7, align 8
+  %16 = load i64, ptr %8, align 8
+  store volatile i64 %16, ptr %15, align 8
+  br label %24
+
+17:                                               ; preds = %3
+  fence syncscope("singlethread") seq_cst
+  %18 = load ptr, ptr %7, align 8
+  %19 = load i64, ptr %8, align 8
+  store volatile i64 %19, ptr %18, align 8
+  br label %24
+
+20:                                               ; preds = %3
+  br label %21
+
+21:                                               ; preds = %3, %3, %3, %20
+  br label %22
+
+22:                                               ; preds = %3, %21
+  %23 = load ptr, ptr %5, align 8
+  call void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %23) #3
+  br label %24
+
+24:                                               ; preds = %22, %17, %14
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %3, i32 0, i32 0
+  call void @__std_atomic_notify_all_direct(ptr noundef %4) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca i64, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %6, i32 0, i32 0
+  %8 = load ptr, ptr %3, align 8
+  %9 = ptrtoint ptr %8 to i64
+  %10 = call noundef i64 @"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef %9, i32 noundef 5) #3
+  store i64 %10, ptr %5, align 8
+  %11 = load i64, ptr %5, align 8
+  %12 = and i64 %11, 3
+  %13 = icmp eq i64 %12, 2
+  br i1 %13, label %14, label %16
+
+14:                                               ; preds = %2
+  %15 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %6, i32 0, i32 0
+  call void @"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %15) #3
+  br label %16
+
+16:                                               ; preds = %14, %2
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr null, ptr %9, align 8
+  %10 = load ptr, ptr %5, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef %1) #0 comdat align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca i64, align 8
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %7, i32 0, i32 0
+  %9 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
+  store ptr %9, ptr %5, align 8
+  %10 = load ptr, ptr %5, align 8
+  %11 = load volatile i64, ptr %10, align 8
+  store i64 %11, ptr %6, align 8
+  %12 = load i32, ptr %3, align 4
+  switch i32 %12, label %16 [
+    i32 0, label %13
+    i32 1, label %14
+    i32 2, label %14
+    i32 5, label %14
+    i32 3, label %15
+    i32 4, label %15
+  ]
+
+13:                                               ; preds = %2
+  br label %17
+
+14:                                               ; preds = %2, %2, %2
+  fence syncscope("singlethread") seq_cst
+  br label %17
+
+15:                                               ; preds = %2, %2
+  br label %16
+
+16:                                               ; preds = %2, %15
+  br label %17
+
+17:                                               ; preds = %16, %14, %13
+  %18 = load i64, ptr %6, align 8
+  ret i64 %18
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i64, ptr %4, align 8
+  %9 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %10 = call noundef zeroext i1 @"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %9, i64 noundef %8, i32 noundef 5) #3
+  ret i1 %10
+}
+
+; Function Attrs: nounwind
+declare void @llvm.x86.sse2.pause() #3
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca i64, align 8
+  %6 = alloca ptr, align 8
+  store i32 %2, ptr %4, align 4
+  store i64 %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i32, ptr %4, align 4
+  %9 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  call void @"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z"(ptr noundef %7, i64 noundef %9, i32 noundef %8) #3
+  ret void
+}
+
+; Function Attrs: noreturn nounwind
+declare dso_local void @abort() #18
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %2, i32 noundef %3) #0 comdat align 2 {
+  %5 = alloca i1, align 1
+  %6 = alloca i32, align 4
+  %7 = alloca i64, align 8
+  %8 = alloca ptr, align 8
+  %9 = alloca ptr, align 8
+  %10 = alloca i64, align 8
+  %11 = alloca i64, align 8
+  store i32 %3, ptr %6, align 4
+  store i64 %2, ptr %7, align 8
+  store ptr %1, ptr %8, align 8
+  store ptr %0, ptr %9, align 8
+  %12 = load ptr, ptr %9, align 8
+  %13 = load ptr, ptr %8, align 8, !nonnull !16, !align !17
+  %14 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
+  store i64 %14, ptr %10, align 8
+  %15 = load i32, ptr %6, align 4
+  call void @_Check_memory_order(i32 noundef %15) #3
+  %16 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %12, i32 0, i32 0
+  %17 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %16) #3
+  %18 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  %19 = load i64, ptr %10, align 8
+  %20 = cmpxchg volatile ptr %17, i64 %19, i64 %18 seq_cst seq_cst, align 8
+  %21 = extractvalue { i64, i1 } %20, 0
+  store i64 %21, ptr %11, align 8
+  %22 = load i64, ptr %11, align 8
+  %23 = load i64, ptr %10, align 8
+  %24 = icmp eq i64 %22, %23
+  br i1 %24, label %25, label %26
+
+25:                                               ; preds = %4
+  store i1 true, ptr %5, align 1
+  br label %28
+
+26:                                               ; preds = %4
+  %27 = load ptr, ptr %8, align 8, !nonnull !16, !align !17
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %11, i64 8, i1 false)
+  store i1 false, ptr %5, align 1
+  br label %28
+
+28:                                               ; preds = %26, %25
+  %29 = load i1, ptr %5, align 1
+  ret i1 %29
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  %4 = load i64, ptr %3, align 8
+  ret i64 %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z"(ptr noundef %0, i64 noundef %1, i32 noundef %2) #0 comdat {
+  %4 = alloca i32, align 4
+  %5 = alloca i64, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca i64, align 8
+  %9 = alloca i64, align 8
+  store i32 %2, ptr %4, align 4
+  store i64 %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %10 = load ptr, ptr %6, align 8
+  %11 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %10, i32 0, i32 0
+  store ptr %11, ptr %7, align 8
+  br label %12
+
+12:                                               ; preds = %21, %3
+  %13 = load ptr, ptr %6, align 8
+  %14 = load i32, ptr %4, align 4
+  %15 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %14) #3
+  store i64 %15, ptr %9, align 8
+  %16 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
+  store i64 %16, ptr %8, align 8
+  %17 = load i64, ptr %5, align 8
+  %18 = load i64, ptr %8, align 8
+  %19 = icmp ne i64 %17, %18
+  br i1 %19, label %20, label %21
+
+20:                                               ; preds = %12
+  ret void
+
+21:                                               ; preds = %12
+  %22 = load ptr, ptr %7, align 8
+  %23 = call i32 @__std_atomic_wait_direct(ptr noundef %22, ptr noundef %5, i64 noundef 8, i32 noundef -1) #3
+  br label %12, !llvm.loop !26
+}
+
+; Function Attrs: nounwind
+declare dso_local i32 @__std_atomic_wait_direct(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #19
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  %4 = load ptr, ptr %3, align 8
+  %5 = ptrtoint ptr %4 to i64
+  ret i64 %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca i64, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %7, i32 0, i32 0
+  %9 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
+  store ptr %9, ptr %5, align 8
+  %10 = call noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
+  store i64 %10, ptr %6, align 8
+  %11 = load ptr, ptr %5, align 8
+  %12 = load i64, ptr %6, align 8
+  %13 = atomicrmw xchg ptr %11, i64 %12 seq_cst, align 8
+  ret void
+}
+
+; Function Attrs: nounwind
+declare dso_local void @__std_atomic_notify_all_direct(ptr noundef) #19
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca i64, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca i64, align 8
+  store i32 %2, ptr %4, align 4
+  store i64 %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i32, ptr %4, align 4
+  call void @_Check_memory_order(i32 noundef %9) #3
+  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %8, i32 0, i32 0
+  %11 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
+  %12 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  %13 = atomicrmw xchg ptr %11, i64 %12 seq_cst, align 8
+  store i64 %13, ptr %7, align 8
+  %14 = load i64, ptr %7, align 8
+  ret i64 %14
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %3, i32 0, i32 0
+  call void @__std_atomic_notify_all_direct(ptr noundef %4) #3
+  ret void
+}
+
+declare dso_local i32 @_Thrd_join(ptr noundef, ptr noundef) #14
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z"(ptr dead_on_unwind noalias writable sret(%struct._Thrd_t) align 8 %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) #0 comdat {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %0, ptr %4, align 8
+  store ptr %2, ptr %5, align 8
+  store ptr %1, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8, !nonnull !16, !align !17
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %7, i64 16, i1 false)
+  %8 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %9 = load ptr, ptr %6, align 8, !nonnull !16, !align !17
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %8, i64 16, i1 false)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
+  store ptr null, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = getelementptr inbounds nuw %"class.std::stop_source", ptr %8, i32 0, i32 0
+  %10 = call noundef ptr @"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  store ptr %10, ptr %7, align 8
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?swap at stop_source@std@@QEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
+  %8 = getelementptr inbounds nuw %"class.std::stop_source", ptr %5, i32 0, i32 0
+  call void @"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr null, ptr %9, align 8
+  %10 = load ptr, ptr %5, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = load ptr, ptr %8, align 8
+  %10 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr %9, ptr %10, align 8
+  %11 = load ptr, ptr %5, align 8
+  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  store ptr %11, ptr %12, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_id at thread@std@@QEBA?AVid at 12@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
+  %7 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 1
+  %8 = load i32, ptr %7, align 8
+  %9 = call noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %1, i32 noundef %8) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca %"struct.std::nostopstate_t", align 1
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::nostopstate_t", ptr %3, i32 0, i32 0
+  store i8 %1, ptr %5, align 1
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
+  store ptr null, ptr %7, align 8
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = call i64 @strlen(ptr noundef %3) #3
+  ret i64 %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 6
+  %5 = load i64, ptr %4, align 8
+  ret i64 %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %4, align 8
+  store ptr %0, ptr %5, align 8
+  %7 = load ptr, ptr %5, align 8
+  store ptr %7, ptr %3, align 8
+  %8 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %9 = call noundef ptr @"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
+  invoke void @llvm.seh.scope.begin()
+          to label %10 unwind label %57
+
+10:                                               ; preds = %2
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds i8, ptr %11, i64 0
+  %13 = load ptr, ptr %12, align 8
+  %14 = getelementptr inbounds i32, ptr %13, i32 1
+  %15 = load i32, ptr %14, align 4
+  %16 = sext i32 %15 to i64
+  %17 = add nsw i64 0, %16
+  %18 = getelementptr inbounds i8, ptr %11, i64 %17
+  %19 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %18) #3
+  br i1 %19, label %22, label %20
+
+20:                                               ; preds = %10
+  %21 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
+  store i8 0, ptr %21, align 8
+  br label %55
+
+22:                                               ; preds = %10
+  %23 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %24 = getelementptr inbounds i8, ptr %23, i64 0
+  %25 = load ptr, ptr %24, align 8
+  %26 = getelementptr inbounds i32, ptr %25, i32 1
+  %27 = load i32, ptr %26, align 4
+  %28 = sext i32 %27 to i64
+  %29 = add nsw i64 0, %28
+  %30 = getelementptr inbounds i8, ptr %23, i64 %29
+  %31 = call noundef ptr @"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %30) #3
+  store ptr %31, ptr %6, align 8
+  %32 = load ptr, ptr %6, align 8
+  %33 = icmp ne ptr %32, null
+  br i1 %33, label %34, label %38
+
+34:                                               ; preds = %22
+  %35 = load ptr, ptr %6, align 8
+  %36 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %37 = icmp eq ptr %35, %36
+  br i1 %37, label %38, label %40
+
+38:                                               ; preds = %34, %22
+  %39 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
+  store i8 1, ptr %39, align 8
+  br label %55
+
+40:                                               ; preds = %34
+  %41 = load ptr, ptr %6, align 8
+  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %41)
+          to label %43 unwind label %57
+
+43:                                               ; preds = %40
+  %44 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %45 = getelementptr inbounds i8, ptr %44, i64 0
+  %46 = load ptr, ptr %45, align 8
+  %47 = getelementptr inbounds i32, ptr %46, i32 1
+  %48 = load i32, ptr %47, align 4
+  %49 = sext i32 %48 to i64
+  %50 = add nsw i64 0, %49
+  %51 = getelementptr inbounds i8, ptr %44, i64 %50
+  %52 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %51) #3
+  %53 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
+  %54 = zext i1 %52 to i8
+  store i8 %54, ptr %53, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %55 unwind label %57
+
+55:                                               ; preds = %20, %38, %43
+  %56 = load ptr, ptr %3, align 8
+  ret ptr %56
+
+57:                                               ; preds = %43, %40, %2
+  %58 = cleanuppad within none []
+  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3 [ "funclet"(token %58) ]
+  cleanupret from %58 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %3, i32 0, i32 1
+  %5 = load i8, ptr %4, align 8
+  %6 = trunc i8 %5 to i1
+  ret i1 %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 4
+  %5 = load i32, ptr %4, align 8
+  ret i32 %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %0, i32 noundef %1) #0 comdat align 2 {
+  %3 = alloca i32, align 4
+  %4 = alloca i32, align 4
+  store i32 %1, ptr %3, align 4
+  store i32 %0, ptr %4, align 4
+  %5 = load i32, ptr %4, align 4
+  %6 = load i32, ptr %3, align 4
+  %7 = icmp eq i32 %5, %6
+  ret i1 %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 1
+  %5 = load ptr, ptr %4, align 8
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %0, i8 noundef %1) #10 comdat align 2 {
+  %3 = alloca i8, align 1
+  %4 = alloca ptr, align 8
+  store i8 %1, ptr %3, align 1
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = call noundef i64 @"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(104) %5) #3
+  %7 = icmp slt i64 0, %6
+  br i1 %7, label %8, label %12
+
+8:                                                ; preds = %2
+  %9 = load i8, ptr %3, align 1
+  %10 = call noundef ptr @"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(104) %5) #3
+  store i8 %9, ptr %10, align 1
+  %11 = call noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %9) #3
+  br label %19
+
+12:                                               ; preds = %2
+  %13 = load i8, ptr %3, align 1
+  %14 = call noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %13) #3
+  %15 = load ptr, ptr %5, align 8
+  %16 = getelementptr inbounds ptr, ptr %15, i64 3
+  %17 = load ptr, ptr %16, align 8
+  %18 = call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(104) %5, i32 noundef %14)
+  br label %19
+
+19:                                               ; preds = %12, %8
+  %20 = phi i32 [ %11, %8 ], [ %18, %12 ]
+  ret i32 %20
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 3
+  %5 = load i8, ptr %4, align 8
+  ret i8 %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #0 comdat align 2 {
+  ret i32 -1
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z"(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i64, ptr %4, align 8
+  %9 = load ptr, ptr %5, align 8
+  %10 = load ptr, ptr %7, align 8
+  %11 = getelementptr inbounds ptr, ptr %10, i64 9
+  %12 = load ptr, ptr %11, align 8
+  %13 = call noundef i64 %12(ptr noundef nonnull align 8 dereferenceable(104) %7, ptr noundef %9, i64 noundef %8)
+  ret i64 %13
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %0, i64 noundef %1) #0 comdat align 2 {
+  %3 = alloca i64, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca i64, align 8
+  store i64 %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::ios_base", ptr %6, i32 0, i32 6
+  %8 = load i64, ptr %7, align 8
+  store i64 %8, ptr %5, align 8
+  %9 = load i64, ptr %3, align 8
+  %10 = getelementptr inbounds nuw %"class.std::ios_base", ptr %6, i32 0, i32 6
+  store i64 %9, ptr %10, align 8
+  %11 = load i64, ptr %5, align 8
+  ret i64 %11
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
+  %4 = alloca i8, align 1
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = zext i1 %2 to i8
+  store i8 %7, ptr %4, align 1
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i8, ptr %4, align 1
+  %10 = trunc i8 %9 to i1
+  %11 = call noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %8) #3
+  %12 = load i32, ptr %5, align 4
+  %13 = or i32 %11, %12
+  call void @"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %8, i32 noundef %13, i1 noundef zeroext %10)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  %3 = alloca i8, align 1
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %5 unwind label %16
+
+5:                                                ; preds = %1
+  %6 = call noundef i32 @"?uncaught_exceptions at std@@YAHXZ"() #3
+  %7 = icmp eq i32 %6, 0
+  %8 = zext i1 %7 to i8
+  store i8 %8, ptr %3, align 1
+  %9 = load i8, ptr %3, align 1
+  %10 = trunc i8 %9 to i1
+  br i1 %10, label %11, label %14
+
+11:                                               ; preds = %5
+  %12 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %4, i32 0, i32 0
+  %13 = load ptr, ptr %12, align 8, !nonnull !16, !align !17
+  call void @"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
+  br label %14
+
+14:                                               ; preds = %11, %5
+  invoke void @llvm.seh.scope.end()
+          to label %15 unwind label %16
+
+15:                                               ; preds = %14
+  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3
+  ret void
+
+16:                                               ; preds = %14, %1
+  %17 = cleanuppad within none []
+  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3 [ "funclet"(token %17) ]
+  cleanupret from %17 unwind to caller
+}
+
+; Function Attrs: nounwind
+declare dso_local i64 @strlen(ptr noundef) #19
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %4, align 8
+  store ptr %0, ptr %5, align 8
+  %7 = load ptr, ptr %5, align 8
+  store ptr %7, ptr %3, align 8
+  %8 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %7, i32 0, i32 0
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr %9, ptr %8, align 8
+  %10 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %7, i32 0, i32 0
+  %11 = load ptr, ptr %10, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds i8, ptr %11, i64 0
+  %13 = load ptr, ptr %12, align 8
+  %14 = getelementptr inbounds i32, ptr %13, i32 1
+  %15 = load i32, ptr %14, align 4
+  %16 = sext i32 %15 to i64
+  %17 = add nsw i64 0, %16
+  %18 = getelementptr inbounds i8, ptr %11, i64 %17
+  %19 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %18) #3
+  store ptr %19, ptr %6, align 8
+  %20 = load ptr, ptr %6, align 8
+  %21 = icmp ne ptr %20, null
+  br i1 %21, label %22, label %27
+
+22:                                               ; preds = %2
+  %23 = load ptr, ptr %6, align 8
+  %24 = load ptr, ptr %23, align 8
+  %25 = getelementptr inbounds ptr, ptr %24, i64 1
+  %26 = load ptr, ptr %25, align 8
+  call void %26(ptr noundef nonnull align 8 dereferenceable(104) %23)
+  br label %27
+
+27:                                               ; preds = %22, %2
+  %28 = load ptr, ptr %3, align 8
+  ret ptr %28
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = call noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %3) #3
+  %5 = icmp eq i32 %4, 0
+  ret i1 %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 2
+  %5 = load ptr, ptr %4, align 8
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  %4 = alloca %"class.std::basic_ostream<char>::sentry", align 8
+  %5 = alloca i32, align 4
+  store ptr %0, ptr %2, align 8
+  %6 = load ptr, ptr %2, align 8
+  %7 = getelementptr inbounds i8, ptr %6, i64 0
+  %8 = load ptr, ptr %7, align 8
+  %9 = getelementptr inbounds i32, ptr %8, i32 1
+  %10 = load i32, ptr %9, align 4
+  %11 = sext i32 %10 to i64
+  %12 = add nsw i64 0, %11
+  %13 = getelementptr inbounds i8, ptr %6, i64 %12
+  %14 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %13) #3
+  store ptr %14, ptr %3, align 8
+  %15 = load ptr, ptr %3, align 8
+  %16 = icmp ne ptr %15, null
+  br i1 %16, label %17, label %60
+
+17:                                               ; preds = %1
+  %18 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %6)
+  invoke void @llvm.seh.scope.begin()
+          to label %19 unwind label %58
+
+19:                                               ; preds = %17
+  %20 = invoke noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4)
+          to label %21 unwind label %58
+
+21:                                               ; preds = %19
+  br i1 %20, label %22, label %56
+
+22:                                               ; preds = %21
+  store i32 0, ptr %5, align 4
+  invoke void @llvm.seh.try.begin()
+          to label %23 unwind label %26
+
+23:                                               ; preds = %22
+  %24 = load ptr, ptr %3, align 8
+  %25 = invoke noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %24)
+          to label %50 unwind label %26
+
+26:                                               ; preds = %23, %22
+  %27 = catchswitch within none [label %28] unwind label %58
+
+28:                                               ; preds = %26
+  %29 = catchpad within %27 [ptr null, i32 0, ptr null]
+  %30 = getelementptr inbounds i8, ptr %6, i64 0
+  %31 = load ptr, ptr %30, align 8
+  %32 = getelementptr inbounds i32, ptr %31, i32 1
+  %33 = load i32, ptr %32, align 4
+  %34 = sext i32 %33 to i64
+  %35 = add nsw i64 0, %34
+  %36 = getelementptr inbounds i8, ptr %6, i64 %35
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %36, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %29) ]
+          to label %37 unwind label %58
+
+37:                                               ; preds = %28
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %29) ]
+          to label %38 unwind label %58
+
+38:                                               ; preds = %37
+  catchret from %29 to label %39
+
+39:                                               ; preds = %38
+  br label %40
+
+40:                                               ; preds = %39, %55
+  %41 = getelementptr inbounds i8, ptr %6, i64 0
+  %42 = load ptr, ptr %41, align 8
+  %43 = getelementptr inbounds i32, ptr %42, i32 1
+  %44 = load i32, ptr %43, align 4
+  %45 = sext i32 %44 to i64
+  %46 = add nsw i64 0, %45
+  %47 = getelementptr inbounds i8, ptr %6, i64 %46
+  %48 = load i32, ptr %5, align 4
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %47, i32 noundef %48, i1 noundef zeroext false)
+          to label %49 unwind label %58
+
+49:                                               ; preds = %40
+  br label %56
+
+50:                                               ; preds = %23
+  %51 = icmp eq i32 %25, -1
+  br i1 %51, label %52, label %55
+
+52:                                               ; preds = %50
+  %53 = load i32, ptr %5, align 4
+  %54 = or i32 %53, 4
+  store i32 %54, ptr %5, align 4
+  br label %55
+
+55:                                               ; preds = %52, %50
+  br label %40
+
+56:                                               ; preds = %49, %21
+  invoke void @llvm.seh.scope.end()
+          to label %57 unwind label %58
+
+57:                                               ; preds = %56
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
+  br label %60
+
+58:                                               ; preds = %56, %40, %37, %28, %26, %19, %17
+  %59 = cleanuppad within none []
+  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3 [ "funclet"(token %59) ]
+  cleanupret from %59 unwind to caller
+
+60:                                               ; preds = %57, %1
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %7 = getelementptr inbounds i8, ptr %6, i64 0
+  %8 = load ptr, ptr %7, align 8
+  %9 = getelementptr inbounds i32, ptr %8, i32 1
+  %10 = load i32, ptr %9, align 4
+  %11 = sext i32 %10 to i64
+  %12 = add nsw i64 0, %11
+  %13 = getelementptr inbounds i8, ptr %6, i64 %12
+  %14 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %13) #3
+  store ptr %14, ptr %3, align 8
+  %15 = load ptr, ptr %3, align 8
+  %16 = icmp ne ptr %15, null
+  br i1 %16, label %17, label %22
+
+17:                                               ; preds = %1
+  %18 = load ptr, ptr %3, align 8
+  %19 = load ptr, ptr %18, align 8
+  %20 = getelementptr inbounds ptr, ptr %19, i64 2
+  %21 = load ptr, ptr %20, align 8
+  call void %21(ptr noundef nonnull align 8 dereferenceable(104) %18)
+  br label %22
+
+22:                                               ; preds = %17, %1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 2
+  %5 = load i32, ptr %4, align 8
+  ret i32 %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #10 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = load ptr, ptr %3, align 8
+  %5 = getelementptr inbounds ptr, ptr %4, i64 13
+  %6 = load ptr, ptr %5, align 8
+  %7 = call noundef i32 %6(ptr noundef nonnull align 8 dereferenceable(104) %3)
+  ret i32 %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %5, align 8
+  %7 = icmp ne ptr %6, null
+  br i1 %7, label %8, label %12
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 12
+  %10 = load ptr, ptr %9, align 8
+  %11 = load i32, ptr %10, align 4
+  br label %13
+
+12:                                               ; preds = %1
+  br label %13
+
+13:                                               ; preds = %12, %8
+  %14 = phi i32 [ %11, %8 ], [ 0, %12 ]
+  %15 = sext i32 %14 to i64
+  ret i64 %15
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %0) #0 comdat align 2 {
+  %2 = alloca i8, align 1
+  store i8 %0, ptr %2, align 1
+  %3 = load i8, ptr %2, align 1
+  %4 = zext i8 %3 to i32
+  ret i32 %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 12
+  %5 = load ptr, ptr %4, align 8
+  %6 = load i32, ptr %5, align 4
+  %7 = add nsw i32 %6, -1
+  store i32 %7, ptr %5, align 4
+  %8 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 8
+  %9 = load ptr, ptr %8, align 8
+  %10 = load ptr, ptr %9, align 8
+  %11 = getelementptr inbounds nuw i8, ptr %10, i32 1
+  store ptr %11, ptr %9, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
+  %4 = alloca i8, align 1
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = zext i1 %2 to i8
+  store i8 %7, ptr %4, align 1
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i8, ptr %4, align 1
+  %10 = trunc i8 %9 to i1
+  %11 = load i32, ptr %5, align 4
+  %12 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %8, i32 0, i32 1
+  %13 = load ptr, ptr %12, align 8
+  %14 = icmp ne ptr %13, null
+  %15 = zext i1 %14 to i64
+  %16 = select i1 %14, i32 0, i32 4
+  %17 = or i32 %11, %16
+  call void @"?clear at ios_base@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(72) %8, i32 noundef %17, i1 noundef zeroext %10)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?clear at ios_base@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
+  %4 = alloca i8, align 1
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = alloca i32, align 4
+  %8 = alloca ptr, align 8
+  %9 = alloca %"class.std::ios_base::failure", align 8
+  %10 = alloca %"class.std::error_code", align 8
+  %11 = zext i1 %2 to i8
+  store i8 %11, ptr %4, align 1
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %12 = load ptr, ptr %6, align 8
+  %13 = load i32, ptr %5, align 4
+  %14 = and i32 %13, 23
+  store i32 %14, ptr %5, align 4
+  %15 = load i32, ptr %5, align 4
+  %16 = getelementptr inbounds nuw %"class.std::ios_base", ptr %12, i32 0, i32 2
+  store i32 %15, ptr %16, align 8
+  %17 = load i32, ptr %5, align 4
+  %18 = getelementptr inbounds nuw %"class.std::ios_base", ptr %12, i32 0, i32 3
+  %19 = load i32, ptr %18, align 4
+  %20 = and i32 %17, %19
+  store i32 %20, ptr %7, align 4
+  %21 = load i32, ptr %7, align 4
+  %22 = icmp ne i32 %21, 0
+  br i1 %22, label %23, label %42
+
+23:                                               ; preds = %3
+  %24 = load i8, ptr %4, align 1
+  %25 = trunc i8 %24 to i1
+  br i1 %25, label %26, label %27
+
+26:                                               ; preds = %23
+  call void @_CxxThrowException(ptr null, ptr null) #22
+  unreachable
+
+27:                                               ; preds = %23
+  %28 = load i32, ptr %7, align 4
+  %29 = and i32 %28, 4
+  %30 = icmp ne i32 %29, 0
+  br i1 %30, label %31, label %32
+
+31:                                               ; preds = %27
+  store ptr @"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@", ptr %8, align 8
+  br label %39
+
+32:                                               ; preds = %27
+  %33 = load i32, ptr %7, align 4
+  %34 = and i32 %33, 2
+  %35 = icmp ne i32 %34, 0
+  br i1 %35, label %36, label %37
+
+36:                                               ; preds = %32
+  store ptr @"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@", ptr %8, align 8
+  br label %38
+
+37:                                               ; preds = %32
+  store ptr @"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@", ptr %8, align 8
+  br label %38
+
+38:                                               ; preds = %37, %36
+  br label %39
+
+39:                                               ; preds = %38, %31
+  call void @"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z"(ptr dead_on_unwind writable sret(%"class.std::error_code") align 8 %10, i32 noundef 1) #3
+  %40 = load ptr, ptr %8, align 8
+  %41 = call noundef ptr @"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(16) %10)
+  call void @_CxxThrowException(ptr %9, ptr @"_TI5?AVfailure at ios_base@std@@") #22
+  unreachable
+
+42:                                               ; preds = %3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::error_code") align 8 %0, i32 noundef %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  store ptr %0, ptr %3, align 8
+  store i32 %1, ptr %4, align 4
+  %5 = call noundef nonnull align 8 dereferenceable(16) ptr @"?iostream_category at std@@YAAEBVerror_category at 1@XZ"() #3
+  %6 = load i32, ptr %4, align 4
+  %7 = call noundef ptr @"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %6, ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"class.std::error_code", align 8
+  store ptr %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load ptr, ptr %5, align 8
+  %10 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %10, i64 16, i1 false)
+  %11 = call noundef ptr @"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z"(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %7, ptr noundef %9)
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %14
+
+12:                                               ; preds = %3
+  store ptr @"??_7failure at ios_base@std@@6B@", ptr %8, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %13 unwind label %14
+
+13:                                               ; preds = %12
+  ret ptr %8
+
+14:                                               ; preds = %12, %3
+  %15 = cleanuppad within none []
+  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %8) #3 [ "funclet"(token %15) ]
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0failure at ios_base@std@@QEAA at AEBV012@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0system_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7failure at ios_base@std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0system_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0_System_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7system_error at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_System_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %13
+
+8:                                                ; preds = %2
+  store ptr @"??_7_System_error at std@@6B@", ptr %5, align 8
+  %9 = getelementptr inbounds nuw %"class.std::_System_error", ptr %5, i32 0, i32 1
+  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %11 = getelementptr inbounds nuw %"class.std::_System_error", ptr %10, i32 0, i32 1
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %11, i64 16, i1 false)
+  invoke void @llvm.seh.scope.end()
+          to label %12 unwind label %13
+
+12:                                               ; preds = %8
+  ret ptr %5
+
+13:                                               ; preds = %8, %2
+  %14 = cleanuppad within none []
+  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %14) ]
+  cleanupret from %14 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1failure at ios_base@std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?iostream_category at std@@YAAEBVerror_category at 1@XZ"() #0 comdat {
+  %1 = call noundef nonnull align 8 dereferenceable(16) ptr @"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ"() #3
+  ret ptr %1
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  store ptr %2, ptr %4, align 8
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = getelementptr inbounds nuw %"class.std::error_code", ptr %7, i32 0, i32 0
+  %9 = load i32, ptr %5, align 4
+  store i32 %9, ptr %8, align 8
+  %10 = getelementptr inbounds nuw %"class.std::error_code", ptr %7, i32 0, i32 1
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr %11, ptr %10, align 8
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ"() #0 comdat {
+  ret ptr @"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B"
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1_Iostream_error_category2 at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 16) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 16) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?name at _Iostream_error_category2@std@@UEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr @"??_C at _08LLGCOLLL@iostream?$AA@"
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %1, i32 noundef %2) unnamed_addr #10 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = alloca i64, align 8
+  store ptr %1, ptr %4, align 8
+  store i32 %2, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load i32, ptr %5, align 4
+  %10 = icmp eq i32 %9, 1
+  br i1 %10, label %11, label %13
+
+11:                                               ; preds = %3
+  store i64 21, ptr %7, align 8
+  %12 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef @"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB", i64 noundef 21)
+  br label %17
+
+13:                                               ; preds = %3
+  %14 = load i32, ptr %5, align 4
+  %15 = call noundef ptr @"?_Syserror_map at std@@YAPEBDH at Z"(i32 noundef %14)
+  %16 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %15)
+  br label %17
+
+17:                                               ; preds = %13, %11
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::error_condition") align 8 %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %4, align 8
+  store i32 %2, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i32, ptr %5, align 4
+  %9 = call noundef ptr @"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %8, ptr noundef nonnull align 8 dereferenceable(16) %7) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i32 %2, ptr %4, align 4
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %9 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3
+  %10 = call noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %9) #3
+  br i1 %10, label %11, label %16
+
+11:                                               ; preds = %3
+  %12 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
+  %13 = call noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %12) #3
+  %14 = load i32, ptr %4, align 4
+  %15 = icmp eq i32 %13, %14
+  br label %16
+
+16:                                               ; preds = %11, %3
+  %17 = phi i1 [ false, %3 ], [ %15, %11 ]
+  ret i1 %17
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  %7 = alloca %"class.std::error_condition", align 8
+  store ptr %2, ptr %4, align 8
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %10 = load i32, ptr %5, align 4
+  %11 = load ptr, ptr %8, align 8
+  %12 = getelementptr inbounds ptr, ptr %11, i64 3
+  %13 = load ptr, ptr %12, align 8
+  call void %13(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr dead_on_unwind writable sret(%"class.std::error_condition") align 8 %7, i32 noundef %10) #3
+  %14 = call noundef zeroext i1 @"??8std@@YA_NAEBVerror_condition at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %9) #3
+  ret i1 %14
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1_Iostream_error_category2 at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = getelementptr inbounds nuw %"class.std::basic_string", ptr %8, i32 0, i32 0
+  %10 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %7, i32 0, i32 0
+  %11 = load i8, ptr %10, align 1
+  %12 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 %11) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %13 unwind label %18
+
+13:                                               ; preds = %3
+  %14 = load i64, ptr %4, align 8
+  %15 = load ptr, ptr %5, align 8
+  invoke void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %15, i64 noundef %14)
+          to label %16 unwind label %18
+
+16:                                               ; preds = %13
+  invoke void @llvm.seh.scope.end()
+          to label %17 unwind label %18
+
+17:                                               ; preds = %16
+  ret ptr %8
+
+18:                                               ; preds = %16, %13, %3
+  %19 = cleanuppad within none []
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind to caller
+}
+
+declare dso_local noundef ptr @"?_Syserror_map at std@@YAPEBDH at Z"(i32 noundef) #14
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
+  %8 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %5, i32 0, i32 0
+  %9 = load i8, ptr %8, align 1
+  %10 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 %9) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %11 unwind label %18
+
+11:                                               ; preds = %2
+  %12 = load ptr, ptr %3, align 8
+  %13 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %12) #3
+  %14 = call noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %13) #3
+  %15 = load ptr, ptr %3, align 8
+  invoke void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %15, i64 noundef %14)
+          to label %16 unwind label %18
+
+16:                                               ; preds = %11
+  invoke void @llvm.seh.scope.end()
+          to label %17 unwind label %18
+
+17:                                               ; preds = %16
+  ret ptr %6
+
+18:                                               ; preds = %16, %11, %2
+  %19 = cleanuppad within none []
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, i8 %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
+  store i8 %1, ptr %5, align 1
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = call noundef ptr @"??0?$allocator at D@std@@QEAA at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
+  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %6, i32 0, i32 0
+  %9 = call noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %10 unwind label %12
+
+10:                                               ; preds = %2
+  invoke void @llvm.seh.scope.end()
+          to label %11 unwind label %12
+
+11:                                               ; preds = %10
+  ret ptr %6
+
+12:                                               ; preds = %10, %2
+  %13 = cleanuppad within none []
+  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %13) ]
+  cleanupret from %13 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca ptr, align 8
+  %9 = alloca ptr, align 8
+  %10 = alloca %"struct.std::_Fake_proxy_ptr_impl", align 1
+  %11 = alloca i8, align 1
+  %12 = alloca i64, align 8
+  %13 = alloca ptr, align 8
+  %14 = alloca i8, align 1
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %15 = load ptr, ptr %6, align 8
+  %16 = getelementptr inbounds nuw %"class.std::basic_string", ptr %15, i32 0, i32 0
+  %17 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %16, i32 0, i32 0
+  store ptr %17, ptr %7, align 8
+  %18 = load i64, ptr %4, align 8
+  %19 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %15) #3
+  %20 = icmp ugt i64 %18, %19
+  br i1 %20, label %21, label %22
+
+21:                                               ; preds = %3
+  call void @"?_Xlen_string at std@@YAXXZ"() #22
+  unreachable
+
+22:                                               ; preds = %3
+  %23 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %15) #3
+  store ptr %23, ptr %8, align 8
+  store ptr @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr %9, align 8
+  %24 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %25 = call noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr noundef nonnull align 1 dereferenceable(1) %24) #3
+  %26 = load i64, ptr %4, align 8
+  %27 = icmp ule i64 %26, 15
+  br i1 %27, label %28, label %44
+
+28:                                               ; preds = %22
+  %29 = load i64, ptr %4, align 8
+  %30 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 1
+  store i64 %29, ptr %31, align 8
+  %32 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %33 = getelementptr inbounds nuw %"class.std::_String_val", ptr %32, i32 0, i32 2
+  store i64 15, ptr %33, align 8
+  %34 = load i64, ptr %4, align 8
+  %35 = load ptr, ptr %5, align 8
+  %36 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %37 = getelementptr inbounds nuw %"class.std::_String_val", ptr %36, i32 0, i32 0
+  %38 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
+  %39 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %38, ptr noundef %35, i64 noundef %34) #3
+  store i8 0, ptr %11, align 1
+  %40 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %41 = getelementptr inbounds nuw %"class.std::_String_val", ptr %40, i32 0, i32 0
+  %42 = load i64, ptr %4, align 8
+  %43 = getelementptr inbounds nuw [16 x i8], ptr %41, i64 0, i64 %42
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef nonnull align 1 dereferenceable(1) %11) #3
+  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br label %68
+
+44:                                               ; preds = %22
+  %45 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %46 = getelementptr inbounds nuw %"class.std::_String_val", ptr %45, i32 0, i32 2
+  store i64 15, ptr %46, align 8
+  %47 = load i64, ptr %4, align 8
+  %48 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef %47) #3
+  store i64 %48, ptr %12, align 8
+  %49 = load ptr, ptr %8, align 8, !nonnull !16
+  %50 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %49, ptr noundef nonnull align 8 dereferenceable(8) %12)
+  store ptr %50, ptr %13, align 8
+  %51 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %52 = getelementptr inbounds nuw %"class.std::_String_val", ptr %51, i32 0, i32 0
+  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %13) #3
+  %53 = load i64, ptr %4, align 8
+  %54 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %55 = getelementptr inbounds nuw %"class.std::_String_val", ptr %54, i32 0, i32 1
+  store i64 %53, ptr %55, align 8
+  %56 = load i64, ptr %12, align 8
+  %57 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %58 = getelementptr inbounds nuw %"class.std::_String_val", ptr %57, i32 0, i32 2
+  store i64 %56, ptr %58, align 8
+  %59 = load i64, ptr %4, align 8
+  %60 = load ptr, ptr %5, align 8
+  %61 = load ptr, ptr %13, align 8
+  %62 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %61) #3
+  %63 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %62, ptr noundef %60, i64 noundef %59) #3
+  store i8 0, ptr %14, align 1
+  %64 = load ptr, ptr %13, align 8
+  %65 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %64) #3
+  %66 = load i64, ptr %4, align 8
+  %67 = getelementptr inbounds nuw i8, ptr %65, i64 %66
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %67, ptr noundef nonnull align 1 dereferenceable(1) %14) #3
+  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br label %68
+
+68:                                               ; preds = %44, %28
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %7
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %7
+
+5:                                                ; preds = %4
+  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %3, i32 0, i32 0
+  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
+  ret void
+
+7:                                                ; preds = %4, %1
+  %8 = cleanuppad within none []
+  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %3, i32 0, i32 0
+  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %8) ]
+  cleanupret from %8 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$allocator at D@std@@QEAA at XZ"(ptr noundef nonnull returned align 1 dereferenceable(1) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
+  %5 = call noundef ptr @"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %6 unwind label %10
+
+6:                                                ; preds = %1
+  %7 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 1
+  store i64 0, ptr %7, align 8
+  %8 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 2
+  store i64 0, ptr %8, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %6
+  ret ptr %3
+
+10:                                               ; preds = %6, %1
+  %11 = cleanuppad within none []
+  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %7
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %7
+
+5:                                                ; preds = %4
+  %6 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
+  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
+  ret void
+
+7:                                                ; preds = %4, %1
+  %8 = cleanuppad within none []
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
+  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %9) #3 [ "funclet"(token %8) ]
+  cleanupret from %8 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 16, i1 false)
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca i64, align 8
+  %4 = alloca i64, align 8
+  %5 = alloca i64, align 8
+  %6 = alloca i64, align 8
+  %7 = alloca i64, align 8
+  store ptr %0, ptr %2, align 8
+  %8 = load ptr, ptr %2, align 8
+  %9 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
+  %10 = call noundef i64 @"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %9) #3
+  store i64 %10, ptr %3, align 8
+  store i64 16, ptr %5, align 8
+  %11 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #3
+  %12 = load i64, ptr %11, align 8
+  store i64 %12, ptr %4, align 8
+  %13 = load i64, ptr %4, align 8
+  %14 = sub i64 %13, 1
+  store i64 %14, ptr %6, align 8
+  %15 = call noundef i64 @"?max@?$numeric_limits at _J@std@@SA_JXZ"() #3
+  store i64 %15, ptr %7, align 8
+  %16 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$min at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
+  %17 = load i64, ptr %16, align 8
+  ret i64 %17
+}
+
+; Function Attrs: mustprogress noinline noreturn optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Xlen_string at std@@YAXXZ"() #20 comdat {
+  call void @"?_Xlength_error at std@@YAXPEBD at Z"(ptr noundef @"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@") #22
+  unreachable
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull returned align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load ptr, ptr %5, align 8
+  %9 = load i64, ptr %4, align 8
+  %10 = mul i64 %9, 1
+  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %7, ptr align 1 %8, i64 %10, i1 false)
+  %11 = load ptr, ptr %6, align 8
+  ret ptr %11
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %3, align 8, !nonnull !16
+  %6 = load i8, ptr %5, align 1
+  %7 = load ptr, ptr %4, align 8, !nonnull !16
+  store i8 %6, ptr %7, align 1
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %1) #0 comdat align 2 {
+  %3 = alloca i64, align 8
+  %4 = alloca ptr, align 8
+  store i64 %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
+  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %5, i32 0, i32 0
+  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %7, i32 0, i32 0
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 2
+  %10 = load i64, ptr %9, align 8
+  %11 = load i64, ptr %3, align 8
+  %12 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z"(i64 noundef %11, i64 noundef %10, i64 noundef %6) #3
+  ret i64 %12
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = load i64, ptr %6, align 8
+  %8 = add i64 %7, 1
+  store i64 %8, ptr %6, align 8
+  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %10 = load ptr, ptr %4, align 8, !nonnull !16
+  %11 = call noundef ptr @"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 8 dereferenceable(8) %9)
+  store ptr %11, ptr %5, align 8
+  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %13 = load i64, ptr %12, align 8
+  %14 = add i64 %13, -1
+  store i64 %14, ptr %12, align 8
+  %15 = load ptr, ptr %5, align 8
+  ret ptr %15
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  ret i64 -1
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %6 = load i64, ptr %5, align 8
+  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %8 = load i64, ptr %7, align 8
+  %9 = icmp ult i64 %6, %8
+  br i1 %9, label %10, label %12
+
+10:                                               ; preds = %2
+  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  br label %14
+
+12:                                               ; preds = %2
+  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  br label %14
+
+14:                                               ; preds = %12, %10
+  %15 = phi ptr [ %11, %10 ], [ %13, %12 ]
+  ret ptr %15
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$min at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %6 = load i64, ptr %5, align 8
+  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %8 = load i64, ptr %7, align 8
+  %9 = icmp ult i64 %6, %8
+  br i1 %9, label %10, label %12
+
+10:                                               ; preds = %2
+  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  br label %14
+
+12:                                               ; preds = %2
+  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  br label %14
+
+14:                                               ; preds = %12, %10
+  %15 = phi ptr [ %11, %10 ], [ %13, %12 ]
+  ret ptr %15
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?max@?$numeric_limits at _J@std@@SA_JXZ"() #0 comdat align 2 {
+  ret i64 9223372036854775807
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: noreturn
+declare dso_local void @"?_Xlength_error at std@@YAXPEBD at Z"(ptr noundef) #17
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z"(i64 noundef %0, i64 noundef %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca i64, align 8
+  %6 = alloca i64, align 8
+  %7 = alloca i64, align 8
+  %8 = alloca i64, align 8
+  %9 = alloca i64, align 8
+  store i64 %2, ptr %5, align 8
+  store i64 %1, ptr %6, align 8
+  store i64 %0, ptr %7, align 8
+  %10 = load i64, ptr %7, align 8
+  %11 = or i64 %10, 15
+  store i64 %11, ptr %8, align 8
+  %12 = load i64, ptr %8, align 8
+  %13 = load i64, ptr %5, align 8
+  %14 = icmp ugt i64 %12, %13
+  br i1 %14, label %15, label %17
+
+15:                                               ; preds = %3
+  %16 = load i64, ptr %5, align 8
+  store i64 %16, ptr %4, align 8
+  br label %33
+
+17:                                               ; preds = %3
+  %18 = load i64, ptr %6, align 8
+  %19 = load i64, ptr %5, align 8
+  %20 = load i64, ptr %6, align 8
+  %21 = udiv i64 %20, 2
+  %22 = sub i64 %19, %21
+  %23 = icmp ugt i64 %18, %22
+  br i1 %23, label %24, label %26
+
+24:                                               ; preds = %17
+  %25 = load i64, ptr %5, align 8
+  store i64 %25, ptr %4, align 8
+  br label %33
+
+26:                                               ; preds = %17
+  %27 = load i64, ptr %6, align 8
+  %28 = load i64, ptr %6, align 8
+  %29 = udiv i64 %28, 2
+  %30 = add i64 %27, %29
+  store i64 %30, ptr %9, align 8
+  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #3
+  %32 = load i64, ptr %31, align 8
+  store i64 %32, ptr %4, align 8
+  br label %33
+
+33:                                               ; preds = %26, %24, %15
+  %34 = load i64, ptr %4, align 8
+  ret i64 %34
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8, !nonnull !16
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = load i64, ptr %6, align 8
+  %8 = call noundef ptr @"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %5, i64 noundef %7)
+  ret ptr %8
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1) #10 comdat align 2 {
+  %3 = alloca i64, align 8
+  %4 = alloca ptr, align 8
+  store i64 %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load i64, ptr %3, align 8
+  %7 = call noundef i64 @"??$_Get_size_of_n@$00 at std@@YA_K_K at Z"(i64 noundef %6)
+  %8 = call noundef ptr @"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z"(i64 noundef %7)
+  ret ptr %8
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z"(i64 noundef %0) #10 comdat {
+  %2 = alloca ptr, align 8
+  %3 = alloca i64, align 8
+  store i64 %0, ptr %3, align 8
+  %4 = load i64, ptr %3, align 8
+  %5 = icmp uge i64 %4, 4096
+  br i1 %5, label %6, label %9
+
+6:                                                ; preds = %1
+  %7 = load i64, ptr %3, align 8
+  %8 = call noundef ptr @"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z"(i64 noundef %7)
+  store ptr %8, ptr %2, align 8
+  br label %16
+
+9:                                                ; preds = %1
+  %10 = load i64, ptr %3, align 8
+  %11 = icmp ne i64 %10, 0
+  br i1 %11, label %12, label %15
+
+12:                                               ; preds = %9
+  %13 = load i64, ptr %3, align 8
+  %14 = call noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %13)
+  store ptr %14, ptr %2, align 8
+  br label %16
+
+15:                                               ; preds = %9
+  store ptr null, ptr %2, align 8
+  br label %16
+
+16:                                               ; preds = %15, %12, %6
+  %17 = load ptr, ptr %2, align 8
+  ret ptr %17
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"??$_Get_size_of_n@$00 at std@@YA_K_K at Z"(i64 noundef %0) #0 comdat {
+  %2 = alloca i64, align 8
+  %3 = alloca i8, align 1
+  store i64 %0, ptr %2, align 8
+  store i8 0, ptr %3, align 1
+  %4 = load i64, ptr %2, align 8
+  %5 = mul i64 %4, 1
+  ret i64 %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z"(i64 noundef %0) #10 comdat {
+  %2 = alloca i64, align 8
+  %3 = alloca i64, align 8
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  store i64 %0, ptr %2, align 8
+  %6 = load i64, ptr %2, align 8
+  %7 = add i64 39, %6
+  store i64 %7, ptr %3, align 8
+  %8 = load i64, ptr %3, align 8
+  %9 = load i64, ptr %2, align 8
+  %10 = icmp ule i64 %8, %9
+  br i1 %10, label %11, label %12
+
+11:                                               ; preds = %1
+  call void @"?_Throw_bad_array_new_length at std@@YAXXZ"() #22
+  unreachable
+
+12:                                               ; preds = %1
+  %13 = load i64, ptr %3, align 8
+  %14 = call noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %13)
+  %15 = ptrtoint ptr %14 to i64
+  store i64 %15, ptr %4, align 8
+  br label %16
+
+16:                                               ; preds = %12
+  %17 = load i64, ptr %4, align 8
+  %18 = icmp ne i64 %17, 0
+  br i1 %18, label %19, label %20
+
+19:                                               ; preds = %16
+  br label %23
+
+20:                                               ; preds = %16
+  br label %21
+
+21:                                               ; preds = %20
+  call void @_invalid_parameter_noinfo_noreturn() #22
+  unreachable
+
+22:                                               ; No predecessors!
+  br label %23
+
+23:                                               ; preds = %22, %19
+  br label %24
+
+24:                                               ; preds = %23
+  %25 = load i64, ptr %4, align 8
+  %26 = add i64 %25, 39
+  %27 = and i64 %26, -32
+  %28 = inttoptr i64 %27 to ptr
+  store ptr %28, ptr %5, align 8
+  %29 = load i64, ptr %4, align 8
+  %30 = load ptr, ptr %5, align 8
+  %31 = getelementptr inbounds i64, ptr %30, i64 -1
+  store i64 %29, ptr %31, align 8
+  %32 = load ptr, ptr %5, align 8
+  ret ptr %32
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %0) #10 comdat align 2 {
+  %2 = alloca i64, align 8
+  store i64 %0, ptr %2, align 8
+  %3 = load i64, ptr %2, align 8
+  %4 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %3) #21
+  ret ptr %4
+}
+
+; Function Attrs: mustprogress noinline noreturn optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Throw_bad_array_new_length at std@@YAXXZ"() #20 comdat {
+  %1 = alloca %"class.std::bad_array_new_length", align 8
+  %2 = call noundef ptr @"??0bad_array_new_length at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
+  call void @_CxxThrowException(ptr %1, ptr @"_TI3?AVbad_array_new_length at std@@") #22
+  unreachable
+}
+
+; Function Attrs: noreturn
+declare dso_local void @_invalid_parameter_noinfo_noreturn() #17
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0bad_array_new_length at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = call noundef ptr @"??0bad_alloc at std@@AEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef @"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@") #3
+  invoke void @llvm.seh.scope.begin()
+          to label %5 unwind label %7
+
+5:                                                ; preds = %1
+  store ptr @"??_7bad_array_new_length at std@@6B@", ptr %3, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %6 unwind label %7
+
+6:                                                ; preds = %5
+  ret ptr %3
+
+7:                                                ; preds = %5, %1
+  %8 = cleanuppad within none []
+  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %8) ]
+  cleanupret from %8 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0bad_array_new_length at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7bad_array_new_length at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7bad_alloc at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1bad_array_new_length at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0bad_alloc at std@@AEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = call noundef ptr @"??0exception at std@@QEAA at QEBDH@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %6, i32 noundef 1) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %10
+
+8:                                                ; preds = %2
+  store ptr @"??_7bad_alloc at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %10
+
+9:                                                ; preds = %8
+  ret ptr %5
+
+10:                                               ; preds = %8, %2
+  %11 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gbad_array_new_length at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1bad_array_new_length at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at QEBDH@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i32 %2, ptr %4, align 4
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  store ptr @"??_7exception at std@@6B@", ptr %7, align 8
+  %8 = getelementptr inbounds nuw %"class.std::exception", ptr %7, i32 0, i32 1
+  call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 16, i1 false)
+  %9 = load ptr, ptr %5, align 8
+  %10 = getelementptr inbounds nuw %"class.std::exception", ptr %7, i32 0, i32 1
+  %11 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %10, i32 0, i32 0
+  store ptr %9, ptr %11, align 8
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gbad_alloc at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %0) #0 comdat {
+  %2 = alloca i64, align 8
+  store i64 %0, ptr %2, align 8
+  %3 = load i64, ptr %2, align 8
+  ret i64 %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  %6 = alloca ptr, align 8
+  store ptr %2, ptr %4, align 8
+  store i32 %1, ptr %5, align 4
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = getelementptr inbounds nuw %"class.std::error_condition", ptr %7, i32 0, i32 0
+  %9 = load i32, ptr %5, align 4
+  store i32 %9, ptr %8, align 8
+  %10 = getelementptr inbounds nuw %"class.std::error_condition", ptr %7, i32 0, i32 1
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr %11, ptr %10, align 8
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"class.std::error_category", ptr %5, i32 0, i32 1
+  %7 = call noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6) #3
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = getelementptr inbounds nuw %"class.std::error_category", ptr %8, i32 0, i32 1
+  %10 = call noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
+  %11 = icmp eq i64 %7, %10
+  ret i1 %11
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::error_code", ptr %3, i32 0, i32 1
+  %5 = load ptr, ptr %4, align 8
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::error_code", ptr %3, i32 0, i32 0
+  %5 = load i32, ptr %4, align 8
+  ret i32 %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  %4 = load i64, ptr %3, align 8
+  ret i64 %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"??8std@@YA_NAEBVerror_condition at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %6 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %8 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %7) #3
+  %9 = call noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %8) #3
+  br i1 %9, label %10, label %16
+
+10:                                               ; preds = %2
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %12 = call noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %11) #3
+  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %14 = call noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %13) #3
+  %15 = icmp eq i32 %12, %14
+  br label %16
+
+16:                                               ; preds = %10, %2
+  %17 = phi i1 [ false, %2 ], [ %15, %10 ]
+  ret i1 %17
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::error_condition", ptr %3, i32 0, i32 1
+  %5 = load ptr, ptr %4, align 8
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::error_condition", ptr %3, i32 0, i32 0
+  %5 = load i32, ptr %4, align 8
+  ret i32 %5
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"class.std::basic_string", align 8
+  %8 = alloca %"class.std::error_code", align 8
+  store ptr %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %9 = load ptr, ptr %6, align 8
+  %10 = load ptr, ptr %4, align 8
+  %11 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %10)
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %18
+
+12:                                               ; preds = %3
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %8, ptr align 8 %1, i64 16, i1 false)
+  %13 = invoke noundef ptr @"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %8, ptr noundef nonnull align 8 dereferenceable(32) %7)
+          to label %14 unwind label %18
+
+14:                                               ; preds = %12
+  invoke void @llvm.seh.scope.end()
+          to label %15 unwind label %18
+
+15:                                               ; preds = %14
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %16 unwind label %20
+
+16:                                               ; preds = %15
+  store ptr @"??_7system_error at std@@6B@", ptr %9, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %17 unwind label %20
+
+17:                                               ; preds = %16
+  ret ptr %9
+
+18:                                               ; preds = %14, %12, %3
+  %19 = cleanuppad within none []
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind to caller
+
+20:                                               ; preds = %16, %15
+  %21 = cleanuppad within none []
+  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %9) #3 [ "funclet"(token %21) ]
+  cleanupret from %21 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gfailure at ios_base@std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1failure at ios_base@std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"class.std::basic_string", align 8
+  %8 = alloca %"class.std::basic_string", align 8
+  %9 = alloca %"class.std::error_code", align 8
+  store ptr %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %10 = load ptr, ptr %6, align 8
+  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %12 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %11)
+  invoke void @llvm.seh.scope.begin()
+          to label %13 unwind label %22
+
+13:                                               ; preds = %3
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %1, i64 16, i1 false)
+  invoke void @llvm.seh.scope.end()
+          to label %14 unwind label %22
+
+14:                                               ; preds = %13
+  call void @"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z"(ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %7, ptr noundef %9, ptr noundef %8)
+  invoke void @llvm.seh.scope.begin()
+          to label %15 unwind label %24
+
+15:                                               ; preds = %14
+  %16 = invoke noundef ptr @"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(32) %7)
+          to label %17 unwind label %24
+
+17:                                               ; preds = %15
+  invoke void @llvm.seh.scope.end()
+          to label %18 unwind label %24
+
+18:                                               ; preds = %17
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %19 unwind label %26
+
+19:                                               ; preds = %18
+  store ptr @"??_7_System_error at std@@6B@", ptr %10, align 8
+  %20 = getelementptr inbounds nuw %"class.std::_System_error", ptr %10, i32 0, i32 1
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %1, i64 16, i1 false)
+  invoke void @llvm.seh.scope.end()
+          to label %21 unwind label %26
+
+21:                                               ; preds = %19
+  ret ptr %10
+
+22:                                               ; preds = %13, %3
+  %23 = cleanuppad within none []
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %23) ]
+  cleanupret from %23 unwind to caller
+
+24:                                               ; preds = %17, %15, %14
+  %25 = cleanuppad within none []
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %25) ]
+  cleanupret from %25 unwind to caller
+
+26:                                               ; preds = %19, %18
+  %27 = cleanuppad within none []
+  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %10) #3 [ "funclet"(token %27) ]
+  cleanupret from %27 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %7
+
+4:                                                ; preds = %1
+  call void @"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %3) #3
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %7
+
+5:                                                ; preds = %4
+  %6 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
+  ret void
+
+7:                                                ; preds = %4, %1
+  %8 = cleanuppad within none []
+  %9 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %8) ]
+  cleanupret from %8 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %6
+
+4:                                                ; preds = %1
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %6
+
+5:                                                ; preds = %4
+  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
+  ret void
+
+6:                                                ; preds = %4, %1
+  %7 = cleanuppad within none []
+  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
+  cleanupret from %7 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_Gsystem_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %0, ptr noundef %1, ptr noundef %2) #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca %"class.std::basic_string", align 8
+  store ptr %0, ptr %4, align 8
+  store ptr %2, ptr %5, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %24
+
+8:                                                ; preds = %3
+  store ptr %1, ptr %6, align 8
+  %9 = call noundef zeroext i1 @"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3
+  br i1 %9, label %13, label %10
+
+10:                                               ; preds = %8
+  %11 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @"??_C at _02LMMGGCAJ@?3?5?$AA@")
+          to label %12 unwind label %24
+
+12:                                               ; preds = %10
+  br label %13
+
+13:                                               ; preds = %12, %8
+  invoke void @"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %7)
+          to label %14 unwind label %24
+
+14:                                               ; preds = %13
+  invoke void @llvm.seh.scope.begin()
+          to label %15 unwind label %20
+
+15:                                               ; preds = %14
+  %16 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %7)
+          to label %17 unwind label %20
+
+17:                                               ; preds = %15
+  invoke void @llvm.seh.scope.end()
+          to label %18 unwind label %20
+
+18:                                               ; preds = %17
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
+  %19 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %2) #3
+  invoke void @llvm.seh.scope.end()
+          to label %23 unwind label %24
+
+20:                                               ; preds = %17, %15, %14
+  %21 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %21) ]
+          to label %22 unwind label %24
+
+22:                                               ; preds = %20
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %21) ]
+  cleanupret from %21 unwind label %24
+
+23:                                               ; preds = %18
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3
+  ret void
+
+24:                                               ; preds = %18, %22, %20, %13, %10, %3
+  %25 = cleanuppad within none []
+  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3 [ "funclet"(token %25) ]
+  cleanupret from %25 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"class.std::allocator", align 1
+  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
+  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3
+  call void @"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z"(ptr dead_on_unwind writable sret(%"class.std::allocator") align 1 %5, ptr noundef nonnull align 1 dereferenceable(1) %10)
+  %11 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
+  %12 = load i8, ptr %11, align 1
+  %13 = call noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 %12, ptr noundef nonnull align 1 dereferenceable(1) %5) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %14 unwind label %26
+
+14:                                               ; preds = %2
+  %15 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %16 = getelementptr inbounds nuw %"class.std::basic_string", ptr %15, i32 0, i32 0
+  %17 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %16, i32 0, i32 0
+  %18 = getelementptr inbounds nuw %"class.std::_String_val", ptr %17, i32 0, i32 1
+  %19 = load i64, ptr %18, align 8
+  %20 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %21 = getelementptr inbounds nuw %"class.std::basic_string", ptr %20, i32 0, i32 0
+  %22 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %21, i32 0, i32 0
+  %23 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %22) #3
+  invoke void @"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %23, i64 noundef %19)
+          to label %24 unwind label %26
+
+24:                                               ; preds = %14
+  invoke void @llvm.seh.scope.end()
+          to label %25 unwind label %26
+
+25:                                               ; preds = %24
+  ret ptr %7
+
+26:                                               ; preds = %24, %14, %2
+  %27 = cleanuppad within none []
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %27) ]
+  cleanupret from %27 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = call noundef ptr @"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
+  %8 = call noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %7) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %11
+
+9:                                                ; preds = %2
+  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
+  invoke void @llvm.seh.scope.end()
+          to label %10 unwind label %11
+
+10:                                               ; preds = %9
+  ret ptr %5
+
+11:                                               ; preds = %9, %2
+  %12 = cleanuppad within none []
+  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %12) ]
+  cleanupret from %12 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??_G_System_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca i32, align 4
+  %5 = alloca ptr, align 8
+  store i32 %1, ptr %4, align 4
+  store ptr %0, ptr %5, align 8
+  %6 = load ptr, ptr %5, align 8
+  store ptr %6, ptr %3, align 8
+  %7 = load i32, ptr %4, align 4
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %14
+
+8:                                                ; preds = %2
+  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = icmp eq i32 %7, 0
+  br i1 %10, label %12, label %11
+
+11:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
+  br label %12
+
+12:                                               ; preds = %11, %9
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+
+14:                                               ; preds = %8, %2
+  %15 = cleanuppad within none []
+  %16 = icmp eq i32 %7, 0
+  br i1 %16, label %18, label %17
+
+17:                                               ; preds = %14
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
+  br label %18
+
+18:                                               ; preds = %17, %14
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"class.std::_String_val", ptr %5, i32 0, i32 1
+  %7 = load i64, ptr %6, align 8
+  %8 = icmp eq i64 %7, 0
+  ret i1 %8
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1) #10 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %6) #3
+  %8 = call noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %7) #3
+  %9 = load ptr, ptr %3, align 8
+  %10 = call noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %9, i64 noundef %8)
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #10 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
+  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %7, i32 0, i32 0
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 1
+  %10 = load i64, ptr %9, align 8
+  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds nuw %"class.std::basic_string", ptr %11, i32 0, i32 0
+  %13 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %12, i32 0, i32 0
+  %14 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
+  %15 = call noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %14, i64 noundef %10)
+  ret ptr %15
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %1) #10 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  %7 = call noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
+  %8 = load ptr, ptr %6, align 8
+  %9 = getelementptr inbounds ptr, ptr %8, i64 2
+  %10 = load ptr, ptr %9, align 8
+  call void %10(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %1, i32 noundef %7)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
+  %10 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
+  %11 = load i8, ptr %10, align 1
+  %12 = call noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 %11, ptr noundef nonnull align 1 dereferenceable(1) %9) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %13 unwind label %18
+
+13:                                               ; preds = %2
+  %14 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
+  %15 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %14, i32 0, i32 0
+  call void @"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B") #3
+  %16 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %16) #3
+  invoke void @llvm.seh.scope.end()
+          to label %17 unwind label %18
+
+17:                                               ; preds = %13
+  ret ptr %6
+
+18:                                               ; preds = %13, %2
+  %19 = cleanuppad within none []
+  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
+  cleanupret from %19 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
+  %4 = alloca ptr, align 8
+  %5 = alloca i64, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca i64, align 8
+  %9 = alloca ptr, align 8
+  %10 = alloca i8, align 1
+  %11 = alloca %class.anon.11, align 1
+  store i64 %2, ptr %5, align 8
+  store ptr %1, ptr %6, align 8
+  store ptr %0, ptr %7, align 8
+  %12 = load ptr, ptr %7, align 8
+  %13 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
+  %14 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %13, i32 0, i32 0
+  %15 = getelementptr inbounds nuw %"class.std::_String_val", ptr %14, i32 0, i32 1
+  %16 = load i64, ptr %15, align 8
+  store i64 %16, ptr %8, align 8
+  %17 = load i64, ptr %5, align 8
+  %18 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
+  %19 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %18, i32 0, i32 0
+  %20 = getelementptr inbounds nuw %"class.std::_String_val", ptr %19, i32 0, i32 2
+  %21 = load i64, ptr %20, align 8
+  %22 = load i64, ptr %8, align 8
+  %23 = sub i64 %21, %22
+  %24 = icmp ule i64 %17, %23
+  br i1 %24, label %25, label %46
+
+25:                                               ; preds = %3
+  %26 = load i64, ptr %8, align 8
+  %27 = load i64, ptr %5, align 8
+  %28 = add i64 %26, %27
+  %29 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
+  %30 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %29, i32 0, i32 0
+  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 1
+  store i64 %28, ptr %31, align 8
+  %32 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
+  %33 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %32, i32 0, i32 0
+  %34 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(32) %33) #3
+  store ptr %34, ptr %9, align 8
+  %35 = load i64, ptr %5, align 8
+  %36 = load ptr, ptr %6, align 8
+  %37 = load ptr, ptr %9, align 8
+  %38 = load i64, ptr %8, align 8
+  %39 = getelementptr inbounds nuw i8, ptr %37, i64 %38
+  %40 = call noundef ptr @"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %39, ptr noundef %36, i64 noundef %35) #3
+  store i8 0, ptr %10, align 1
+  %41 = load ptr, ptr %9, align 8
+  %42 = load i64, ptr %8, align 8
+  %43 = load i64, ptr %5, align 8
+  %44 = add i64 %42, %43
+  %45 = getelementptr inbounds nuw i8, ptr %41, i64 %44
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  store ptr %12, ptr %4, align 8
+  br label %53
+
+46:                                               ; preds = %3
+  %47 = load i64, ptr %5, align 8
+  %48 = load ptr, ptr %6, align 8
+  %49 = load i64, ptr %5, align 8
+  %50 = getelementptr inbounds nuw %class.anon.11, ptr %11, i32 0, i32 0
+  %51 = load i8, ptr %50, align 1
+  %52 = call noundef nonnull align 8 dereferenceable(32) ptr @"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %49, i8 %51, ptr noundef %48, i64 noundef %47)
+  store ptr %52, ptr %4, align 8
+  br label %53
+
+53:                                               ; preds = %46, %25
+  %54 = load ptr, ptr %4, align 8
+  ret ptr %54
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds [16 x i8], ptr %5, i64 0, i64 0
+  store ptr %6, ptr %3, align 8
+  %7 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
+  br i1 %7, label %8, label %12
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %10) #3
+  store ptr %11, ptr %3, align 8
+  br label %12
+
+12:                                               ; preds = %8, %1
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load ptr, ptr %5, align 8
+  %9 = load i64, ptr %4, align 8
+  %10 = mul i64 %9, 1
+  call void @llvm.memmove.p0.p0.i64(ptr align 1 %7, ptr align 1 %8, i64 %10, i1 false)
+  %11 = load ptr, ptr %6, align 8
+  ret ptr %11
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %1, i8 %2, ptr noundef %3, i64 noundef %4) #10 comdat align 2 {
+  %6 = alloca %class.anon.11, align 1
+  %7 = alloca i64, align 8
+  %8 = alloca ptr, align 8
+  %9 = alloca i64, align 8
+  %10 = alloca ptr, align 8
+  %11 = alloca ptr, align 8
+  %12 = alloca i64, align 8
+  %13 = alloca i64, align 8
+  %14 = alloca i64, align 8
+  %15 = alloca i64, align 8
+  %16 = alloca ptr, align 8
+  %17 = alloca ptr, align 8
+  %18 = alloca ptr, align 8
+  %19 = alloca ptr, align 8
+  %20 = getelementptr inbounds nuw %class.anon.11, ptr %6, i32 0, i32 0
+  store i8 %2, ptr %20, align 1
+  store i64 %4, ptr %7, align 8
+  store ptr %3, ptr %8, align 8
+  store i64 %1, ptr %9, align 8
+  store ptr %0, ptr %10, align 8
+  %21 = load ptr, ptr %10, align 8
+  %22 = getelementptr inbounds nuw %"class.std::basic_string", ptr %21, i32 0, i32 0
+  %23 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %22, i32 0, i32 0
+  store ptr %23, ptr %11, align 8
+  %24 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %25 = getelementptr inbounds nuw %"class.std::_String_val", ptr %24, i32 0, i32 1
+  %26 = load i64, ptr %25, align 8
+  store i64 %26, ptr %12, align 8
+  %27 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %21) #3
+  %28 = load i64, ptr %12, align 8
+  %29 = sub i64 %27, %28
+  %30 = load i64, ptr %9, align 8
+  %31 = icmp ult i64 %29, %30
+  br i1 %31, label %32, label %33
+
+32:                                               ; preds = %5
+  call void @"?_Xlen_string at std@@YAXXZ"() #22
+  unreachable
+
+33:                                               ; preds = %5
+  %34 = load i64, ptr %12, align 8
+  %35 = load i64, ptr %9, align 8
+  %36 = add i64 %34, %35
+  store i64 %36, ptr %13, align 8
+  %37 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %38 = getelementptr inbounds nuw %"class.std::_String_val", ptr %37, i32 0, i32 2
+  %39 = load i64, ptr %38, align 8
+  store i64 %39, ptr %14, align 8
+  %40 = load i64, ptr %13, align 8
+  %41 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %21, i64 noundef %40) #3
+  store i64 %41, ptr %15, align 8
+  %42 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %21) #3
+  store ptr %42, ptr %16, align 8
+  %43 = load ptr, ptr %16, align 8, !nonnull !16
+  %44 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef nonnull align 8 dereferenceable(8) %15)
+  store ptr %44, ptr %17, align 8
+  %45 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  call void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %45) #3
+  %46 = load i64, ptr %13, align 8
+  %47 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %48 = getelementptr inbounds nuw %"class.std::_String_val", ptr %47, i32 0, i32 1
+  store i64 %46, ptr %48, align 8
+  %49 = load i64, ptr %15, align 8
+  %50 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %51 = getelementptr inbounds nuw %"class.std::_String_val", ptr %50, i32 0, i32 2
+  store i64 %49, ptr %51, align 8
+  %52 = load ptr, ptr %17, align 8
+  %53 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %52) #3
+  store ptr %53, ptr %18, align 8
+  %54 = load i64, ptr %14, align 8
+  %55 = icmp ugt i64 %54, 15
+  br i1 %55, label %56, label %72
+
+56:                                               ; preds = %33
+  %57 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %58 = getelementptr inbounds nuw %"class.std::_String_val", ptr %57, i32 0, i32 0
+  %59 = load ptr, ptr %58, align 8
+  store ptr %59, ptr %19, align 8
+  %60 = load i64, ptr %7, align 8
+  %61 = load ptr, ptr %8, align 8
+  %62 = load i64, ptr %12, align 8
+  %63 = load ptr, ptr %19, align 8
+  %64 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %63) #3
+  %65 = load ptr, ptr %18, align 8
+  call void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef %65, ptr noundef %64, i64 noundef %62, ptr noundef %61, i64 noundef %60)
+  %66 = load i64, ptr %14, align 8
+  %67 = load ptr, ptr %19, align 8
+  %68 = load ptr, ptr %16, align 8, !nonnull !16
+  call void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef %67, i64 noundef %66) #3
+  %69 = load ptr, ptr %17, align 8
+  %70 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %71 = getelementptr inbounds nuw %"class.std::_String_val", ptr %70, i32 0, i32 0
+  store ptr %69, ptr %71, align 8
+  br label %82
+
+72:                                               ; preds = %33
+  %73 = load i64, ptr %7, align 8
+  %74 = load ptr, ptr %8, align 8
+  %75 = load i64, ptr %12, align 8
+  %76 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %77 = getelementptr inbounds nuw %"class.std::_String_val", ptr %76, i32 0, i32 0
+  %78 = getelementptr inbounds [16 x i8], ptr %77, i64 0, i64 0
+  %79 = load ptr, ptr %18, align 8
+  call void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef %79, ptr noundef %78, i64 noundef %75, ptr noundef %74, i64 noundef %73)
+  %80 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
+  %81 = getelementptr inbounds nuw %"class.std::_String_val", ptr %80, i32 0, i32 0
+  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %17) #3
+  br label %82
+
+82:                                               ; preds = %72, %56
+  ret ptr %21
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 2
+  %5 = load i64, ptr %4, align 8
+  %6 = icmp ugt i64 %5, 15
+  ret i1 %6
+}
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly captures(none), i64, i1 immarg) #15
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5) #0 comdat align 2 {
+  %7 = alloca i64, align 8
+  %8 = alloca ptr, align 8
+  %9 = alloca i64, align 8
+  %10 = alloca ptr, align 8
+  %11 = alloca ptr, align 8
+  %12 = alloca ptr, align 8
+  %13 = alloca i8, align 1
+  store i64 %5, ptr %7, align 8
+  store ptr %4, ptr %8, align 8
+  store i64 %3, ptr %9, align 8
+  store ptr %2, ptr %10, align 8
+  store ptr %1, ptr %11, align 8
+  store ptr %0, ptr %12, align 8
+  %14 = load ptr, ptr %12, align 8
+  %15 = load i64, ptr %9, align 8
+  %16 = load ptr, ptr %10, align 8
+  %17 = load ptr, ptr %11, align 8
+  %18 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %17, ptr noundef %16, i64 noundef %15) #3
+  %19 = load i64, ptr %7, align 8
+  %20 = load ptr, ptr %8, align 8
+  %21 = load ptr, ptr %11, align 8
+  %22 = load i64, ptr %9, align 8
+  %23 = getelementptr inbounds nuw i8, ptr %21, i64 %22
+  %24 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %23, ptr noundef %20, i64 noundef %19) #3
+  store i8 0, ptr %13, align 1
+  %25 = load ptr, ptr %11, align 8
+  %26 = load i64, ptr %9, align 8
+  %27 = load i64, ptr %7, align 8
+  %28 = add i64 %26, %27
+  %29 = getelementptr inbounds nuw i8, ptr %25, i64 %28
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(1) %13) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8, !nonnull !16
+  %8 = load i64, ptr %4, align 8
+  %9 = add i64 %8, 1
+  %10 = load ptr, ptr %5, align 8
+  call void @"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, ptr noundef %10, i64 noundef %9)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %7 = load ptr, ptr %6, align 8
+  %8 = load i64, ptr %4, align 8
+  %9 = mul i64 1, %8
+  %10 = load ptr, ptr %5, align 8
+  call void @"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z"(ptr noundef %10, i64 noundef %9) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z"(ptr noundef %0, i64 noundef %1) #0 comdat {
+  %3 = alloca i64, align 8
+  %4 = alloca ptr, align 8
+  store i64 %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load i64, ptr %3, align 8
+  %6 = icmp uge i64 %5, 4096
+  br i1 %6, label %7, label %8
+
+7:                                                ; preds = %2
+  call void @"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %3)
+  br label %8
+
+8:                                                ; preds = %7, %2
+  %9 = load i64, ptr %3, align 8
+  %10 = load ptr, ptr %4, align 8
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %10, i64 noundef %9) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca i64, align 8
+  %7 = alloca i64, align 8
+  %8 = alloca i64, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %10 = load i64, ptr %9, align 8
+  %11 = add i64 %10, 39
+  store i64 %11, ptr %9, align 8
+  %12 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %13 = load ptr, ptr %12, align 8
+  store ptr %13, ptr %5, align 8
+  %14 = load ptr, ptr %5, align 8
+  %15 = getelementptr inbounds i64, ptr %14, i64 -1
+  %16 = load i64, ptr %15, align 8
+  store i64 %16, ptr %6, align 8
+  store i64 8, ptr %7, align 8
+  %17 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  %18 = load ptr, ptr %17, align 8
+  %19 = ptrtoint ptr %18 to i64
+  %20 = load i64, ptr %6, align 8
+  %21 = sub i64 %19, %20
+  store i64 %21, ptr %8, align 8
+  br label %22
+
+22:                                               ; preds = %2
+  %23 = load i64, ptr %8, align 8
+  %24 = icmp uge i64 %23, 8
+  br i1 %24, label %25, label %29
+
+25:                                               ; preds = %22
+  %26 = load i64, ptr %8, align 8
+  %27 = icmp ule i64 %26, 39
+  br i1 %27, label %28, label %29
+
+28:                                               ; preds = %25
+  br label %32
+
+29:                                               ; preds = %25, %22
+  br label %30
+
+30:                                               ; preds = %29
+  call void @_invalid_parameter_noinfo_noreturn() #22
+  unreachable
+
+31:                                               ; No predecessors!
+  br label %32
+
+32:                                               ; preds = %31, %28
+  br label %33
+
+33:                                               ; preds = %32
+  %34 = load i64, ptr %6, align 8
+  %35 = inttoptr i64 %34 to ptr
+  %36 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
+  store ptr %35, ptr %36, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds [16 x i8], ptr %5, i64 0, i64 0
+  store ptr %6, ptr %3, align 8
+  %7 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
+  br i1 %7, label %8, label %12
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %10) #3
+  store ptr %11, ptr %3, align 8
+  br label %12
+
+12:                                               ; preds = %8, %1
+  %13 = load ptr, ptr %3, align 8
+  ret ptr %13
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %4 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %4, i32 0, i32 0
+  store i8 %1, ptr %7, align 1
+  store ptr %2, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %8 = load ptr, ptr %6, align 8
+  %9 = load ptr, ptr %5, align 8, !nonnull !16
+  %10 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
+  %11 = call noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %14
+
+12:                                               ; preds = %3
+  invoke void @llvm.seh.scope.end()
+          to label %13 unwind label %14
+
+13:                                               ; preds = %12
+  ret ptr %8
+
+14:                                               ; preds = %12, %3
+  %15 = cleanuppad within none []
+  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3 [ "funclet"(token %15) ]
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
+  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
+  store ptr %9, ptr %5, align 8
+  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %11 = getelementptr inbounds nuw %"class.std::basic_string", ptr %10, i32 0, i32 0
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %11, i32 0, i32 0
+  store ptr %12, ptr %6, align 8
+  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %13) #3
+  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %14) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
+  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
+  %10 = getelementptr inbounds nuw i8, ptr %9, i64 0
+  store ptr %10, ptr %5, align 8
+  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %12 = getelementptr inbounds nuw %"class.std::basic_string", ptr %11, i32 0, i32 0
+  %13 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %12, i32 0, i32 0
+  %14 = getelementptr inbounds nuw i8, ptr %13, i64 0
+  store ptr %14, ptr %6, align 8
+  %15 = load ptr, ptr %5, align 8
+  %16 = load ptr, ptr %6, align 8
+  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %15, ptr align 1 %16, i64 32, i1 false)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  %4 = alloca i8, align 1
+  store ptr %0, ptr %2, align 8
+  %5 = load ptr, ptr %2, align 8
+  %6 = getelementptr inbounds nuw %"class.std::basic_string", ptr %5, i32 0, i32 0
+  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %6, i32 0, i32 0
+  store ptr %7, ptr %3, align 8
+  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 1
+  store i64 0, ptr %9, align 8
+  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %11 = getelementptr inbounds nuw %"class.std::_String_val", ptr %10, i32 0, i32 2
+  store i64 15, ptr %11, align 8
+  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %12) #3
+  store i8 0, ptr %4, align 1
+  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %14 = getelementptr inbounds nuw %"class.std::_String_val", ptr %13, i32 0, i32 0
+  %15 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %4) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::allocator") align 1 %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8, !nonnull !16
+  ret void
+}
+
+; Function Attrs: mustprogress noinline optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
+  %4 = alloca i64, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca ptr, align 8
+  %9 = alloca ptr, align 8
+  %10 = alloca %"struct.std::_Fake_proxy_ptr_impl", align 1
+  %11 = alloca i64, align 8
+  %12 = alloca ptr, align 8
+  store i64 %2, ptr %4, align 8
+  store ptr %1, ptr %5, align 8
+  store ptr %0, ptr %6, align 8
+  %13 = load ptr, ptr %6, align 8
+  %14 = getelementptr inbounds nuw %"class.std::basic_string", ptr %13, i32 0, i32 0
+  %15 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %14, i32 0, i32 0
+  store ptr %15, ptr %7, align 8
+  %16 = load i64, ptr %4, align 8
+  %17 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
+  %18 = icmp ugt i64 %16, %17
+  br i1 %18, label %19, label %20
+
+19:                                               ; preds = %3
+  call void @"?_Xlen_string at std@@YAXXZ"() #22
+  unreachable
+
+20:                                               ; preds = %3
+  %21 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
+  store ptr %21, ptr %8, align 8
+  store ptr @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr %9, align 8
+  %22 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %23 = call noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr noundef nonnull align 1 dereferenceable(1) %22) #3
+  %24 = load i64, ptr %4, align 8
+  %25 = icmp ule i64 %24, 15
+  br i1 %25, label %26, label %37
+
+26:                                               ; preds = %20
+  %27 = load i64, ptr %4, align 8
+  %28 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %29 = getelementptr inbounds nuw %"class.std::_String_val", ptr %28, i32 0, i32 1
+  store i64 %27, ptr %29, align 8
+  %30 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 2
+  store i64 15, ptr %31, align 8
+  %32 = load ptr, ptr %5, align 8
+  %33 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %34 = getelementptr inbounds nuw %"class.std::_String_val", ptr %33, i32 0, i32 0
+  %35 = getelementptr inbounds [16 x i8], ptr %34, i64 0, i64 0
+  %36 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %35, ptr noundef %32, i64 noundef 16) #3
+  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br label %58
+
+37:                                               ; preds = %20
+  %38 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %39 = getelementptr inbounds nuw %"class.std::_String_val", ptr %38, i32 0, i32 2
+  store i64 15, ptr %39, align 8
+  %40 = load i64, ptr %4, align 8
+  %41 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %40) #3
+  store i64 %41, ptr %11, align 8
+  %42 = load ptr, ptr %8, align 8, !nonnull !16
+  %43 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %42, ptr noundef nonnull align 8 dereferenceable(8) %11)
+  store ptr %43, ptr %12, align 8
+  %44 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %45 = getelementptr inbounds nuw %"class.std::_String_val", ptr %44, i32 0, i32 0
+  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %12) #3
+  %46 = load i64, ptr %4, align 8
+  %47 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %48 = getelementptr inbounds nuw %"class.std::_String_val", ptr %47, i32 0, i32 1
+  store i64 %46, ptr %48, align 8
+  %49 = load i64, ptr %11, align 8
+  %50 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
+  %51 = getelementptr inbounds nuw %"class.std::_String_val", ptr %50, i32 0, i32 2
+  store i64 %49, ptr %51, align 8
+  %52 = load i64, ptr %4, align 8
+  %53 = add i64 %52, 1
+  %54 = load ptr, ptr %5, align 8
+  %55 = load ptr, ptr %12, align 8
+  %56 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %55) #3
+  %57 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %56, ptr noundef %54, i64 noundef %53) #3
+  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  br label %58
+
+58:                                               ; preds = %37, %26
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %4, i32 0, i32 0
+  %6 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
+  ret ptr %6
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca i8, align 1
+  store ptr %0, ptr %2, align 8
+  %7 = load ptr, ptr %2, align 8
+  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
+  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
+  store ptr %9, ptr %3, align 8
+  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
+  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %12 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %11) #3
+  br i1 %12, label %13, label %26
+
+13:                                               ; preds = %1
+  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %15 = getelementptr inbounds nuw %"class.std::_String_val", ptr %14, i32 0, i32 0
+  %16 = load ptr, ptr %15, align 8
+  store ptr %16, ptr %4, align 8
+  %17 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
+  store ptr %17, ptr %5, align 8
+  %18 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %19 = getelementptr inbounds nuw %"class.std::_String_val", ptr %18, i32 0, i32 0
+  call void @"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %19) #3
+  %20 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  call void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %20) #3
+  %21 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %22 = getelementptr inbounds nuw %"class.std::_String_val", ptr %21, i32 0, i32 2
+  %23 = load i64, ptr %22, align 8
+  %24 = load ptr, ptr %4, align 8
+  %25 = load ptr, ptr %5, align 8, !nonnull !16
+  call void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef %24, i64 noundef %23) #3
+  br label %26
+
+26:                                               ; preds = %13, %1
+  %27 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %28 = getelementptr inbounds nuw %"class.std::_String_val", ptr %27, i32 0, i32 1
+  store i64 0, ptr %28, align 8
+  %29 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %30 = getelementptr inbounds nuw %"class.std::_String_val", ptr %29, i32 0, i32 2
+  store i64 15, ptr %30, align 8
+  store i8 0, ptr %6, align 1
+  %31 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
+  %32 = getelementptr inbounds nuw %"class.std::_String_val", ptr %31, i32 0, i32 0
+  %33 = getelementptr inbounds [16 x i8], ptr %32, i64 0, i64 0
+  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef nonnull align 1 dereferenceable(1) %6) #3
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
+  ret void
+}
+
+; Function Attrs: nounwind
+declare dso_local noundef i32 @"?uncaught_exceptions at std@@YAHXZ"() #19
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  invoke void @llvm.seh.try.begin()
+          to label %4 unwind label %44
+
+4:                                                ; preds = %1
+  %5 = getelementptr inbounds i8, ptr %3, i64 0
+  %6 = load ptr, ptr %5, align 8
+  %7 = getelementptr inbounds i32, ptr %6, i32 1
+  %8 = load i32, ptr %7, align 4
+  %9 = sext i32 %8 to i64
+  %10 = add nsw i64 0, %9
+  %11 = getelementptr inbounds i8, ptr %3, i64 %10
+  %12 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %11) #3
+  br i1 %12, label %13, label %52
+
+13:                                               ; preds = %4
+  %14 = getelementptr inbounds i8, ptr %3, i64 0
+  %15 = load ptr, ptr %14, align 8
+  %16 = getelementptr inbounds i32, ptr %15, i32 1
+  %17 = load i32, ptr %16, align 4
+  %18 = sext i32 %17 to i64
+  %19 = add nsw i64 0, %18
+  %20 = getelementptr inbounds i8, ptr %3, i64 %19
+  %21 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %20) #3
+  %22 = and i32 %21, 2
+  %23 = icmp ne i32 %22, 0
+  br i1 %23, label %24, label %52
+
+24:                                               ; preds = %13
+  %25 = getelementptr inbounds i8, ptr %3, i64 0
+  %26 = load ptr, ptr %25, align 8
+  %27 = getelementptr inbounds i32, ptr %26, i32 1
+  %28 = load i32, ptr %27, align 4
+  %29 = sext i32 %28 to i64
+  %30 = add nsw i64 0, %29
+  %31 = getelementptr inbounds i8, ptr %3, i64 %30
+  %32 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %31) #3
+  %33 = invoke noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %32)
+          to label %34 unwind label %44
+
+34:                                               ; preds = %24
+  %35 = icmp eq i32 %33, -1
+  br i1 %35, label %36, label %51
+
+36:                                               ; preds = %34
+  %37 = getelementptr inbounds i8, ptr %3, i64 0
+  %38 = load ptr, ptr %37, align 8
+  %39 = getelementptr inbounds i32, ptr %38, i32 1
+  %40 = load i32, ptr %39, align 4
+  %41 = sext i32 %40 to i64
+  %42 = add nsw i64 0, %41
+  %43 = getelementptr inbounds i8, ptr %3, i64 %42
+  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %43, i32 noundef 4, i1 noundef zeroext false)
+          to label %50 unwind label %44
+
+44:                                               ; preds = %36, %24, %1
+  %45 = catchswitch within none [label %46] unwind to caller
+
+46:                                               ; preds = %44
+  %47 = catchpad within %45 [ptr null, i32 0, ptr null]
+  catchret from %47 to label %48
+
+48:                                               ; preds = %46
+  br label %49
+
+49:                                               ; preds = %48, %52
+  ret void
+
+50:                                               ; preds = %36
+  br label %51
+
+51:                                               ; preds = %50, %34
+  br label %52
+
+52:                                               ; preds = %51, %13, %4
+  br label %49
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z"(ptr noundef nonnull align 1 dereferenceable(11) %0) #0 comdat {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8, !nonnull !16
+  %4 = getelementptr inbounds [11 x i8], ptr %3, i64 0, i64 0
+  %5 = getelementptr inbounds nuw i8, ptr %4, i64 11
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z"(ptr noundef %0, i32 noundef %1) #0 comdat {
+  %3 = alloca i32, align 4
+  %4 = alloca ptr, align 8
+  %5 = alloca i32, align 4
+  store i32 %1, ptr %3, align 4
+  store ptr %0, ptr %4, align 8
+  %6 = load i32, ptr %3, align 4
+  store i32 %6, ptr %5, align 4
+  br label %7
+
+7:                                                ; preds = %16, %2
+  %8 = load i32, ptr %5, align 4
+  %9 = urem i32 %8, 10
+  %10 = add i32 48, %9
+  %11 = trunc i32 %10 to i8
+  %12 = load ptr, ptr %4, align 8
+  %13 = getelementptr inbounds i8, ptr %12, i32 -1
+  store ptr %13, ptr %4, align 8
+  store i8 %11, ptr %13, align 1
+  %14 = load i32, ptr %5, align 4
+  %15 = udiv i32 %14, 10
+  store i32 %15, ptr %5, align 4
+  br label %16
+
+16:                                               ; preds = %7
+  %17 = load i32, ptr %5, align 4
+  %18 = icmp ne i32 %17, 0
+  br i1 %18, label %7, label %19, !llvm.loop !27
+
+19:                                               ; preds = %16
+  %20 = load ptr, ptr %4, align 8
+  ret ptr %20
+}
+
+attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #3 = { nounwind }
+attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #5 = { nounwind memory(none) }
+attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #7 = { nomerge nounwind }
+attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
+attributes #9 = { nounwind willreturn memory(write) }
+attributes #10 = { mustprogress noinline optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #11 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #12 = { nounwind memory(argmem: read) }
+attributes #13 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #14 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #15 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
+attributes #16 = { nocallback nofree nounwind willreturn memory(argmem: write) }
+attributes #17 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #18 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #19 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #20 = { mustprogress noinline noreturn optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #21 = { allocsize(0) }
+attributes #22 = { noreturn }
+attributes #23 = { builtin nounwind }
+attributes #24 = { builtin allocsize(0) }
+attributes #25 = { noreturn nounwind }
+
+!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
+!llvm.module.flags = !{!10, !11, !12, !13, !14}
+!llvm.ident = !{!15}
+
+!0 = !{!"/DEFAULTLIB:libcmt.lib"}
+!1 = !{!"/DEFAULTLIB:oldnames.lib"}
+!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
+!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
+!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
+!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
+!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
+!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
+!8 = !{!"/FAILIFMISMATCH:\22annotate_string=0\22"}
+!9 = !{!"/FAILIFMISMATCH:\22annotate_vector=0\22"}
+!10 = !{i32 1, !"wchar_size", i32 2}
+!11 = !{i32 2, !"eh-asynch", i32 1}
+!12 = !{i32 8, !"PIC Level", i32 2}
+!13 = !{i32 7, !"uwtable", i32 2}
+!14 = !{i32 1, !"MaxTLSAlign", i32 65536}
+!15 = !{!"clang version 21.0.0git (https://github.com/llvm/llvm-project.git e66c205bda33a91fbe2ba5b4a5d6b823e5c23e8a)"}
+!16 = !{}
+!17 = !{i64 8}
+!18 = distinct !{!18, !19}
+!19 = !{!"llvm.loop.mustprogress"}
+!20 = distinct !{!20, !19}
+!21 = distinct !{!21, !19}
+!22 = distinct !{!22, !19}
+!23 = !{i64 4}
+!24 = distinct !{!24, !19}
+!25 = distinct !{!25, !19}
+!26 = distinct !{!26, !19}
+!27 = distinct !{!27, !19}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
new file mode 100644
index 0000000000000..073165cd925c1
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
@@ -0,0 +1,866 @@
+; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
+; the manipulation is that the coroutine function receives an argument of std::unique_ptr
+; which is copied by value
+; crashed before fix because of the both validation mismatches:
+; "Unwind edges out of a funclet pad must have the same unwind dest"
+; and - "Instruction does not dominate all uses!"
+; RUN: opt < %s -passes=coro-split -S | FileCheck %s
+; CHECK: define
+
+; ModuleID = 'C:\Dev\Projects\clang_asynch_exceptions_coroutines_bug\coroutine_with_unique_ptr_argument.cpp'
+source_filename = "C:\\Dev\\Projects\\clang_asynch_exceptions_coroutines_bug\\coroutine_with_unique_ptr_argument.cpp"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+%struct.awaitable = type { i8 }
+%struct.task = type { i8 }
+%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
+%"class.std::_Compressed_pair" = type { ptr }
+%"struct.task::promise_type" = type { i8 }
+%"struct.std::suspend_never" = type { i8 }
+%"struct.std::_One_then_variadic_args_t" = type { i8 }
+%"struct.std::coroutine_handle" = type { ptr }
+%"struct.std::coroutine_handle.0" = type { ptr }
+%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
+
+$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z" = comdat any
+
+$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
+
+$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
+
+$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
+
+$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
+
+$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
+
+$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
+
+$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
+
+$"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ" = comdat any
+
+$"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
+
+$"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z" = comdat any
+
+$"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z" = comdat any
+
+$"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
+
+$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
+
+$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
+
+$"??R?$default_delete at H@std@@QEBAXPEAH at Z" = comdat any
+
+$"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
+  %1 = alloca %struct.awaitable, align 1
+  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
+  %3 = load i8, ptr %2, align 1
+  ret i8 %3
+}
+
+; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
+define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z"(ptr noundef %0) #1 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca %struct.task, align 1
+  %3 = alloca ptr, align 8
+  %4 = alloca %"class.std::unique_ptr", align 8
+  %5 = alloca %"struct.task::promise_type", align 1
+  %6 = alloca %"struct.std::suspend_never", align 1
+  %7 = alloca %struct.awaitable, align 1
+  %8 = alloca %"struct.std::suspend_never", align 1
+  store ptr %0, ptr %3, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %107
+
+9:                                                ; preds = %1
+  %10 = bitcast ptr %5 to ptr
+  %11 = call token @llvm.coro.id(i32 16, ptr %10, ptr null, ptr null)
+  %12 = call i1 @llvm.coro.alloc(token %11)
+  br i1 %12, label %13, label %17
+
+13:                                               ; preds = %9
+  %14 = call i64 @llvm.coro.size.i64()
+  %15 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %14) #13
+          to label %16 unwind label %107
+
+16:                                               ; preds = %13
+  br label %17
+
+17:                                               ; preds = %16, %9
+  %18 = phi ptr [ null, %9 ], [ %15, %16 ]
+  %19 = call ptr @llvm.coro.begin(token %11, ptr %18)
+  invoke void @llvm.seh.scope.begin()
+          to label %20 unwind label %96
+
+20:                                               ; preds = %17
+  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
+  %21 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %22 unwind label %91
+
+22:                                               ; preds = %20
+  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
+  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
+          to label %23 unwind label %89
+
+23:                                               ; preds = %22
+  invoke void @llvm.seh.scope.begin()
+          to label %24 unwind label %85
+
+24:                                               ; preds = %23
+  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #4
+  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
+          to label %25 unwind label %44
+
+25:                                               ; preds = %24
+  %26 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
+  br i1 %26, label %31, label %27
+
+27:                                               ; preds = %25
+  %28 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__init") #4
+  %29 = call i8 @llvm.coro.suspend(token %28, i1 false)
+  switch i8 %29, label %83 [
+    i8 0, label %31
+    i8 1, label %30
+  ]
+
+30:                                               ; preds = %27
+  br label %32
+
+31:                                               ; preds = %27, %25
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
+  br label %32
+
+32:                                               ; preds = %31, %30
+  %33 = phi i32 [ 0, %31 ], [ 2, %30 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
+  switch i32 %33, label %73 [
+    i32 0, label %34
+  ]
+
+34:                                               ; preds = %32
+  invoke void @llvm.seh.try.begin()
+          to label %35 unwind label %51
+
+35:                                               ; preds = %34
+  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
+  %36 = call i8 @"?switch_to_new_thread@@YA at XZ"()
+  %37 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
+          to label %38 unwind label %66
+
+38:                                               ; preds = %35
+  br i1 %37, label %46, label %39
+
+39:                                               ; preds = %38
+  %40 = call token @llvm.coro.save(ptr null)
+  invoke void @llvm.coro.await.suspend.void(ptr %7, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__await")
+          to label %41 unwind label %66
+
+41:                                               ; preds = %39
+  %42 = call i8 @llvm.coro.suspend(token %40, i1 false)
+  switch i8 %42, label %83 [
+    i8 0, label %46
+    i8 1, label %43
+  ]
+
+43:                                               ; preds = %41
+  br label %48
+
+44:                                               ; preds = %24
+  %45 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
+  cleanupret from %45 unwind label %85
+
+46:                                               ; preds = %41, %38
+  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
+          to label %47 unwind label %66
+
+47:                                               ; preds = %46
+  br label %48
+
+48:                                               ; preds = %47, %43
+  %49 = phi i32 [ 0, %47 ], [ 2, %43 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
+  switch i32 %49, label %73 [
+    i32 0, label %50
+  ]
+
+50:                                               ; preds = %48
+  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
+          to label %65 unwind label %51
+
+51:                                               ; preds = %50, %66, %34
+  %52 = catchswitch within none [label %53] unwind label %85
+
+53:                                               ; preds = %51
+  %54 = catchpad within %52 [ptr null, i32 0, ptr null]
+  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %54) ]
+          to label %55 unwind label %85
+
+55:                                               ; preds = %53
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %54) ]
+          to label %56 unwind label %85
+
+56:                                               ; preds = %55
+  catchret from %54 to label %57
+
+57:                                               ; preds = %56
+  br label %58
+
+58:                                               ; preds = %57
+  br label %59
+
+59:                                               ; preds = %58, %65
+  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
+  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %8) #4
+  %60 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
+  br i1 %60, label %68, label %61
+
+61:                                               ; preds = %59
+  %62 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__final") #4
+  %63 = call i8 @llvm.coro.suspend(token %62, i1 true)
+  switch i8 %63, label %83 [
+    i8 0, label %68
+    i8 1, label %64
+  ]
+
+64:                                               ; preds = %61
+  br label %69
+
+65:                                               ; preds = %50
+  br label %59
+
+66:                                               ; preds = %46, %39, %35
+  %67 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
+  cleanupret from %67 unwind label %51
+
+68:                                               ; preds = %61, %59
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
+  br label %69
+
+69:                                               ; preds = %68, %64
+  %70 = phi i32 [ 0, %68 ], [ 2, %64 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
+  switch i32 %70, label %73 [
+    i32 0, label %71
+  ]
+
+71:                                               ; preds = %69
+  invoke void @llvm.seh.scope.end()
+          to label %72 unwind label %85
+
+72:                                               ; preds = %71
+  br label %73
+
+73:                                               ; preds = %72, %69, %48, %32
+  %74 = phi i32 [ %33, %32 ], [ %49, %48 ], [ %70, %69 ], [ 0, %72 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
+  invoke void @llvm.seh.scope.end()
+          to label %75 unwind label %91
+
+75:                                               ; preds = %73
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
+  invoke void @llvm.seh.scope.end()
+          to label %76 unwind label %96
+
+76:                                               ; preds = %75
+  %77 = call ptr @llvm.coro.free(token %11, ptr %19)
+  %78 = icmp ne ptr %77, null
+  br i1 %78, label %79, label %81
+
+79:                                               ; preds = %76
+  %80 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %77, i64 noundef %80) #4
+  br label %81
+
+81:                                               ; preds = %76, %79
+  switch i32 %74, label %109 [
+    i32 0, label %82
+    i32 2, label %83
+  ]
+
+82:                                               ; preds = %81
+  br label %83
+
+83:                                               ; preds = %82, %81, %61, %41, %27
+  %84 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
+  invoke void @llvm.seh.scope.end()
+          to label %104 unwind label %107
+
+85:                                               ; preds = %71, %55, %53, %51, %44, %23
+  %86 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %86) ]
+          to label %87 unwind label %89
+
+87:                                               ; preds = %85
+  %88 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %86) ]
+  cleanupret from %86 unwind label %89
+
+89:                                               ; preds = %87, %85, %22
+  %90 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
+  cleanupret from %90 unwind label %91
+
+91:                                               ; preds = %73, %89, %20
+  %92 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %92) ]
+          to label %93 unwind label %94
+
+93:                                               ; preds = %91
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4 [ "funclet"(token %92) ]
+  cleanupret from %92 unwind label %94
+
+94:                                               ; preds = %93, %91
+  %95 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
+  cleanupret from %95 unwind label %96
+
+96:                                               ; preds = %75, %94, %17
+  %97 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %97) ]
+          to label %98 unwind label %107
+
+98:                                               ; preds = %96
+  %99 = call ptr @llvm.coro.free(token %11, ptr %19)
+  %100 = icmp ne ptr %99, null
+  br i1 %100, label %101, label %103
+
+101:                                              ; preds = %98
+  %102 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %99, i64 noundef %102) #4 [ "funclet"(token %97) ]
+  br label %103
+
+103:                                              ; preds = %98, %101
+  cleanupret from %97 unwind label %107
+
+104:                                              ; preds = %83
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %105 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
+  %106 = load i8, ptr %105, align 1
+  ret i8 %106
+
+107:                                              ; preds = %83, %103, %96, %13, %1
+  %108 = cleanuppad within none []
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %108) ]
+  cleanupret from %108 unwind to caller
+
+109:                                              ; preds = %81
+  unreachable
+}
+
+declare dso_local i32 @__CxxFrameHandler3(...)
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.begin() #2
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #3
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.alloc(token) #4
+
+; Function Attrs: nobuiltin allocsize(0)
+declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
+
+; Function Attrs: nounwind memory(none)
+declare i64 @llvm.coro.size.i64() #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #4
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %7, i32 0, i32 0
+  %9 = load ptr, ptr %3, align 8
+  %10 = call noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
+  store ptr %10, ptr %5, align 8
+  %11 = load ptr, ptr %3, align 8
+  %12 = call noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
+  %13 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
+  %14 = load i8, ptr %13, align 1
+  %15 = call noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %14, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %5) #4
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 true
+}
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #7
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
+  %7 = load ptr, ptr %6, align 8
+  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
+  ret void
+}
+
+declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6
+
+; Function Attrs: nounwind willreturn memory(write)
+declare dso_local void @llvm.seh.try.begin() #9
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 false
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.end() #2
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  %7 = icmp ne ptr %6, null
+  br i1 %7, label %8, label %14
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
+  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
+  %13 = load ptr, ptr %12, align 8
+  call void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #4
+  br label %14
+
+14:                                               ; preds = %8, %1
+  ret void
+}
+
+; Function Attrs: nobuiltin nounwind
+declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #10
+
+; Function Attrs: nounwind memory(argmem: read)
+declare ptr @llvm.coro.free(token, ptr nocapture readonly) #11
+
+; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
+define dso_local noundef i32 @main() #12 personality ptr @__CxxFrameHandler3 {
+  %1 = alloca %"class.std::unique_ptr", align 8
+  %2 = alloca %struct.task, align 1
+  %3 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %7
+
+4:                                                ; preds = %0
+  invoke void @llvm.seh.scope.end()
+          to label %5 unwind label %7
+
+5:                                                ; preds = %4
+  %6 = call i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z"(ptr noundef %1)
+  ret i32 0
+
+7:                                                ; preds = %4, %0
+  %8 = cleanuppad within none []
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %8) ]
+  cleanupret from %8 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
+  %7 = load i8, ptr %6, align 1
+  %8 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i8 %7) #4
+  ret ptr %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  store ptr null, ptr %3, align 8
+  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
+  %7 = call noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #4
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 {
+  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca ptr, align 8
+  %9 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
+  store i8 %1, ptr %9, align 1
+  store ptr %3, ptr %6, align 8
+  store ptr %2, ptr %7, align 8
+  store ptr %0, ptr %8, align 8
+  %10 = load ptr, ptr %8, align 8
+  %11 = load ptr, ptr %7, align 8
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %10, i32 0, i32 0
+  %13 = load ptr, ptr %6, align 8
+  %14 = load ptr, ptr %13, align 8
+  store ptr %14, ptr %12, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8
+  %9 = load ptr, ptr %4, align 8
+  store ptr null, ptr %9, align 8
+  %10 = load ptr, ptr %5, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = icmp eq ptr %6, null
+  br i1 %7, label %11, label %8
+
+8:                                                ; preds = %2
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %12
+
+9:                                                ; preds = %8
+  invoke void @llvm.seh.scope.end()
+          to label %10 unwind label %12
+
+10:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14
+  br label %11
+
+11:                                               ; preds = %10, %2
+  ret void
+
+12:                                               ; preds = %9, %8
+  %13 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14 [ "funclet"(token %13) ]
+  cleanupret from %13 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
+  store i8 %1, ptr %5, align 1
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %6, i32 0, i32 0
+  store ptr null, ptr %7, align 8
+  ret ptr %6
+}
+
+attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #2 = { nounwind memory(none) }
+attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #4 = { nounwind }
+attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #7 = { nomerge nounwind }
+attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
+attributes #9 = { nounwind willreturn memory(write) }
+attributes #10 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #11 = { nounwind memory(argmem: read) }
+attributes #12 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #13 = { allocsize(0) }
+attributes #14 = { builtin nounwind }
+
+!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7}
+!llvm.module.flags = !{!8, !9, !10, !11, !12}
+!llvm.ident = !{!13}
+
+!0 = !{!"/DEFAULTLIB:libcmt.lib"}
+!1 = !{!"/DEFAULTLIB:oldnames.lib"}
+!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
+!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
+!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
+!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
+!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
+!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
+!8 = !{i32 1, !"wchar_size", i32 2}
+!9 = !{i32 2, !"eh-asynch", i32 1}
+!10 = !{i32 8, !"PIC Level", i32 2}
+!11 = !{i32 7, !"uwtable", i32 2}
+!12 = !{i32 1, !"MaxTLSAlign", i32 65536}
+!13 = !{!"clang version 20.1.6"}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll b/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll
new file mode 100644
index 0000000000000..d9eb07d3406c0
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll
@@ -0,0 +1,727 @@
+; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
+; the manipulation is that the coroutine function receives an argument with is of class type
+; that's having a default move ctor, and a dtor which tries to delete a member pointer.
+; It's a cpp reduce of std::unique_ptr
+; crashed before fix because of the both validation mismatches:
+; "Unwind edges out of a funclet pad must have the same unwind dest"
+; and - "Instruction does not dominate all uses!"
+; RUN: opt < %s -passes=coro-split -S | FileCheck %s
+; CHECK: define
+
+; ModuleID = 'coroutine_with_argument_having_deleter_and_move_ctor.cpp'
+source_filename = "coroutine_with_argument_having_deleter_and_move_ctor.cpp"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+%struct.awaitable = type { i8 }
+%struct.task = type { i8 }
+%class.unique_ptr = type { ptr }
+%"struct.task::promise_type" = type { i8 }
+%"struct.std::suspend_never" = type { i8 }
+%"struct.std::coroutine_handle" = type { ptr }
+%"struct.std::coroutine_handle.0" = type { ptr }
+
+$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
+
+$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
+
+$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
+
+$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
+
+$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
+
+$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"??1unique_ptr@@QEAA at XZ" = comdat any
+
+$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
+
+$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
+  %1 = alloca %struct.awaitable, align 1
+  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
+  %3 = load i8, ptr %2, align 1
+  ret i8 %3
+}
+
+; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
+define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr noundef %0) #1 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca %struct.task, align 1
+  %3 = alloca ptr, align 8
+  %4 = alloca %class.unique_ptr, align 8
+  %5 = alloca %"struct.task::promise_type", align 1
+  %6 = alloca %"struct.std::suspend_never", align 1
+  %7 = alloca %struct.awaitable, align 1
+  %8 = alloca %"struct.std::suspend_never", align 1
+  store ptr %0, ptr %3, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %106
+
+9:                                                ; preds = %1
+  %10 = bitcast ptr %5 to ptr
+  %11 = call token @llvm.coro.id(i32 16, ptr %10, ptr null, ptr null)
+  %12 = call i1 @llvm.coro.alloc(token %11)
+  br i1 %12, label %13, label %17
+
+13:                                               ; preds = %9
+  %14 = call i64 @llvm.coro.size.i64()
+  %15 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %14) #14
+          to label %16 unwind label %106
+
+16:                                               ; preds = %13
+  br label %17
+
+17:                                               ; preds = %16, %9
+  %18 = phi ptr [ null, %9 ], [ %15, %16 ]
+  %19 = call ptr @llvm.coro.begin(token %11, ptr %18)
+  invoke void @llvm.seh.scope.begin()
+          to label %20 unwind label %95
+
+20:                                               ; preds = %17
+  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4, ptr align 8 %0, i64 8, i1 false)
+  invoke void @llvm.seh.scope.begin()
+          to label %21 unwind label %90
+
+21:                                               ; preds = %20
+  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
+  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
+          to label %22 unwind label %88
+
+22:                                               ; preds = %21
+  invoke void @llvm.seh.scope.begin()
+          to label %23 unwind label %84
+
+23:                                               ; preds = %22
+  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #4
+  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
+          to label %24 unwind label %43
+
+24:                                               ; preds = %23
+  %25 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
+  br i1 %25, label %30, label %26
+
+26:                                               ; preds = %24
+  %27 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__init") #4
+  %28 = call i8 @llvm.coro.suspend(token %27, i1 false)
+  switch i8 %28, label %82 [
+    i8 0, label %30
+    i8 1, label %29
+  ]
+
+29:                                               ; preds = %26
+  br label %31
+
+30:                                               ; preds = %26, %24
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
+  br label %31
+
+31:                                               ; preds = %30, %29
+  %32 = phi i32 [ 0, %30 ], [ 2, %29 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
+  switch i32 %32, label %72 [
+    i32 0, label %33
+  ]
+
+33:                                               ; preds = %31
+  invoke void @llvm.seh.try.begin()
+          to label %34 unwind label %50
+
+34:                                               ; preds = %33
+  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
+  %35 = call i8 @"?switch_to_new_thread@@YA at XZ"()
+  %36 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
+          to label %37 unwind label %65
+
+37:                                               ; preds = %34
+  br i1 %36, label %45, label %38
+
+38:                                               ; preds = %37
+  %39 = call token @llvm.coro.save(ptr null)
+  invoke void @llvm.coro.await.suspend.void(ptr %7, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__await")
+          to label %40 unwind label %65
+
+40:                                               ; preds = %38
+  %41 = call i8 @llvm.coro.suspend(token %39, i1 false)
+  switch i8 %41, label %82 [
+    i8 0, label %45
+    i8 1, label %42
+  ]
+
+42:                                               ; preds = %40
+  br label %47
+
+43:                                               ; preds = %23
+  %44 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
+  cleanupret from %44 unwind label %84
+
+45:                                               ; preds = %40, %37
+  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
+          to label %46 unwind label %65
+
+46:                                               ; preds = %45
+  br label %47
+
+47:                                               ; preds = %46, %42
+  %48 = phi i32 [ 0, %46 ], [ 2, %42 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
+  switch i32 %48, label %72 [
+    i32 0, label %49
+  ]
+
+49:                                               ; preds = %47
+  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
+          to label %64 unwind label %50
+
+50:                                               ; preds = %49, %65, %33
+  %51 = catchswitch within none [label %52] unwind label %84
+
+52:                                               ; preds = %50
+  %53 = catchpad within %51 [ptr null, i32 0, ptr null]
+  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %53) ]
+          to label %54 unwind label %84
+
+54:                                               ; preds = %52
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %53) ]
+          to label %55 unwind label %84
+
+55:                                               ; preds = %54
+  catchret from %53 to label %56
+
+56:                                               ; preds = %55
+  br label %57
+
+57:                                               ; preds = %56
+  br label %58
+
+58:                                               ; preds = %57, %64
+  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
+  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %8) #4
+  %59 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
+  br i1 %59, label %67, label %60
+
+60:                                               ; preds = %58
+  %61 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__final") #4
+  %62 = call i8 @llvm.coro.suspend(token %61, i1 true)
+  switch i8 %62, label %82 [
+    i8 0, label %67
+    i8 1, label %63
+  ]
+
+63:                                               ; preds = %60
+  br label %68
+
+64:                                               ; preds = %49
+  br label %58
+
+65:                                               ; preds = %45, %38, %34
+  %66 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
+  cleanupret from %66 unwind label %50
+
+67:                                               ; preds = %60, %58
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
+  br label %68
+
+68:                                               ; preds = %67, %63
+  %69 = phi i32 [ 0, %67 ], [ 2, %63 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
+  switch i32 %69, label %72 [
+    i32 0, label %70
+  ]
+
+70:                                               ; preds = %68
+  invoke void @llvm.seh.scope.end()
+          to label %71 unwind label %84
+
+71:                                               ; preds = %70
+  br label %72
+
+72:                                               ; preds = %71, %68, %47, %31
+  %73 = phi i32 [ %32, %31 ], [ %48, %47 ], [ %69, %68 ], [ 0, %71 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
+  invoke void @llvm.seh.scope.end()
+          to label %74 unwind label %90
+
+74:                                               ; preds = %72
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
+  invoke void @llvm.seh.scope.end()
+          to label %75 unwind label %95
+
+75:                                               ; preds = %74
+  %76 = call ptr @llvm.coro.free(token %11, ptr %19)
+  %77 = icmp ne ptr %76, null
+  br i1 %77, label %78, label %80
+
+78:                                               ; preds = %75
+  %79 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %76, i64 noundef %79) #4
+  br label %80
+
+80:                                               ; preds = %75, %78
+  switch i32 %73, label %108 [
+    i32 0, label %81
+    i32 2, label %82
+  ]
+
+81:                                               ; preds = %80
+  br label %82
+
+82:                                               ; preds = %81, %80, %60, %40, %26
+  %83 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
+  invoke void @llvm.seh.scope.end()
+          to label %103 unwind label %106
+
+84:                                               ; preds = %70, %54, %52, %50, %43, %22
+  %85 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %85) ]
+          to label %86 unwind label %88
+
+86:                                               ; preds = %84
+  %87 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %85) ]
+  cleanupret from %85 unwind label %88
+
+88:                                               ; preds = %86, %84, %21
+  %89 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
+  cleanupret from %89 unwind label %90
+
+90:                                               ; preds = %72, %88, %20
+  %91 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %91) ]
+          to label %92 unwind label %93
+
+92:                                               ; preds = %90
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4 [ "funclet"(token %91) ]
+  cleanupret from %91 unwind label %93
+
+93:                                               ; preds = %92, %90
+  %94 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
+  cleanupret from %94 unwind label %95
+
+95:                                               ; preds = %74, %93, %17
+  %96 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %96) ]
+          to label %97 unwind label %106
+
+97:                                               ; preds = %95
+  %98 = call ptr @llvm.coro.free(token %11, ptr %19)
+  %99 = icmp ne ptr %98, null
+  br i1 %99, label %100, label %102
+
+100:                                              ; preds = %97
+  %101 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %98, i64 noundef %101) #4 [ "funclet"(token %96) ]
+  br label %102
+
+102:                                              ; preds = %97, %100
+  cleanupret from %96 unwind label %106
+
+103:                                              ; preds = %82
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %104 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
+  %105 = load i8, ptr %104, align 1
+  ret i8 %105
+
+106:                                              ; preds = %82, %102, %95, %13, %1
+  %107 = cleanuppad within none []
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %107) ]
+  cleanupret from %107 unwind to caller
+
+108:                                              ; preds = %80
+  unreachable
+}
+
+declare dso_local i32 @__CxxFrameHandler3(...)
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.begin() #2
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #3
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.alloc(token) #4
+
+; Function Attrs: nobuiltin allocsize(0)
+declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
+
+; Function Attrs: nounwind memory(none)
+declare i64 @llvm.coro.size.i64() #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #4
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6
+
+; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #7
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 true
+}
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #8
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #9 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
+  %7 = load ptr, ptr %6, align 8
+  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
+  ret void
+}
+
+declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6
+
+; Function Attrs: nounwind willreturn memory(write)
+declare dso_local void @llvm.seh.try.begin() #10
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 false
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #9 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.end() #2
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #9 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %class.unique_ptr, ptr %3, i32 0, i32 0
+  %5 = load ptr, ptr %4, align 8
+  %6 = icmp eq ptr %5, null
+  br i1 %6, label %10, label %7
+
+7:                                                ; preds = %1
+  invoke void @llvm.seh.scope.begin()
+          to label %8 unwind label %11
+
+8:                                                ; preds = %7
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %11
+
+9:                                                ; preds = %8
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 4) #15
+  br label %10
+
+10:                                               ; preds = %9, %1
+  ret void
+
+11:                                               ; preds = %8, %7
+  %12 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 4) #15 [ "funclet"(token %12) ]
+  cleanupret from %12 unwind to caller
+}
+
+; Function Attrs: nobuiltin nounwind
+declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #11
+
+; Function Attrs: nounwind memory(argmem: read)
+declare ptr @llvm.coro.free(token, ptr readonly captures(none)) #12
+
+; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
+define dso_local noundef i32 @main() #13 personality ptr @__CxxFrameHandler3 {
+  %1 = alloca %class.unique_ptr, align 8
+  %2 = alloca %class.unique_ptr, align 8
+  %3 = alloca %struct.task, align 1
+  invoke void @llvm.seh.scope.begin()
+          to label %4 unwind label %13
+
+4:                                                ; preds = %0
+  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2, ptr align 8 %1, i64 8, i1 false)
+  invoke void @llvm.seh.scope.begin()
+          to label %5 unwind label %10
+
+5:                                                ; preds = %4
+  invoke void @llvm.seh.scope.end()
+          to label %6 unwind label %10
+
+6:                                                ; preds = %5
+  %7 = invoke i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr noundef %2)
+          to label %8 unwind label %13
+
+8:                                                ; preds = %6
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %13
+
+9:                                                ; preds = %8
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
+  ret i32 0
+
+10:                                               ; preds = %5, %4
+  %11 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %11) ]
+          to label %12 unwind label %13
+
+12:                                               ; preds = %10
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4 [ "funclet"(token %11) ]
+  cleanupret from %11 unwind label %13
+
+13:                                               ; preds = %8, %6, %12, %10, %0
+  %14 = cleanuppad within none []
+  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %14) ]
+  cleanupret from %14 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #2 = { nounwind memory(none) }
+attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #4 = { nounwind }
+attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
+attributes #8 = { nomerge nounwind }
+attributes #9 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
+attributes #10 = { nounwind willreturn memory(write) }
+attributes #11 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #12 = { nounwind memory(argmem: read) }
+attributes #13 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #14 = { allocsize(0) }
+attributes #15 = { builtin nounwind }
+
+!llvm.linker.options = !{!0, !1, !2}
+!llvm.module.flags = !{!3, !4, !5, !6, !7}
+!llvm.ident = !{!8}
+
+!0 = !{!"/DEFAULTLIB:libcmt.lib"}
+!1 = !{!"/DEFAULTLIB:oldnames.lib"}
+!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
+!3 = !{i32 1, !"wchar_size", i32 2}
+!4 = !{i32 2, !"eh-asynch", i32 1}
+!5 = !{i32 8, !"PIC Level", i32 2}
+!6 = !{i32 7, !"uwtable", i32 2}
+!7 = !{i32 1, !"MaxTLSAlign", i32 65536}
+!8 = !{!"clang version 21.0.0git (https://github.com/llvm/llvm-project.git e66c205bda33a91fbe2ba5b4a5d6b823e5c23e8a)"}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
new file mode 100644
index 0000000000000..931b0cd4d548b
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
@@ -0,0 +1,76 @@
+; In coro-split, this coroutine code reduced IR, produced using clang with async-exceptions
+; crashed before fix because of the validation mismatch of Instruction does not dominate all uses!
+; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
+; RUN: opt < %s -passes='default<Os>,coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+; Function Attrs: presplitcoroutine
+define i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr %0) #0 personality ptr null {
+  invoke void @llvm.seh.scope.begin()
+          to label %2 unwind label %14
+
+2:                                                ; preds = %1
+  %3 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
+  %4 = load volatile ptr, ptr null, align 8
+  %5 = call ptr @llvm.coro.begin(token %3, ptr %4)
+  %6 = call token @llvm.coro.save(ptr null)
+  %7 = call i8 @llvm.coro.suspend(token none, i1 false)
+  invoke void @llvm.seh.try.begin()
+          to label %common.ret unwind label %8
+
+common.ret:                                       ; preds = %12, %10, %2
+  ret i8 0
+
+8:                                                ; preds = %2
+  %9 = catchswitch within none [label %10] unwind label %12
+
+10:                                               ; preds = %8
+  %11 = catchpad within %9 [ptr null, i32 0, ptr null]
+  br label %common.ret
+
+12:                                               ; preds = %8
+  %13 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end()
+          to label %common.ret unwind label %14
+
+14:                                               ; preds = %12, %1
+  %15 = cleanuppad within none []
+  store i32 0, ptr %0, align 4
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.begin() #1
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #3
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #4
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #3
+
+; Function Attrs: nounwind willreturn memory(write)
+declare void @llvm.seh.try.begin() #5
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.end() #1
+
+; uselistorder directives
+uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
+
+attributes #0 = { presplitcoroutine }
+attributes #1 = { nounwind memory(none) }
+attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #3 = { nounwind }
+attributes #4 = { nomerge nounwind }
+attributes #5 = { nounwind willreturn memory(write) }
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 2, !"eh-asynch", i32 1}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll
new file mode 100644
index 0000000000000..500126f77494a
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll
@@ -0,0 +1,74 @@
+; In coro-split, this coroutine standard code reduced IR, produced using clang with async-exceptions
+; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
+; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Unwind edges out of a funclet pad must have the same unwind dest"
+
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+; Function Attrs: presplitcoroutine
+define i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"() #0 personality ptr null {
+  %1 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
+  %2 = call ptr @llvm.coro.begin(token %1, ptr null)
+  %3 = call token @llvm.coro.save(ptr null)
+  %4 = call i8 @llvm.coro.suspend(token none, i1 false)
+  invoke void @llvm.seh.try.begin()
+          to label %common.ret unwind label %5
+
+common.ret:                                       ; preds = %13, %7, %0
+  ret i8 0
+
+5:                                                ; preds = %0
+  %6 = catchswitch within none [label %7] unwind label %9
+
+7:                                                ; preds = %5
+  %8 = catchpad within %6 [ptr null, i32 0, ptr null]
+  br label %common.ret
+
+9:                                                ; preds = %5
+  %10 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %10) ]
+          to label %11 unwind label %13
+
+11:                                               ; preds = %9
+  %12 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %10) ]
+  cleanupret from %10 unwind label %13
+
+13:                                               ; preds = %11, %9
+  %14 = cleanuppad within none []
+  br label %common.ret
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #1
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #2
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #3
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #2
+
+; Function Attrs: nounwind willreturn memory(write)
+declare void @llvm.seh.try.begin() #4
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.end() #5
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #2
+
+; uselistorder directives
+uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 }
+
+attributes #0 = { presplitcoroutine }
+attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #2 = { nounwind }
+attributes #3 = { nomerge nounwind }
+attributes #4 = { nounwind willreturn memory(write) }
+attributes #5 = { nounwind memory(none) }
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 2, !"eh-asynch", i32 1}

>From 1d303ca5abbccba48fb7a13cdf2787019d221bea Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 20 Jul 2025 08:38:57 +0300
Subject: [PATCH 2/8] [Coroutines] fixed a bug when coro.end had an associated
 bundle, and a new cleanupret instruction was added, make it unwind to the
 same edge of the genuine cleanupret

---
 llvm/lib/Transforms/Coroutines/CoroSplit.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
index 64b33e46404f0..37b3d61c9f8f2 100644
--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
@@ -376,7 +376,16 @@ static void replaceUnwindCoroEnd(AnyCoroEndInst *End, const coro::Shape &Shape,
   // If coro.end has an associated bundle, add cleanupret instruction.
   if (auto Bundle = End->getOperandBundle(LLVMContext::OB_funclet)) {
     auto *FromPad = cast<CleanupPadInst>(Bundle->Inputs[0]);
-    auto *CleanupRet = Builder.CreateCleanupRet(FromPad, nullptr);
+
+    // If the terminator is an invoke, 
+    // set the cleanupret unwind destination the same as the other edges, to
+    // avoid validation errors
+    BasicBlock *UBB = nullptr;
+    if (auto II = dyn_cast<InvokeInst>(FromPad->getParent()->getTerminator())) {
+      UBB = II->getUnwindDest();
+    }
+
+    auto *CleanupRet = Builder.CreateCleanupRet(FromPad, UBB);
     End->getParent()->splitBasicBlock(End);
     CleanupRet->getParent()->getTerminator()->eraseFromParent();
   }

>From 887bcb2e81eaeff2a07824d188c7df2996c32e75 Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 20 Jul 2025 08:53:20 +0300
Subject: [PATCH 3/8] [Coroutines] fixed a bug when insertSpills performed
 spilling of CoroBegin on async-exception ready function, it created
 instruction dominance issues. the fix is to clone those bbs and keep
 unwinding path that happens before CoroBegin

---
 llvm/lib/Transforms/Coroutines/CoroFrame.cpp | 156 +++++++++++++++++++
 1 file changed, 156 insertions(+)

diff --git a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
index a65d0fb54c212..a3ec5d3cb06ea 100644
--- a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
@@ -35,6 +35,7 @@
 #include "llvm/Transforms/Coroutines/SpillUtils.h"
 #include "llvm/Transforms/Coroutines/SuspendCrossingInfo.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
+#include "llvm/Transforms/Utils/Cloning.h"
 #include "llvm/Transforms/Utils/Local.h"
 #include "llvm/Transforms/Utils/PromoteMemToReg.h"
 #include <algorithm>
@@ -974,6 +975,159 @@ static StructType *buildFrameType(Function &F, coro::Shape &Shape,
   return FrameTy;
 }
 
+// Fixer for the "Instruction does not dominate all uses!" bug
+// The fix consists of mapping problematic paths (where CoroBegin does not
+// dominate cleanup BBs) and clones them to 2 flows - the one that insertSpills
+// intended to create (using the spill) and another one, preserving the logics
+// of pre-splitting, which would be triggered if unwinding happened before
+// CoroBegin
+static void
+splitBasicBlocksNotDominatedByCoroBegin(const FrameDataInfo &FrameData,
+                                        coro::Shape &Shape, Function *F,
+                                        DominatorTree &DT) {
+  ValueToValueMapTy VMap;
+  DenseMap<BasicBlock *, BasicBlock *>
+ProcessedSpillBlockToAlternativeUnspilledBlockMap;
+  bool FunctionHasSomeBlockNotDominatedByCoroBegin;
+  SmallVector<BasicBlock *> SpillUserBlocks;
+  
+  for (const auto &E : FrameData.Spills) {
+    for (auto *U : E.second) {
+      if (std::find(SpillUserBlocks.begin(), SpillUserBlocks.end(),
+U->getParent()) == SpillUserBlocks.end()) {
+        SpillUserBlocks.push_back(U->getParent());
+      }
+    }
+  }
+  SpillUserBlocks.push_back(Shape.AllocaSpillBlock);
+
+  do {
+    FunctionHasSomeBlockNotDominatedByCoroBegin = false;
+    // We want to traverse the function post-order (predecessors first),
+    // and check dominance starting CoroBegin
+    bool HaveTraversedCoroBegin = false;
+    for (BasicBlock *CurrentBlock : ReversePostOrderTraversal<Function *>(F)) {
+      if (!HaveTraversedCoroBegin &&
+CurrentBlock != Shape.CoroBegin->getParent()) {
+        continue;
+      }
+      HaveTraversedCoroBegin = true;
+      
+      // Focus on 2 types of users that produce errors - those in
+      // FrameData.Spills, and decendants of Shape.AllocaSpillBlocks
+      if (!DT.dominates(Shape.CoroBegin, CurrentBlock) &&
+std::find(SpillUserBlocks.begin(), SpillUserBlocks.end(),
+CurrentBlock) != SpillUserBlocks.end()) {
+        // Mark another iteration of the loop is needed, to verify that no more
+        // dominance issues after current run
+        FunctionHasSomeBlockNotDominatedByCoroBegin = true;
+
+        // Clone (preserve) the current basic block, before it will be modified
+        // by insertSpills
+        auto UnspilledAlternativeBlock =
+CloneBasicBlock(CurrentBlock, VMap, ".unspilled_alternative", F);
+
+        // Remap the instructions, VMap here aggregates instructions across
+        // multiple BasicBlocks, and we assume that traversal is post-order,
+        // therefore successor blocks (for example instructions having funclet
+        // tags) will be mapped correctly to the new cloned cleanuppad
+        for (Instruction &I : *UnspilledAlternativeBlock) {
+          RemapInstruction(&I, VMap,
+RF_NoModuleLevelChanges | RF_IgnoreMissingLocals);
+        }
+
+        // Keep track between the processed spill basic block and the cloned
+        // alternative unspilled basic block Will help us fix instructions that
+        // their context is complex (for example cleanuppad of funclet is
+        // defined in another BB)
+        ProcessedSpillBlockToAlternativeUnspilledBlockMap[CurrentBlock] =
+UnspilledAlternativeBlock;
+
+        SmallVector<Instruction *> FixUpPredTerminators;
+
+        // Find the specific predecessors that does not dominated by
+        // Shape.CoroBegin We don't fix them here but later because it's not
+        // safe while using predecessors as iterator function
+        for (BasicBlock *Pred : predecessors(CurrentBlock)) {
+          if (!DT.dominates(Shape.CoroBegin, Pred)) {
+            FixUpPredTerminators.push_back(Pred->getTerminator());
+          }
+        }
+
+        // Fixups for current block terminator
+        const auto &CurrentBlockTerminator = CurrentBlock->getTerminator();
+
+        // If it's cleanupret, find the correspondant cleanuppad (use the map to
+        // find it)
+        if (auto CurrentBlockCleanupReturnTerminator =
+dyn_cast<CleanupReturnInst>(CurrentBlockTerminator)) {
+          BasicBlock *CBCPBB =
+CurrentBlockCleanupReturnTerminator->getCleanupPad()->getParent();
+          CleanupReturnInst *DBT = dyn_cast<CleanupReturnInst>(
+UnspilledAlternativeBlock->getTerminator());
+
+          // Again assuming post-order traversal - if we mapped the predecessing
+          // cleanuppad block before, we should find it here If not, do nothing
+          if (ProcessedSpillBlockToAlternativeUnspilledBlockMap.contains(
+CBCPBB)) {
+            Instruction *DCPr =
+&ProcessedSpillBlockToAlternativeUnspilledBlockMap[CBCPBB]
+->front();           
+            CleanupPadInst *DCP = cast<CleanupPadInst>(DCPr);
+            DBT->setCleanupPad(DCP);
+          }
+
+        // If it's a branch/invoke, keep track of its successors, we want to
+          // calculate dominance between CoroBegin and them also They might need
+          // clone as well
+        } else if (auto CurrentBlockBranchTerminator =
+dyn_cast<BranchInst>(CurrentBlockTerminator)) {
+          for (unsigned int successorIdx = 0;
+successorIdx < CurrentBlockBranchTerminator->getNumSuccessors();
+++successorIdx) {
+            SpillUserBlocks.push_back(
+CurrentBlockBranchTerminator->getSuccessor(successorIdx));
+          }
+        } else if (auto CurrentBlockInvokeTerminator =
+dyn_cast<InvokeInst>(CurrentBlockTerminator)) {
+          SpillUserBlocks.push_back(
+CurrentBlockInvokeTerminator->getUnwindDest());
+        } else {
+          report_fatal_error("Not implemented terminator for this specific "
+                             "instruction fixup in current block fixups");
+        }
+
+        // Fixups on the predecessors terminator - direct them to out untouched
+        // alternative block to break dominance error.
+        for (auto FixUpPredTerminator : FixUpPredTerminators) {
+          if (auto FixUpPredTerminatorInvoke =
+dyn_cast<InvokeInst>(FixUpPredTerminator)) {
+            FixUpPredTerminatorInvoke->setUnwindDest(UnspilledAlternativeBlock);
+          } else if (auto FixUpPredTerminatorBranch =
+dyn_cast<BranchInst>(FixUpPredTerminator)) {
+            for (unsigned int successorIdx = 0;
+                successorIdx < FixUpPredTerminatorBranch->getNumSuccessors();
+                ++successorIdx) {
+              if (CurrentBlock ==
+FixUpPredTerminatorBranch->getSuccessor(successorIdx)) {
+                FixUpPredTerminatorBranch->setSuccessor(
+successorIdx, UnspilledAlternativeBlock);
+              }
+            }
+          } else {
+            report_fatal_error("Not implemented terminator for this specific "
+                               "instruction in pred fixups");
+          }
+        }
+        
+        // We changed dominance tree, so recalculate.
+        DT.recalculate(*F);
+        continue;
+      }
+    }
+  } while (FunctionHasSomeBlockNotDominatedByCoroBegin);
+}
+
 // Replace all alloca and SSA values that are accessed across suspend points
 // with GetElementPointer from coroutine frame + loads and stores. Create an
 // AllocaSpillBB that will become the new entry block for the resume parts of
@@ -1053,6 +1207,8 @@ static void insertSpills(const FrameDataInfo &FrameData, coro::Shape &Shape) {
     return GEP;
   };
 
+  splitBasicBlocksNotDominatedByCoroBegin(FrameData, Shape, F, DT);
+
   for (auto const &E : FrameData.Spills) {
     Value *Def = E.first;
     auto SpillAlignment = Align(FrameData.getAlign(Def));

>From 7f00eebf73ce9135204e2b7963911cca81b2dedd Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 27 Jul 2025 19:23:31 +0300
Subject: [PATCH 4/8] [Coroutines] added more 3 tests that are still failing
 due to complex unwind paths not handled correctly

---
 .../pr148035_1_coroutine_w_2_std_unique.ll    | 931 ++++++++++++++++++
 .../pr148035_inst_does_not_dominate_2.ll      |  76 ++
 ...035_unwind_edges_not_having_same_dest_2.ll |  75 ++
 3 files changed, 1082 insertions(+)
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll

diff --git a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
new file mode 100644
index 0000000000000..8758edb0b105d
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
@@ -0,0 +1,931 @@
+; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
+; the manipulation is that the coroutine function receives 2 arguments of std::unique_ptr
+; which are copied by value
+; crashed before fix because of the both validation mismatches:
+; "Unwind edges out of a funclet pad must have the same unwind dest"
+; and - "Instruction does not dominate all uses!"
+; RUN: opt < %s -passes=coro-split -S --debug | FileCheck %s
+; CHECK: define
+; ModuleID = 'C:\Dev\Projects\clang_asynch_exceptions_coroutines_bug\coroutine_with_2_unique_ptr_argument.cpp'
+source_filename = "C:\\Dev\\Projects\\clang_asynch_exceptions_coroutines_bug\\coroutine_with_2_unique_ptr_argument.cpp"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+%struct.awaitable = type { i8 }
+%struct.task = type { i8 }
+%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
+%"class.std::_Compressed_pair" = type { ptr }
+%"struct.task::promise_type" = type { i8 }
+%"struct.std::suspend_never" = type { i8 }
+%"struct.std::_One_then_variadic_args_t" = type { i8 }
+%"struct.std::coroutine_handle" = type { ptr }
+%"struct.std::coroutine_handle.0" = type { ptr }
+%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
+
+$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z" = comdat any
+
+$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
+
+$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
+
+$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
+
+$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
+
+$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
+
+$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
+
+$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
+
+$"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
+
+$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
+
+$"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ" = comdat any
+
+$"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
+
+$"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z" = comdat any
+
+$"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z" = comdat any
+
+$"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
+
+$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
+
+$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
+
+$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
+
+$"??R?$default_delete at H@std@@QEBAXPEAH at Z" = comdat any
+
+$"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
+  %1 = alloca %struct.awaitable, align 1
+  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
+  %3 = load i8, ptr %2, align 1
+  ret i8 %3
+}
+
+; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
+define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr noundef %0, ptr noundef %1) #1 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca %struct.task, align 1
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca %"class.std::unique_ptr", align 8
+  %7 = alloca %"class.std::unique_ptr", align 8
+  %8 = alloca %"struct.task::promise_type", align 1
+  %9 = alloca %"struct.std::suspend_never", align 1
+  %10 = alloca %struct.awaitable, align 1
+  %11 = alloca %"struct.std::suspend_never", align 1
+  store ptr %1, ptr %4, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %12 unwind label %123
+
+12:                                               ; preds = %2
+  store ptr %0, ptr %5, align 8
+  invoke void @llvm.seh.scope.begin()
+          to label %13 unwind label %117
+
+13:                                               ; preds = %12
+  %14 = bitcast ptr %8 to ptr
+  %15 = call token @llvm.coro.id(i32 16, ptr %14, ptr null, ptr null)
+  %16 = call i1 @llvm.coro.alloc(token %15)
+  br i1 %16, label %17, label %21
+
+17:                                               ; preds = %13
+  %18 = call i64 @llvm.coro.size.i64()
+  %19 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %18) #13
+          to label %20 unwind label %117
+
+20:                                               ; preds = %17
+  br label %21
+
+21:                                               ; preds = %20, %13
+  %22 = phi ptr [ null, %13 ], [ %19, %20 ]
+  %23 = call ptr @llvm.coro.begin(token %15, ptr %22)
+  invoke void @llvm.seh.scope.begin()
+          to label %24 unwind label %108
+
+24:                                               ; preds = %21
+  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
+  %25 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %26 unwind label %103
+
+26:                                               ; preds = %24
+  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
+  %27 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %1) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %28 unwind label %98
+
+28:                                               ; preds = %26
+  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
+  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%struct.task) align 1 %3)
+          to label %29 unwind label %96
+
+29:                                               ; preds = %28
+  invoke void @llvm.seh.scope.begin()
+          to label %30 unwind label %92
+
+30:                                               ; preds = %29
+  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #4
+  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %9)
+          to label %31 unwind label %50
+
+31:                                               ; preds = %30
+  %32 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %9) #4
+  br i1 %32, label %37, label %33
+
+33:                                               ; preds = %31
+  %34 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %9, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__init") #4
+  %35 = call i8 @llvm.coro.suspend(token %34, i1 false)
+  switch i8 %35, label %90 [
+    i8 0, label %37
+    i8 1, label %36
+  ]
+
+36:                                               ; preds = %33
+  br label %38
+
+37:                                               ; preds = %33, %31
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %9) #4
+  br label %38
+
+38:                                               ; preds = %37, %36
+  %39 = phi i32 [ 0, %37 ], [ 2, %36 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
+  switch i32 %39, label %79 [
+    i32 0, label %40
+  ]
+
+40:                                               ; preds = %38
+  invoke void @llvm.seh.try.begin()
+          to label %41 unwind label %57
+
+41:                                               ; preds = %40
+  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #4
+  %42 = call i8 @"?switch_to_new_thread@@YA at XZ"()
+  %43 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10)
+          to label %44 unwind label %72
+
+44:                                               ; preds = %41
+  br i1 %43, label %52, label %45
+
+45:                                               ; preds = %44
+  %46 = call token @llvm.coro.save(ptr null)
+  invoke void @llvm.coro.await.suspend.void(ptr %10, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__await")
+          to label %47 unwind label %72
+
+47:                                               ; preds = %45
+  %48 = call i8 @llvm.coro.suspend(token %46, i1 false)
+  switch i8 %48, label %90 [
+    i8 0, label %52
+    i8 1, label %49
+  ]
+
+49:                                               ; preds = %47
+  br label %54
+
+50:                                               ; preds = %30
+  %51 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
+  cleanupret from %51 unwind label %92
+
+52:                                               ; preds = %47, %44
+  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10)
+          to label %53 unwind label %72
+
+53:                                               ; preds = %52
+  br label %54
+
+54:                                               ; preds = %53, %49
+  %55 = phi i32 [ 0, %53 ], [ 2, %49 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
+  switch i32 %55, label %79 [
+    i32 0, label %56
+  ]
+
+56:                                               ; preds = %54
+  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8)
+          to label %71 unwind label %57
+
+57:                                               ; preds = %56, %72, %40
+  %58 = catchswitch within none [label %59] unwind label %92
+
+59:                                               ; preds = %57
+  %60 = catchpad within %58 [ptr null, i32 0, ptr null]
+  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) [ "funclet"(token %60) ]
+          to label %61 unwind label %92
+
+61:                                               ; preds = %59
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %60) ]
+          to label %62 unwind label %92
+
+62:                                               ; preds = %61
+  catchret from %60 to label %63
+
+63:                                               ; preds = %62
+  br label %64
+
+64:                                               ; preds = %63
+  br label %65
+
+65:                                               ; preds = %64, %71
+  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #4
+  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %11) #4
+  %66 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %11) #4
+  br i1 %66, label %74, label %67
+
+67:                                               ; preds = %65
+  %68 = call token @llvm.coro.save(ptr null)
+  call void @llvm.coro.await.suspend.void(ptr %11, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__final") #4
+  %69 = call i8 @llvm.coro.suspend(token %68, i1 true)
+  switch i8 %69, label %90 [
+    i8 0, label %74
+    i8 1, label %70
+  ]
+
+70:                                               ; preds = %67
+  br label %75
+
+71:                                               ; preds = %56
+  br label %65
+
+72:                                               ; preds = %52, %45, %41
+  %73 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
+  cleanupret from %73 unwind label %57
+
+74:                                               ; preds = %67, %65
+  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %11) #4
+  br label %75
+
+75:                                               ; preds = %74, %70
+  %76 = phi i32 [ 0, %74 ], [ 2, %70 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #4
+  switch i32 %76, label %79 [
+    i32 0, label %77
+  ]
+
+77:                                               ; preds = %75
+  invoke void @llvm.seh.scope.end()
+          to label %78 unwind label %92
+
+78:                                               ; preds = %77
+  br label %79
+
+79:                                               ; preds = %78, %75, %54, %38
+  %80 = phi i32 [ %39, %38 ], [ %55, %54 ], [ %76, %75 ], [ 0, %78 ]
+  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
+  invoke void @llvm.seh.scope.end()
+          to label %81 unwind label %98
+
+81:                                               ; preds = %79
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #4
+  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
+  invoke void @llvm.seh.scope.end()
+          to label %82 unwind label %103
+
+82:                                               ; preds = %81
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6) #4
+  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
+  invoke void @llvm.seh.scope.end()
+          to label %83 unwind label %108
+
+83:                                               ; preds = %82
+  %84 = call ptr @llvm.coro.free(token %15, ptr %23)
+  %85 = icmp ne ptr %84, null
+  br i1 %85, label %86, label %88
+
+86:                                               ; preds = %83
+  %87 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %84, i64 noundef %87) #4
+  br label %88
+
+88:                                               ; preds = %83, %86
+  switch i32 %80, label %125 [
+    i32 0, label %89
+    i32 2, label %90
+  ]
+
+89:                                               ; preds = %88
+  br label %90
+
+90:                                               ; preds = %89, %88, %67, %47, %33
+  %91 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
+  invoke void @llvm.seh.scope.end()
+          to label %116 unwind label %117
+
+92:                                               ; preds = %77, %61, %59, %57, %50, %29
+  %93 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %93) ]
+          to label %94 unwind label %96
+
+94:                                               ; preds = %92
+  %95 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %93) ]
+  cleanupret from %93 unwind label %96
+
+96:                                               ; preds = %94, %92, %28
+  %97 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
+  cleanupret from %97 unwind label %98
+
+98:                                               ; preds = %79, %96, %26
+  %99 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %99) ]
+          to label %100 unwind label %101
+
+100:                                              ; preds = %98
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #4 [ "funclet"(token %99) ]
+  cleanupret from %99 unwind label %101
+
+101:                                              ; preds = %100, %98
+  %102 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
+  cleanupret from %102 unwind label %103
+
+103:                                              ; preds = %81, %101, %24
+  %104 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %104) ]
+          to label %105 unwind label %106
+
+105:                                              ; preds = %103
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6) #4 [ "funclet"(token %104) ]
+  cleanupret from %104 unwind label %106
+
+106:                                              ; preds = %105, %103
+  %107 = cleanuppad within none []
+  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
+  cleanupret from %107 unwind label %108
+
+108:                                              ; preds = %82, %106, %21
+  %109 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %109) ]
+          to label %110 unwind label %117
+
+110:                                              ; preds = %108
+  %111 = call ptr @llvm.coro.free(token %15, ptr %23)
+  %112 = icmp ne ptr %111, null
+  br i1 %112, label %113, label %115
+
+113:                                              ; preds = %110
+  %114 = call i64 @llvm.coro.size.i64()
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %111, i64 noundef %114) #4 [ "funclet"(token %109) ]
+  br label %115
+
+115:                                              ; preds = %110, %113
+  cleanupret from %109 unwind label %117
+
+116:                                              ; preds = %90
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  invoke void @llvm.seh.scope.end()
+          to label %120 unwind label %123
+
+117:                                              ; preds = %90, %115, %108, %17, %12
+  %118 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %118) ]
+          to label %119 unwind label %123
+
+119:                                              ; preds = %117
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %118) ]
+  cleanupret from %118 unwind label %123
+
+120:                                              ; preds = %116
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
+  %121 = getelementptr inbounds nuw %struct.task, ptr %3, i32 0, i32 0
+  %122 = load i8, ptr %121, align 1
+  ret i8 %122
+
+123:                                              ; preds = %116, %119, %117, %2
+  %124 = cleanuppad within none []
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %124) ]
+  cleanupret from %124 unwind to caller
+
+125:                                              ; preds = %88
+  unreachable
+}
+
+declare dso_local i32 @__CxxFrameHandler3(...)
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.begin() #2
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #3
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.alloc(token) #4
+
+; Function Attrs: nobuiltin allocsize(0)
+declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
+
+; Function Attrs: nounwind memory(none)
+declare i64 @llvm.coro.size.i64() #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #4
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %7, i32 0, i32 0
+  %9 = load ptr, ptr %3, align 8
+  %10 = call noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
+  store ptr %10, ptr %5, align 8
+  %11 = load ptr, ptr %3, align 8
+  %12 = call noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
+  %13 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
+  %14 = load i8, ptr %13, align 1
+  %15 = call noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %14, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %5) #4
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 true
+}
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #7
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
+  %7 = load ptr, ptr %6, align 8
+  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
+  ret void
+}
+
+declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6
+
+; Function Attrs: nounwind willreturn memory(write)
+declare dso_local void @llvm.seh.try.begin() #9
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret i1 false
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
+  %3 = alloca %"struct.std::coroutine_handle", align 8
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  %6 = inttoptr i64 %1 to ptr
+  store ptr %6, ptr %5, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret void
+}
+
+; Function Attrs: nounwind memory(none)
+declare dso_local void @llvm.seh.scope.end() #2
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  ret void
+}
+
+; Function Attrs: alwaysinline mustprogress
+define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca %"struct.std::coroutine_handle", align 8
+  %6 = alloca %"struct.std::coroutine_handle.0", align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %7 = load ptr, ptr %4, align 8
+  %8 = load ptr, ptr %3, align 8
+  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
+  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
+  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
+  %10 = load ptr, ptr %9, align 8
+  %11 = ptrtoint ptr %10 to i64
+  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
+  ret void
+}
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #4
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
+  %6 = load ptr, ptr %5, align 8
+  %7 = icmp ne ptr %6, null
+  br i1 %7, label %8, label %14
+
+8:                                                ; preds = %1
+  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
+  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
+  %13 = load ptr, ptr %12, align 8
+  call void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #4
+  br label %14
+
+14:                                               ; preds = %8, %1
+  ret void
+}
+
+; Function Attrs: nobuiltin nounwind
+declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #10
+
+; Function Attrs: nounwind memory(argmem: read)
+declare ptr @llvm.coro.free(token, ptr nocapture readonly) #11
+
+; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
+define dso_local noundef i32 @main() #12 personality ptr @__CxxFrameHandler3 {
+  %1 = alloca %"class.std::unique_ptr", align 8
+  %2 = alloca %"class.std::unique_ptr", align 8
+  %3 = alloca %struct.task, align 1
+  %4 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %5 unwind label %14
+
+5:                                                ; preds = %0
+  %6 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
+  invoke void @llvm.seh.scope.begin()
+          to label %7 unwind label %11
+
+7:                                                ; preds = %5
+  invoke void @llvm.seh.scope.end()
+          to label %8 unwind label %11
+
+8:                                                ; preds = %7
+  invoke void @llvm.seh.scope.end()
+          to label %9 unwind label %14
+
+9:                                                ; preds = %8
+  %10 = call i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr noundef %2, ptr noundef %1)
+  ret i32 0
+
+11:                                               ; preds = %7, %5
+  %12 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %12) ]
+          to label %13 unwind label %14
+
+13:                                               ; preds = %11
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4 [ "funclet"(token %12) ]
+  cleanupret from %12 unwind label %14
+
+14:                                               ; preds = %8, %13, %11, %0
+  %15 = cleanuppad within none []
+  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %15) ]
+  cleanupret from %15 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
+  %7 = load i8, ptr %6, align 1
+  %8 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i8 %7) #4
+  ret ptr %4
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  %3 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %4 = load ptr, ptr %2, align 8
+  store ptr null, ptr %3, align 8
+  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
+  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
+  %7 = call noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #4
+  ret ptr %7
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
+  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
+  ret ptr %5
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 {
+  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
+  %6 = alloca ptr, align 8
+  %7 = alloca ptr, align 8
+  %8 = alloca ptr, align 8
+  %9 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
+  store i8 %1, ptr %9, align 1
+  store ptr %3, ptr %6, align 8
+  store ptr %2, ptr %7, align 8
+  store ptr %0, ptr %8, align 8
+  %10 = load ptr, ptr %8, align 8
+  %11 = load ptr, ptr %7, align 8
+  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %10, i32 0, i32 0
+  %13 = load ptr, ptr %6, align 8
+  %14 = load ptr, ptr %13, align 8
+  store ptr %14, ptr %12, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  %5 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = load ptr, ptr %6, align 8
+  store ptr %7, ptr %5, align 8
+  %8 = load ptr, ptr %3, align 8
+  %9 = load ptr, ptr %4, align 8
+  store ptr null, ptr %9, align 8
+  %10 = load ptr, ptr %5, align 8
+  ret ptr %10
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %0, ptr %3, align 8
+  store ptr %1, ptr %4, align 8
+  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
+  store ptr %6, ptr %7, align 8
+  ret void
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
+  %2 = alloca ptr, align 8
+  store ptr %0, ptr %2, align 8
+  %3 = load ptr, ptr %2, align 8
+  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
+  store ptr null, ptr %4, align 8
+  ret ptr %3
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
+  %3 = alloca ptr, align 8
+  %4 = alloca ptr, align 8
+  store ptr %1, ptr %3, align 8
+  store ptr %0, ptr %4, align 8
+  %5 = load ptr, ptr %4, align 8
+  %6 = load ptr, ptr %3, align 8
+  %7 = icmp eq ptr %6, null
+  br i1 %7, label %11, label %8
+
+8:                                                ; preds = %2
+  invoke void @llvm.seh.scope.begin()
+          to label %9 unwind label %12
+
+9:                                                ; preds = %8
+  invoke void @llvm.seh.scope.end()
+          to label %10 unwind label %12
+
+10:                                               ; preds = %9
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14
+  br label %11
+
+11:                                               ; preds = %10, %2
+  ret void
+
+12:                                               ; preds = %9, %8
+  %13 = cleanuppad within none []
+  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14 [ "funclet"(token %13) ]
+  cleanupret from %13 unwind to caller
+}
+
+; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
+define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
+  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
+  %4 = alloca ptr, align 8
+  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
+  store i8 %1, ptr %5, align 1
+  store ptr %0, ptr %4, align 8
+  %6 = load ptr, ptr %4, align 8
+  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %6, i32 0, i32 0
+  store ptr null, ptr %7, align 8
+  ret ptr %6
+}
+
+attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #2 = { nounwind memory(none) }
+attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #4 = { nounwind }
+attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #7 = { nomerge nounwind }
+attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
+attributes #9 = { nounwind willreturn memory(write) }
+attributes #10 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #11 = { nounwind memory(argmem: read) }
+attributes #12 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
+attributes #13 = { allocsize(0) }
+attributes #14 = { builtin nounwind }
+
+!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7}
+!llvm.module.flags = !{!8, !9, !10, !11, !12}
+!llvm.ident = !{!13}
+
+!0 = !{!"/DEFAULTLIB:libcmt.lib"}
+!1 = !{!"/DEFAULTLIB:oldnames.lib"}
+!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
+!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
+!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
+!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
+!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
+!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
+!8 = !{i32 1, !"wchar_size", i32 2}
+!9 = !{i32 2, !"eh-asynch", i32 1}
+!10 = !{i32 8, !"PIC Level", i32 2}
+!11 = !{i32 7, !"uwtable", i32 2}
+!12 = !{i32 1, !"MaxTLSAlign", i32 65536}
+!13 = !{!"clang version 20.1.6"}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
new file mode 100644
index 0000000000000..2248fcc65fcc4
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
@@ -0,0 +1,76 @@
+; In coro-split, this coroutine code reduced IR, produced using clang with async-exceptions
+; crashed before fix because of the validation mismatch of Instruction does not dominate all uses!
+; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
+; RUN: opt < %s -passes='default<Os>,coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+; Function Attrs: presplitcoroutine
+define i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr %0) #0 personality ptr null {
+  invoke void @llvm.seh.scope.begin()
+          to label %2 unwind label %14
+
+2:                                                ; preds = %1
+  %3 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
+  %4 = load volatile ptr, ptr null, align 8
+  %5 = call ptr @llvm.coro.begin(token %3, ptr %4)
+  %6 = call token @llvm.coro.save(ptr null)
+  %7 = call i8 @llvm.coro.suspend(token none, i1 false)
+  invoke void @llvm.seh.try.begin()
+          to label %common.ret unwind label %8
+
+common.ret:                                       ; preds = %12, %10, %2
+  ret i8 0
+
+8:                                                ; preds = %2
+  %9 = catchswitch within none [label %10] unwind label %12
+
+10:                                               ; preds = %8
+  %11 = catchpad within %9 [ptr null, i32 0, ptr null]
+  br label %common.ret
+
+12:                                               ; preds = %8
+  %13 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end()
+          to label %common.ret unwind label %14
+
+14:                                               ; preds = %12, %1
+  %15 = cleanuppad within none []
+  store i32 0, ptr %0, align 4
+  br label %common.ret
+}
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.begin() #1
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #3
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #4
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #3
+
+; Function Attrs: nounwind willreturn memory(write)
+declare void @llvm.seh.try.begin() #5
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.end() #1
+
+; uselistorder directives
+uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
+
+attributes #0 = { presplitcoroutine }
+attributes #1 = { nounwind memory(none) }
+attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #3 = { nounwind }
+attributes #4 = { nomerge nounwind }
+attributes #5 = { nounwind willreturn memory(write) }
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 2, !"eh-asynch", i32 1}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll
new file mode 100644
index 0000000000000..b2ba6a1409216
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll
@@ -0,0 +1,75 @@
+; In coro-split, this coroutine standard code reduced IR, produced using clang with async-exceptions
+; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
+; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Unwind edges out of a funclet pad must have the same unwind dest"
+
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+; Function Attrs: presplitcoroutine
+define i1 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"() #0 personality ptr null {
+  %1 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
+  %2 = call ptr @llvm.coro.begin(token %1, ptr null)
+  %3 = call token @llvm.coro.save(ptr null)
+  %4 = call i8 @llvm.coro.suspend(token none, i1 false)
+  invoke void @llvm.seh.try.begin()
+          to label %common.ret unwind label %5
+
+common.ret:                                       ; preds = %11, %13, %7, %0
+  %common.ret.op = phi i1 [ false, %11], [false, %13 ], [false, %7], [false, %0]
+  ret i1 %common.ret.op
+
+5:                                                ; preds = %0
+  %6 = catchswitch within none [label %7] unwind label %9
+
+7:                                                ; preds = %5
+  %8 = catchpad within %6 [ptr null, i32 0, ptr null]
+  br label %common.ret
+
+9:                                                ; preds = %5
+  %10 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end() [ "funclet"(token %10) ]
+          to label %11 unwind label %13
+
+11:                                               ; preds = %9
+  %12 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %10) ]
+  br label %common.ret
+
+13:                                               ; preds = %9
+  %14 = cleanuppad within none []
+  br label %common.ret
+}
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #1
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #2
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #3
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #2
+
+; Function Attrs: nounwind willreturn memory(write)
+declare void @llvm.seh.try.begin() #4
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.end() #5
+
+; Function Attrs: nounwind
+declare i1 @llvm.coro.end(ptr, i1, token) #2
+
+; uselistorder directives
+uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 }
+
+attributes #0 = { presplitcoroutine }
+attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #2 = { nounwind }
+attributes #3 = { nomerge nounwind }
+attributes #4 = { nounwind willreturn memory(write) }
+attributes #5 = { nounwind memory(none) }
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 2, !"eh-asynch", i32 1}

>From 5899a93c011250ac4dacbef87fa6aaba0a75fa02 Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 27 Jul 2025 19:28:46 +0300
Subject: [PATCH 5/8] [Coroutines] fixed the bugs introduced in the last 3
 tests, improved split performance

---
 llvm/lib/Transforms/Coroutines/CoroFrame.cpp | 276 ++++++++++---------
 1 file changed, 148 insertions(+), 128 deletions(-)

diff --git a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
index a3ec5d3cb06ea..06959b7bef9b9 100644
--- a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
+++ b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp
@@ -17,6 +17,7 @@
 
 #include "CoroInternal.h"
 #include "llvm/ADT/ScopeExit.h"
+#include "llvm/ADT/SmallSet.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/Analysis/StackLifetime.h"
 #include "llvm/IR/DIBuilder.h"
@@ -975,157 +976,176 @@ static StructType *buildFrameType(Function &F, coro::Shape &Shape,
   return FrameTy;
 }
 
-// Fixer for the "Instruction does not dominate all uses!" bug
-// The fix consists of mapping problematic paths (where CoroBegin does not
-// dominate cleanup BBs) and clones them to 2 flows - the one that insertSpills
-// intended to create (using the spill) and another one, preserving the logics
-// of pre-splitting, which would be triggered if unwinding happened before
-// CoroBegin
-static void
-splitBasicBlocksNotDominatedByCoroBegin(const FrameDataInfo &FrameData,
-                                        coro::Shape &Shape, Function *F,
-                                        DominatorTree &DT) {
-  ValueToValueMapTy VMap;
-  DenseMap<BasicBlock *, BasicBlock *>
-ProcessedSpillBlockToAlternativeUnspilledBlockMap;
-  bool FunctionHasSomeBlockNotDominatedByCoroBegin;
-  SmallVector<BasicBlock *> SpillUserBlocks;
-  
-  for (const auto &E : FrameData.Spills) {
-    for (auto *U : E.second) {
-      if (std::find(SpillUserBlocks.begin(), SpillUserBlocks.end(),
-U->getParent()) == SpillUserBlocks.end()) {
-        SpillUserBlocks.push_back(U->getParent());
-      }
-    }
-  }
-  SpillUserBlocks.push_back(Shape.AllocaSpillBlock);
-
-  do {
-    FunctionHasSomeBlockNotDominatedByCoroBegin = false;
-    // We want to traverse the function post-order (predecessors first),
-    // and check dominance starting CoroBegin
-    bool HaveTraversedCoroBegin = false;
-    for (BasicBlock *CurrentBlock : ReversePostOrderTraversal<Function *>(F)) {
-      if (!HaveTraversedCoroBegin &&
-CurrentBlock != Shape.CoroBegin->getParent()) {
-        continue;
-      }
-      HaveTraversedCoroBegin = true;
-      
-      // Focus on 2 types of users that produce errors - those in
-      // FrameData.Spills, and decendants of Shape.AllocaSpillBlocks
-      if (!DT.dominates(Shape.CoroBegin, CurrentBlock) &&
-std::find(SpillUserBlocks.begin(), SpillUserBlocks.end(),
-CurrentBlock) != SpillUserBlocks.end()) {
-        // Mark another iteration of the loop is needed, to verify that no more
-        // dominance issues after current run
-        FunctionHasSomeBlockNotDominatedByCoroBegin = true;
-
-        // Clone (preserve) the current basic block, before it will be modified
-        // by insertSpills
-        auto UnspilledAlternativeBlock =
-CloneBasicBlock(CurrentBlock, VMap, ".unspilled_alternative", F);
+// This function assumes that it is being called on basic block in reversed
+// post-order, meaning predecessors are visited before successors failing to do
+// so will cause VMap to be non-valid and will cause instructions to fail
+// mapping to their corresponding clones
+static void finalizeBasicBlockCloneAndTrackSuccessors(
+    BasicBlock *InitialBlock, BasicBlock *ClonedBlock, ValueToValueMapTy &VMap,
+    SmallSet<BasicBlock *, 20> &SuccessorBlocksSet) {
+  // This code will examine the basic block, fix issues caused by clones
+  //  for example - tailor cleanupret to the corresponding cleanuppad
+  //  it will use VMap to do so
+  // in addition, it will add the node successors to SuccessorBlocksSet
 
         // Remap the instructions, VMap here aggregates instructions across
-        // multiple BasicBlocks, and we assume that traversal is post-order,
+        // multiple BasicBlocks, and we assume that traversal is reversed post-order,
         // therefore successor blocks (for example instructions having funclet
         // tags) will be mapped correctly to the new cloned cleanuppad
-        for (Instruction &I : *UnspilledAlternativeBlock) {
-          RemapInstruction(&I, VMap,
+        for (Instruction &ClonedBlockInstruction : *ClonedBlock) {
+          RemapInstruction(&ClonedBlockInstruction, VMap,
 RF_NoModuleLevelChanges | RF_IgnoreMissingLocals);
         }
 
-        // Keep track between the processed spill basic block and the cloned
-        // alternative unspilled basic block Will help us fix instructions that
-        // their context is complex (for example cleanuppad of funclet is
-        // defined in another BB)
-        ProcessedSpillBlockToAlternativeUnspilledBlockMap[CurrentBlock] =
-UnspilledAlternativeBlock;
-
-        SmallVector<Instruction *> FixUpPredTerminators;
-
-        // Find the specific predecessors that does not dominated by
-        // Shape.CoroBegin We don't fix them here but later because it's not
-        // safe while using predecessors as iterator function
-        for (BasicBlock *Pred : predecessors(CurrentBlock)) {
-          if (!DT.dominates(Shape.CoroBegin, Pred)) {
-            FixUpPredTerminators.push_back(Pred->getTerminator());
-          }
-        }
+        const auto &InitialBlockTerminator = InitialBlock->getTerminator();
 
-        // Fixups for current block terminator
-        const auto &CurrentBlockTerminator = CurrentBlock->getTerminator();
-
-        // If it's cleanupret, find the correspondant cleanuppad (use the map to
-        // find it)
-        if (auto CurrentBlockCleanupReturnTerminator =
-dyn_cast<CleanupReturnInst>(CurrentBlockTerminator)) {
-          BasicBlock *CBCPBB =
-CurrentBlockCleanupReturnTerminator->getCleanupPad()->getParent();
-          CleanupReturnInst *DBT = dyn_cast<CleanupReturnInst>(
-UnspilledAlternativeBlock->getTerminator());
-
-          // Again assuming post-order traversal - if we mapped the predecessing
-          // cleanuppad block before, we should find it here If not, do nothing
-          if (ProcessedSpillBlockToAlternativeUnspilledBlockMap.contains(
-CBCPBB)) {
-            Instruction *DCPr =
-&ProcessedSpillBlockToAlternativeUnspilledBlockMap[CBCPBB]
-->front();           
-            CleanupPadInst *DCP = cast<CleanupPadInst>(DCPr);
-            DBT->setCleanupPad(DCP);
-          }
+        // If it's cleanupret, find the correspondant cleanuppad (use the VMap to
+        // find it).
+        if (auto *InitialBlockTerminatorCleanupReturn =
+dyn_cast<CleanupReturnInst>(InitialBlockTerminator)) {
+    // if none found do nothing
+    if (VMap.find(InitialBlockTerminatorCleanupReturn->getCleanupPad()) ==
+        VMap.end()) {
+      return;
+    }
 
+    auto *ClonedBlockTerminatorCleanupReturn =
+cast<CleanupReturnInst>(ClonedBlock->getTerminator());
+
+          // Assuming reversed post-order traversal
+    llvm::Value *ClonedBlockCleanupPadValue =
+        VMap[InitialBlockTerminatorCleanupReturn->getCleanupPad()];
+    auto *ClonedBlockCleanupPad =
+cast<CleanupPadInst>(ClonedBlockCleanupPadValue);
+            ClonedBlockTerminatorCleanupReturn->setCleanupPad(ClonedBlockCleanupPad);
+          
         // If it's a branch/invoke, keep track of its successors, we want to
-          // calculate dominance between CoroBegin and them also They might need
-          // clone as well
-        } else if (auto CurrentBlockBranchTerminator =
-dyn_cast<BranchInst>(CurrentBlockTerminator)) {
+          // calculate dominance between CoroBegin and them also
+        } else if (auto *InitialBlockTerminatorBranch =
+dyn_cast<BranchInst>(InitialBlockTerminator)) {
           for (unsigned int successorIdx = 0;
-successorIdx < CurrentBlockBranchTerminator->getNumSuccessors();
+successorIdx < InitialBlockTerminatorBranch->getNumSuccessors();
 ++successorIdx) {
-            SpillUserBlocks.push_back(
-CurrentBlockBranchTerminator->getSuccessor(successorIdx));
+            SuccessorBlocksSet.insert(
+          InitialBlockTerminatorBranch->getSuccessor(successorIdx));
           }
-        } else if (auto CurrentBlockInvokeTerminator =
-dyn_cast<InvokeInst>(CurrentBlockTerminator)) {
-          SpillUserBlocks.push_back(
-CurrentBlockInvokeTerminator->getUnwindDest());
+        } else if (auto *InitialBlockTerminatorInvoke =
+dyn_cast<InvokeInst>(InitialBlockTerminator)) {
+    SuccessorBlocksSet.insert(InitialBlockTerminatorInvoke->getUnwindDest());
+  } else if (isa<ReturnInst>(InitialBlockTerminator)) {
+    // No action needed
         } else {
-          report_fatal_error("Not implemented terminator for this specific "
-                             "instruction fixup in current block fixups");
-        }
+          InitialBlockTerminator->print(dbgs());
+    report_fatal_error("Terminator is not implemented in "
+                       "finalizeBasicBlockCloneAndTrackSuccessors");
+  }
+}
 
-        // Fixups on the predecessors terminator - direct them to out untouched
-        // alternative block to break dominance error.
-        for (auto FixUpPredTerminator : FixUpPredTerminators) {
-          if (auto FixUpPredTerminatorInvoke =
-dyn_cast<InvokeInst>(FixUpPredTerminator)) {
-            FixUpPredTerminatorInvoke->setUnwindDest(UnspilledAlternativeBlock);
-          } else if (auto FixUpPredTerminatorBranch =
-dyn_cast<BranchInst>(FixUpPredTerminator)) {
+// Dominance issue fixer for each predecessor satisfying predicate function
+void splitIfBasicBlockPredecessors(
+    BasicBlock *InitialBlock, BasicBlock *ReplacementBlock,
+    std::function<bool(BasicBlock *)> Predicate) {
+
+  SmallVector<BasicBlock *> InitialBlockPredecessors;
+
+  auto Predecessors = predecessors(InitialBlock);
+  std::copy_if(Predecessors.begin(), Predecessors.end(),
+               std::back_inserter(InitialBlockPredecessors), Predicate);
+
+        // Fixups on the predecessors terminator - point them to ReplacementBlock.
+  for (auto *InitialBlockPredecessor : InitialBlockPredecessors) {
+    auto *InitialBlockPredecessorTerminator =
+        InitialBlockPredecessor->getTerminator();
+    if (auto *InitialBlockPredecessorTerminatorInvoke =
+dyn_cast<InvokeInst>(InitialBlockPredecessorTerminator)) {
+      if (InitialBlock ==
+          InitialBlockPredecessorTerminatorInvoke->getUnwindDest()) {
+        InitialBlockPredecessorTerminatorInvoke->setUnwindDest(
+            ReplacementBlock);
+      } else {
+        InitialBlockPredecessorTerminatorInvoke->setNormalDest(
+            ReplacementBlock);
+      }
+    } else if (auto *InitialBlockPredecessorTerminatorBranch =
+dyn_cast<BranchInst>(InitialBlockPredecessorTerminator)) {
             for (unsigned int successorIdx = 0;
-                successorIdx < FixUpPredTerminatorBranch->getNumSuccessors();
+                successorIdx <
+           InitialBlockPredecessorTerminatorBranch->getNumSuccessors();
                 ++successorIdx) {
-              if (CurrentBlock ==
-FixUpPredTerminatorBranch->getSuccessor(successorIdx)) {
-                FixUpPredTerminatorBranch->setSuccessor(
-successorIdx, UnspilledAlternativeBlock);
-              }
-            }
+              if (InitialBlock ==
+InitialBlockPredecessorTerminatorBranch->getSuccessor(
+successorIdx)) {
+                InitialBlockPredecessorTerminatorBranch->setSuccessor(
+successorIdx, ReplacementBlock);
+        }
+      }
+    } else if (auto *InitialBlockPredecessorTerminatorCleanupReturn =
+                   dyn_cast<CleanupReturnInst>(
+                       InitialBlockPredecessorTerminator)) {
+      InitialBlockPredecessorTerminatorCleanupReturn->setUnwindDest(
+          ReplacementBlock);
           } else {
-            report_fatal_error("Not implemented terminator for this specific "
-                               "instruction in pred fixups");
+            InitialBlockPredecessorTerminator->print(dbgs());
+      report_fatal_error(
+          "Terminator is not implemented in splitIfBasicBlockPredecessors");
+    }
+  }
+}
+
+// Fixer for the "Instruction does not dominate all uses!" bug
+// The fix consists of mapping problematic paths (where CoroBegin does not
+// dominate cleanup nodes) and duplicates them to 2 flows - the one that
+// insertSpills intended to create (using the spill) and another one, preserving
+// the logics of pre-splitting, which would be triggered if unwinding happened
+// before CoroBegin
+static void
+splitBasicBlocksNotDominatedByCoroBegin(const FrameDataInfo &FrameData,
+                                        const coro::Shape &Shape, Function *F,
+                                        DominatorTree &DT) {
+  ValueToValueMapTy VMap;
+  SmallSet<BasicBlock *, 20> SpillUserBlocksSet;
+
+  // Prepare the node set, logics will be run only on those nodes
+  for (const auto &E : FrameData.Spills) {
+    for (auto *U : E.second) {
+      auto CurrentBlock = U->getParent();
+      if (!DT.dominates(Shape.CoroBegin, CurrentBlock)) {
+        SpillUserBlocksSet.insert(CurrentBlock);
+      }
           }
         }
         
-        // We changed dominance tree, so recalculate.
-        DT.recalculate(*F);
+        // Run is in reversed post order, to enforce visiting predecessors before
+  // successors
+  for (BasicBlock *CurrentBlock : ReversePostOrderTraversal<Function *>(F)) {
+    if (!SpillUserBlocksSet.contains(CurrentBlock)) {
         continue;
       }
-    }
-  } while (FunctionHasSomeBlockNotDominatedByCoroBegin);
+    SpillUserBlocksSet.erase(CurrentBlock);
+
+    // Preserve the current node. the duplicate will become the unspilled
+    // alternative
+    auto UnspilledAlternativeBlock =
+        CloneBasicBlock(CurrentBlock, VMap, ".unspilled_alternative", F);
+
+    // Remap node instructions, keep track of successors to visit them in next
+    // iterations
+    finalizeBasicBlockCloneAndTrackSuccessors(
+        CurrentBlock, UnspilledAlternativeBlock, VMap, SpillUserBlocksSet);
+
+    // Split only if predecessor breaks dominance against CoroBegin
+    splitIfBasicBlockPredecessors(CurrentBlock, UnspilledAlternativeBlock,
+                                  [&DT, &Shape](BasicBlock *PredecessorNode) {
+                                    return !DT.dominates(Shape.CoroBegin,
+                                                         PredecessorNode);
+                                  });
+
+    // We changed dominance tree, so recalculate
+    DT.recalculate(*F);
+  }
+
+  assert(SpillUserBlocksSet.empty() &&
+         "Graph is corrupted by SpillUserBlocksSet");
 }
 
 // Replace all alloca and SSA values that are accessed across suspend points

>From 428d6b45a11675ae358b9deb99648e4c939ab3f3 Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Thu, 31 Jul 2025 18:31:20 +0300
Subject: [PATCH 6/8] [Coroutines] removed 3 non-reduced tests that are
 redundant due to their reduced versions

---
 .../Coroutines/pr148035_0_coroutine.ll        | 7609 -----------------
 .../pr148035_1_coroutine_w_std_unique.ll      |  866 --
 ...coroutine_w_arg_w_move_ctor_and_deleter.ll |  727 --
 3 files changed, 9202 deletions(-)
 delete mode 100644 llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
 delete mode 100644 llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
 delete mode 100644 llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll

diff --git a/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll b/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
deleted file mode 100644
index 2457bc3045cec..0000000000000
--- a/llvm/test/Transforms/Coroutines/pr148035_0_coroutine.ll
+++ /dev/null
@@ -1,7609 +0,0 @@
-; This is the cppreference example for coroutines, in llvm IR form, built with async exceptions flag.
-; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
-; RUN: opt < %s -passes=coro-split -S | FileCheck %s
-; CHECK: define
-
-; ModuleID = 'coroutine.cpp'
-source_filename = "coroutine.cpp"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
-%"class.std::basic_ostream" = type { ptr, [4 x i8], i32, %"class.std::basic_ios" }
-%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, ptr, i8 }
-%"class.std::ios_base" = type { ptr, i64, i32, i32, i32, i64, i64, ptr, ptr, ptr }
-%rtti.TypeDescriptor23 = type { ptr, ptr, [24 x i8] }
-%eh.CatchableType = type { i32, i32, i32, i32, i32, i32, i32 }
-%rtti.TypeDescriptor19 = type { ptr, ptr, [20 x i8] }
-%eh.CatchableTypeArray.2 = type { i32, [2 x i32] }
-%eh.ThrowInfo = type { i32, i32, i32, i32 }
-%rtti.CompleteObjectLocator = type { i32, i32, i32, i32, i32, i32 }
-%rtti.ClassHierarchyDescriptor = type { i32, i32, i32, i32 }
-%rtti.BaseClassDescriptor = type { i32, i32, i32, i32, i32, i32, i32 }
-%"struct.std::nostopstate_t" = type { i8 }
-%rtti.TypeDescriptor26 = type { ptr, ptr, [27 x i8] }
-%rtti.TypeDescriptor22 = type { ptr, ptr, [23 x i8] }
-%eh.CatchableTypeArray.5 = type { i32, [5 x i32] }
-%"union.std::error_category::_Addr_storage" = type { i64 }
-%rtti.TypeDescriptor35 = type { ptr, ptr, [36 x i8] }
-%rtti.TypeDescriptor24 = type { ptr, ptr, [25 x i8] }
-%"struct.std::_Fake_allocator" = type { i8 }
-%rtti.TypeDescriptor30 = type { ptr, ptr, [31 x i8] }
-%eh.CatchableTypeArray.3 = type { i32, [3 x i32] }
-%struct.awaitable = type { ptr }
-%struct.task = type { i8 }
-%"struct.task::promise_type" = type { i8 }
-%"struct.std::suspend_never" = type { i8 }
-%"class.std::thread::id" = type { i32 }
-%"struct.std::coroutine_handle" = type { ptr }
-%"struct.std::coroutine_handle.0" = type { ptr }
-%"class.std::basic_ostream<char>::sentry" = type { %"class.std::basic_ostream<char>::_Sentry_base", i8 }
-%"class.std::basic_ostream<char>::_Sentry_base" = type { ptr }
-%"class.std::runtime_error" = type { %"class.std::exception" }
-%"class.std::exception" = type { ptr, %struct.__std_exception_data }
-%struct.__std_exception_data = type { ptr, i8 }
-%"class.std::jthread" = type { %"class.std::thread", %"class.std::stop_source" }
-%"class.std::thread" = type { %struct._Thrd_t }
-%struct._Thrd_t = type { ptr, i32 }
-%"class.std::stop_source" = type { ptr }
-%class.anon = type { %"struct.std::coroutine_handle" }
-%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
-%"class.std::_Compressed_pair" = type { ptr }
-%"struct.std::_Stop_state" = type { %"struct.std::atomic", %"struct.std::atomic", %"class.std::_Locked_pointer", %"struct.std::atomic.6", i32 }
-%"struct.std::atomic" = type { %"struct.std::_Atomic_integral_facade" }
-%"struct.std::_Atomic_integral_facade" = type { %"struct.std::_Atomic_integral" }
-%"struct.std::_Atomic_integral" = type { %"struct.std::_Atomic_storage" }
-%"struct.std::_Atomic_storage" = type { %"struct.std::_Atomic_padded" }
-%"struct.std::_Atomic_padded" = type { i32 }
-%"class.std::_Locked_pointer" = type { %"struct.std::atomic.1" }
-%"struct.std::atomic.1" = type { %"struct.std::_Atomic_integral_facade.2" }
-%"struct.std::_Atomic_integral_facade.2" = type { %"struct.std::_Atomic_integral.3" }
-%"struct.std::_Atomic_integral.3" = type { %"struct.std::_Atomic_storage.4" }
-%"struct.std::_Atomic_storage.4" = type { %"struct.std::_Atomic_padded.5" }
-%"struct.std::_Atomic_padded.5" = type { i64 }
-%"struct.std::atomic.6" = type { %"struct.std::_Atomic_pointer" }
-%"struct.std::_Atomic_pointer" = type { %"struct.std::_Atomic_storage.7" }
-%"struct.std::_Atomic_storage.7" = type { %"struct.std::_Atomic_padded.8" }
-%"struct.std::_Atomic_padded.8" = type { ptr }
-%"struct.std::_Exact_args_t" = type { i8 }
-%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
-%"class.std::tuple" = type { %"struct.std::_Tuple_val" }
-%"struct.std::_Tuple_val" = type { %class.anon }
-%"class.std::_Stop_callback_base" = type { ptr, ptr, ptr, ptr }
-%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr }
-%"class.std::ios_base::failure" = type { %"class.std::system_error" }
-%"class.std::system_error" = type { %"class.std::_System_error" }
-%"class.std::_System_error" = type { %"class.std::runtime_error", %"class.std::error_code" }
-%"class.std::error_code" = type { i32, ptr }
-%"class.std::basic_string" = type { %"class.std::_Compressed_pair.10" }
-%"class.std::_Compressed_pair.10" = type { %"class.std::_String_val" }
-%"class.std::_String_val" = type { %"union.std::_String_val<std::_Simple_types<char>>::_Bxty", i64, i64 }
-%"union.std::_String_val<std::_Simple_types<char>>::_Bxty" = type { ptr, [8 x i8] }
-%"class.std::error_condition" = type { i32, ptr }
-%"struct.std::_Fake_proxy_ptr_impl" = type { i8 }
-%"class.std::bad_array_new_length" = type { %"class.std::bad_alloc" }
-%"class.std::bad_alloc" = type { %"class.std::exception" }
-%"class.std::error_category" = type { ptr, %"union.std::error_category::_Addr_storage" }
-%"class.std::allocator" = type { i8 }
-%"struct.std::_One_then_variadic_args_t" = type { i8 }
-%class.anon.11 = type { i8 }
-
-$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
-
-$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
-
-$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
-
-$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
-
-$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
-
-$"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z" = comdat any
-
-$"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z" = comdat any
-
-$"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z" = comdat any
-
-$"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ" = comdat any
-
-$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"??0jthread at std@@QEAA at XZ" = comdat any
-
-$"??1jthread at std@@QEAA at XZ" = comdat any
-
-$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
-
-$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
-
-$"??0id at thread@std@@AEAA at I@Z" = comdat any
-
-$"?joinable at jthread@std@@QEBA_NXZ" = comdat any
-
-$"??0runtime_error at std@@QEAA at PEBD@Z" = comdat any
-
-$"??0runtime_error at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??0exception at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??1runtime_error at std@@UEAA at XZ" = comdat any
-
-$"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
-
-$"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ" = comdat any
-
-$"?joinable at thread@std@@QEBA_NXZ" = comdat any
-
-$"??0exception at std@@QEAA at QEBD@Z" = comdat any
-
-$"??1exception at std@@UEAA at XZ" = comdat any
-
-$"??_Gruntime_error at std@@UEAAPEAXI at Z" = comdat any
-
-$"?what at exception@std@@UEBAPEBDXZ" = comdat any
-
-$"??_Gexception at std@@UEAAPEAXI at Z" = comdat any
-
-$"??0thread at std@@QEAA at XZ" = comdat any
-
-$"??0stop_source at std@@QEAA at XZ" = comdat any
-
-$"??1stop_source at std@@QEAA at XZ" = comdat any
-
-$"??1thread at std@@QEAA at XZ" = comdat any
-
-$"??0_Stop_state at std@@QEAA at XZ" = comdat any
-
-$"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ" = comdat any
-
-$"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z" = comdat any
-
-$"??0?$atomic at _K@std@@QEAA at XZ" = comdat any
-
-$"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z" = comdat any
-
-$"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z" = comdat any
-
-$"?resume@?$coroutine_handle at X@std@@QEBAXXZ" = comdat any
-
-$"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z" = comdat any
-
-$"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z" = comdat any
-
-$"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z" = comdat any
-
-$_Check_memory_order = comdat any
-
-$"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z" = comdat any
-
-$"?_Try_cancel_and_join at jthread@std@@AEAAXXZ" = comdat any
-
-$"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
-
-$"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z" = comdat any
-
-$"?request_stop at stop_source@std@@QEAA_NXZ" = comdat any
-
-$"?join at thread@std@@QEAAXXZ" = comdat any
-
-$"?_Request_stop at _Stop_state@std@@QEAA_NXZ" = comdat any
-
-$"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z" = comdat any
-
-$"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ" = comdat any
-
-$"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z" = comdat any
-
-$"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ" = comdat any
-
-$"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z" = comdat any
-
-$"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z" = comdat any
-
-$"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z" = comdat any
-
-$"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z" = comdat any
-
-$"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z" = comdat any
-
-$"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z" = comdat any
-
-$"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z" = comdat any
-
-$"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z" = comdat any
-
-$"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z" = comdat any
-
-$"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z" = comdat any
-
-$"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z" = comdat any
-
-$"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z" = comdat any
-
-$"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z" = comdat any
-
-$"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z" = comdat any
-
-$"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ" = comdat any
-
-$"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z" = comdat any
-
-$"??0stop_source at std@@QEAA@$$QEAV01@@Z" = comdat any
-
-$"?swap at stop_source@std@@QEAAXAEAV12@@Z" = comdat any
-
-$"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z" = comdat any
-
-$"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z" = comdat any
-
-$"?get_id at thread@std@@QEBA?AVid at 12@XZ" = comdat any
-
-$"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z" = comdat any
-
-$"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z" = comdat any
-
-$"?width at ios_base@std@@QEBA_JXZ" = comdat any
-
-$"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z" = comdat any
-
-$"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ" = comdat any
-
-$"?flags at ios_base@std@@QEBAHXZ" = comdat any
-
-$"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z" = comdat any
-
-$"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ" = comdat any
-
-$"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z" = comdat any
-
-$"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ" = comdat any
-
-$"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ" = comdat any
-
-$"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z" = comdat any
-
-$"?width at ios_base@std@@QEAA_J_J at Z" = comdat any
-
-$"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z" = comdat any
-
-$"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z" = comdat any
-
-$"?good at ios_base@std@@QEBA_NXZ" = comdat any
-
-$"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ" = comdat any
-
-$"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ" = comdat any
-
-$"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"?rdstate at ios_base@std@@QEBAHXZ" = comdat any
-
-$"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ" = comdat any
-
-$"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ" = comdat any
-
-$"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z" = comdat any
-
-$"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ" = comdat any
-
-$"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z" = comdat any
-
-$"?clear at ios_base@std@@QEAAXH_N at Z" = comdat any
-
-$"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z" = comdat any
-
-$"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z" = comdat any
-
-$"??0failure at ios_base@std@@QEAA at AEBV012@@Z" = comdat any
-
-$"??0system_error at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??0_System_error at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??1failure at ios_base@std@@UEAA at XZ" = comdat any
-
-$"?iostream_category at std@@YAAEBVerror_category at 1@XZ" = comdat any
-
-$"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z" = comdat any
-
-$"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ" = comdat any
-
-$"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z" = comdat any
-
-$"?name at _Iostream_error_category2@std@@UEBAPEBDXZ" = comdat any
-
-$"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z" = comdat any
-
-$"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z" = comdat any
-
-$"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z" = comdat any
-
-$"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z" = comdat any
-
-$"??1_Iostream_error_category2 at std@@UEAA at XZ" = comdat any
-
-$"??1error_category at std@@UEAA at XZ" = comdat any
-
-$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z" = comdat any
-
-$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z" = comdat any
-
-$"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
-
-$"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z" = comdat any
-
-$"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ" = comdat any
-
-$"??0?$allocator at D@std@@QEAA at XZ" = comdat any
-
-$"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ" = comdat any
-
-$"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ" = comdat any
-
-$"?_Xlen_string at std@@YAXXZ" = comdat any
-
-$"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ" = comdat any
-
-$"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z" = comdat any
-
-$"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z" = comdat any
-
-$"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z" = comdat any
-
-$"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ" = comdat any
-
-$"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z" = comdat any
-
-$"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z" = comdat any
-
-$"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z" = comdat any
-
-$"??$_Unfancy at D@std@@YAPEADPEAD at Z" = comdat any
-
-$"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z" = comdat any
-
-$"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ" = comdat any
-
-$"??$max at _K@std@@YAAEB_KAEB_K0 at Z" = comdat any
-
-$"??$min at _K@std@@YAAEB_KAEB_K0 at Z" = comdat any
-
-$"?max@?$numeric_limits at _J@std@@SA_JXZ" = comdat any
-
-$"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ" = comdat any
-
-$"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ" = comdat any
-
-$"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z" = comdat any
-
-$"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z" = comdat any
-
-$"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z" = comdat any
-
-$"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z" = comdat any
-
-$"??$_Get_size_of_n@$00 at std@@YA_K_K at Z" = comdat any
-
-$"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z" = comdat any
-
-$"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z" = comdat any
-
-$"?_Throw_bad_array_new_length at std@@YAXXZ" = comdat any
-
-$"??0bad_array_new_length at std@@QEAA at XZ" = comdat any
-
-$"??0bad_array_new_length at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??0bad_alloc at std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??1bad_array_new_length at std@@UEAA at XZ" = comdat any
-
-$"??0bad_alloc at std@@AEAA at QEBD@Z" = comdat any
-
-$"??1bad_alloc at std@@UEAA at XZ" = comdat any
-
-$"??_Gbad_array_new_length at std@@UEAAPEAXI at Z" = comdat any
-
-$"??0exception at std@@QEAA at QEBDH@Z" = comdat any
-
-$"??_Gbad_alloc at std@@UEAAPEAXI at Z" = comdat any
-
-$"??$_Convert_size at _K_K@std@@YA_K_K at Z" = comdat any
-
-$"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z" = comdat any
-
-$"??8error_category at std@@QEBA_NAEBV01@@Z" = comdat any
-
-$"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ" = comdat any
-
-$"?value at error_code@std@@QEBAHXZ" = comdat any
-
-$"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z" = comdat any
-
-$"??8std@@YA_NAEBVerror_condition at 0@0 at Z" = comdat any
-
-$"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ" = comdat any
-
-$"?value at error_condition@std@@QEBAHXZ" = comdat any
-
-$"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z" = comdat any
-
-$"??1system_error at std@@UEAA at XZ" = comdat any
-
-$"??_Gfailure at ios_base@std@@UEAAPEAXI at Z" = comdat any
-
-$"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z" = comdat any
-
-$"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ" = comdat any
-
-$"??1_System_error at std@@UEAA at XZ" = comdat any
-
-$"??_Gsystem_error at std@@UEAAPEAXI at Z" = comdat any
-
-$"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z" = comdat any
-
-$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z" = comdat any
-
-$"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z" = comdat any
-
-$"??_G_System_error at std@@UEAAPEAXI at Z" = comdat any
-
-$"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ" = comdat any
-
-$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z" = comdat any
-
-$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z" = comdat any
-
-$"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ" = comdat any
-
-$"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z" = comdat any
-
-$"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z" = comdat any
-
-$"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ" = comdat any
-
-$"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z" = comdat any
-
-$"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z" = comdat any
-
-$"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ" = comdat any
-
-$"?_Orphan_all at _Container_base0@std@@QEAAXXZ" = comdat any
-
-$"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z" = comdat any
-
-$"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z" = comdat any
-
-$"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z" = comdat any
-
-$"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z" = comdat any
-
-$"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z" = comdat any
-
-$"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ" = comdat any
-
-$"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z" = comdat any
-
-$"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z" = comdat any
-
-$"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z" = comdat any
-
-$"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z" = comdat any
-
-$"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ" = comdat any
-
-$"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ" = comdat any
-
-$"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z" = comdat any
-
-$"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z" = comdat any
-
-$"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ" = comdat any
-
-$"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ" = comdat any
-
-$"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z" = comdat any
-
-$"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ" = comdat any
-
-$"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z" = comdat any
-
-$"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z" = comdat any
-
-$"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@" = comdat any
-
-$"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@" = comdat any
-
-$"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@" = comdat any
-
-$"??_R0?AVruntime_error at std@@@8" = comdat any
-
-$"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" = comdat any
-
-$"??_R0?AVexception at std@@@8" = comdat any
-
-$"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" = comdat any
-
-$"_CTA2?AVruntime_error at std@@" = comdat any
-
-$"_TI2?AVruntime_error at std@@" = comdat any
-
-$"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@" = comdat any
-
-$"??_7runtime_error at std@@6B@" = comdat largest
-
-$"??_R4runtime_error at std@@6B@" = comdat any
-
-$"??_R3runtime_error at std@@8" = comdat any
-
-$"??_R2runtime_error at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@runtime_error at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@exception at std@@8" = comdat any
-
-$"??_R3exception at std@@8" = comdat any
-
-$"??_R2exception at std@@8" = comdat any
-
-$"??_7exception at std@@6B@" = comdat largest
-
-$"??_R4exception at std@@6B@" = comdat any
-
-$"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@" = comdat any
-
-$"?nostopstate at std@@3Unostopstate_t at 1@B" = comdat any
-
-$"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@" = comdat any
-
-$"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@" = comdat any
-
-$"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@" = comdat any
-
-$"??_R0?AVfailure at ios_base@std@@@8" = comdat any
-
-$"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" = comdat any
-
-$"??_R0?AVsystem_error at std@@@8" = comdat any
-
-$"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" = comdat any
-
-$"??_R0?AV_System_error at std@@@8" = comdat any
-
-$"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" = comdat any
-
-$"_CTA5?AVfailure at ios_base@std@@" = comdat any
-
-$"_TI5?AVfailure at ios_base@std@@" = comdat any
-
-$"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B" = comdat any
-
-$"??_7_Iostream_error_category2 at std@@6B@" = comdat largest
-
-$"??_R4_Iostream_error_category2 at std@@6B@" = comdat any
-
-$"??_R0?AV_Iostream_error_category2 at std@@@8" = comdat any
-
-$"??_R3_Iostream_error_category2 at std@@8" = comdat any
-
-$"??_R2_Iostream_error_category2 at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@error_category at std@@8" = comdat any
-
-$"??_R0?AVerror_category at std@@@8" = comdat any
-
-$"??_R3error_category at std@@8" = comdat any
-
-$"??_R2error_category at std@@8" = comdat any
-
-$"??_C at _08LLGCOLLL@iostream?$AA@" = comdat any
-
-$"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB" = comdat any
-
-$"?_Fake_alloc at std@@3U_Fake_allocator at 1@B" = comdat any
-
-$"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@" = comdat any
-
-$"??_R0?AVbad_array_new_length at std@@@8" = comdat any
-
-$"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" = comdat any
-
-$"??_R0?AVbad_alloc at std@@@8" = comdat any
-
-$"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" = comdat any
-
-$"_CTA3?AVbad_array_new_length at std@@" = comdat any
-
-$"_TI3?AVbad_array_new_length at std@@" = comdat any
-
-$"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@" = comdat any
-
-$"??_7bad_array_new_length at std@@6B@" = comdat largest
-
-$"??_R4bad_array_new_length at std@@6B@" = comdat any
-
-$"??_R3bad_array_new_length at std@@8" = comdat any
-
-$"??_R2bad_array_new_length at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@bad_array_new_length at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@bad_alloc at std@@8" = comdat any
-
-$"??_R3bad_alloc at std@@8" = comdat any
-
-$"??_R2bad_alloc at std@@8" = comdat any
-
-$"??_7bad_alloc at std@@6B@" = comdat largest
-
-$"??_R4bad_alloc at std@@6B@" = comdat any
-
-$"??_7failure at ios_base@std@@6B@" = comdat largest
-
-$"??_R4failure at ios_base@std@@6B@" = comdat any
-
-$"??_R3failure at ios_base@std@@8" = comdat any
-
-$"??_R2failure at ios_base@std@@8" = comdat any
-
-$"??_R1A@?0A at EA@failure at ios_base@std@@8" = comdat any
-
-$"??_R1A@?0A at EA@system_error at std@@8" = comdat any
-
-$"??_R3system_error at std@@8" = comdat any
-
-$"??_R2system_error at std@@8" = comdat any
-
-$"??_R1A@?0A at EA@_System_error at std@@8" = comdat any
-
-$"??_R3_System_error at std@@8" = comdat any
-
-$"??_R2_System_error at std@@8" = comdat any
-
-$"??_7system_error at std@@6B@" = comdat largest
-
-$"??_R4system_error at std@@6B@" = comdat any
-
-$"??_7_System_error at std@@6B@" = comdat largest
-
-$"??_R4_System_error at std@@6B@" = comdat any
-
-$"??_C at _02LMMGGCAJ@?3?5?$AA@" = comdat any
-
-@"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A" = external dso_local global %"class.std::basic_ostream", align 8
-@"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [30 x i8] c"Coroutine started on thread: \00", comdat, align 1
-@"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [30 x i8] c"Coroutine resumed on thread: \00", comdat, align 1
-@"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@" = linkonce_odr dso_local unnamed_addr constant [35 x i8] c"Output jthread parameter not empty\00", comdat, align 1
-@"??_7type_info@@6B@" = external constant ptr
-@"??_R0?AVruntime_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor23 { ptr @"??_7type_info@@6B@", ptr null, [24 x i8] c".?AVruntime_error at std@@\00" }, comdat
- at __ImageBase = external dso_local constant i8
-@"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_R0?AVexception at std@@@8" = linkonce_odr global %rtti.TypeDescriptor19 { ptr @"??_7type_info@@6B@", ptr null, [20 x i8] c".?AVexception at std@@\00" }, comdat
-@"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0exception at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"_CTA2?AVruntime_error at std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.2 { i32 2, [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
-@"_TI2?AVruntime_error at std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1runtime_error at std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA2?AVruntime_error at std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [16 x i8] c"New thread ID: \00", comdat, align 1
- at 0 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4runtime_error at std@@6B@", ptr @"??_Gruntime_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7runtime_error at std@@6B@")
-@"??_R4runtime_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4runtime_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3runtime_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2runtime_error at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_R1A@?0A at EA@runtime_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVruntime_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R1A@?0A at EA@exception at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3exception at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2exception at std@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
- at 1 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4exception at std@@6B@", ptr @"??_Gexception at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7exception at std@@6B@")
-@"??_R4exception at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVexception at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4exception at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@" = linkonce_odr dso_local unnamed_addr constant [18 x i8] c"Unknown exception\00", comdat, align 1
-@"?nostopstate at std@@3Unostopstate_t at 1@B" = linkonce_odr dso_local constant %"struct.std::nostopstate_t" zeroinitializer, comdat, align 1
-@"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"ios_base::badbit set\00", comdat, align 1
-@"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [22 x i8] c"ios_base::failbit set\00", comdat, align 1
-@"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"ios_base::eofbit set\00", comdat, align 1
-@"??_R0?AVfailure at ios_base@std@@@8" = linkonce_odr global %rtti.TypeDescriptor26 { ptr @"??_7type_info@@6B@", ptr null, [27 x i8] c".?AVfailure at ios_base@std@@\00" }, comdat
-@"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0failure at ios_base@std@@QEAA at AEBV012@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_R0?AVsystem_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor22 { ptr @"??_7type_info@@6B@", ptr null, [23 x i8] c".?AVsystem_error at std@@\00" }, comdat
-@"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0system_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_R0?AV_System_error at std@@@8" = linkonce_odr global %rtti.TypeDescriptor23 { ptr @"??_7type_info@@6B@", ptr null, [24 x i8] c".?AV_System_error at std@@\00" }, comdat
-@"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 40, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0_System_error at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"_CTA5?AVfailure at ios_base@std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.5 { i32 5, [5 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVfailure at ios_base@std@@@8??0failure at ios_base@std@@QEAA at AEBV012@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVsystem_error at std@@@8??0system_error at std@@QEAA at AEBV01@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AV_System_error at std@@@8??0_System_error at std@@QEAA at AEBV01@@Z40" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVruntime_error at std@@@8??0runtime_error at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
-@"_TI5?AVfailure at ios_base@std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1failure at ios_base@std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA5?AVfailure at ios_base@std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B" = linkonce_odr dso_local constant { ptr, %"union.std::error_category::_Addr_storage" } { ptr @"??_7_Iostream_error_category2 at std@@6B@", %"union.std::error_category::_Addr_storage" { i64 5 } }, comdat, align 8
- at 2 = private unnamed_addr constant { [7 x ptr] } { [7 x ptr] [ptr @"??_R4_Iostream_error_category2 at std@@6B@", ptr @"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z", ptr @"?name at _Iostream_error_category2@std@@UEBAPEBDXZ", ptr @"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z", ptr @"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z", ptr @"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z", ptr @"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z"] }, comdat($"??_7_Iostream_error_category2 at std@@6B@")
-@"??_R4_Iostream_error_category2 at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_Iostream_error_category2 at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4_Iostream_error_category2 at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R0?AV_Iostream_error_category2 at std@@@8" = linkonce_odr global %rtti.TypeDescriptor35 { ptr @"??_7type_info@@6B@", ptr null, [36 x i8] c".?AV_Iostream_error_category2 at std@@\00" }, comdat
-@"??_R3_Iostream_error_category2 at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2_Iostream_error_category2 at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_R1A@?0A at EA@_Iostream_error_category2 at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_Iostream_error_category2 at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_Iostream_error_category2 at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R1A@?0A at EA@error_category at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVerror_category at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R0?AVerror_category at std@@@8" = linkonce_odr global %rtti.TypeDescriptor24 { ptr @"??_7type_info@@6B@", ptr null, [25 x i8] c".?AVerror_category at std@@\00" }, comdat
-@"??_R3error_category at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2error_category at std@@8" = linkonce_odr constant [2 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@error_category at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_C at _08LLGCOLLL@iostream?$AA@" = linkonce_odr dso_local unnamed_addr constant [9 x i8] c"iostream\00", comdat, align 1
-@"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB" = linkonce_odr dso_local constant [22 x i8] c"iostream stream error\00", comdat, align 16
-@"?_Fake_alloc at std@@3U_Fake_allocator at 1@B" = linkonce_odr dso_local constant %"struct.std::_Fake_allocator" undef, comdat, align 1
-@"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@" = linkonce_odr dso_local unnamed_addr constant [16 x i8] c"string too long\00", comdat, align 1
-@"??_R0?AVbad_array_new_length at std@@@8" = linkonce_odr global %rtti.TypeDescriptor30 { ptr @"??_7type_info@@6B@", ptr null, [31 x i8] c".?AVbad_array_new_length at std@@\00" }, comdat
-@"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0bad_array_new_length at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_R0?AVbad_alloc at std@@@8" = linkonce_odr global %rtti.TypeDescriptor19 { ptr @"??_7type_info@@6B@", ptr null, [20 x i8] c".?AVbad_alloc at std@@\00" }, comdat
-@"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 16, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 24, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"_CTA3?AVbad_array_new_length at std@@" = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.3 { i32 3, [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVbad_array_new_length at std@@@8??0bad_array_new_length at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVbad_alloc at std@@@8??0bad_alloc at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CT??_R0?AVexception at std@@@8??0exception at std@@QEAA at AEBV01@@Z24" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32)] }, section ".xdata", comdat
-@"_TI3?AVbad_array_new_length at std@@" = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??1bad_array_new_length at std@@UEAA at XZ" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"_CTA3?AVbad_array_new_length at std@@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, section ".xdata", comdat
-@"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@" = linkonce_odr dso_local unnamed_addr constant [21 x i8] c"bad array new length\00", comdat, align 1
- at 3 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4bad_array_new_length at std@@6B@", ptr @"??_Gbad_array_new_length at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7bad_array_new_length at std@@6B@")
-@"??_R4bad_array_new_length at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4bad_array_new_length at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3bad_array_new_length at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2bad_array_new_length at std@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_R1A@?0A at EA@bad_array_new_length at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_array_new_length at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_array_new_length at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R1A@?0A at EA@bad_alloc at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 1, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3bad_alloc at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 2, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2bad_alloc at std@@8" = linkonce_odr constant [3 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
- at 4 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4bad_alloc at std@@6B@", ptr @"??_Gbad_alloc at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7bad_alloc at std@@6B@")
-@"??_R4bad_alloc at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVbad_alloc at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3bad_alloc at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4bad_alloc at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
- at 5 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4failure at ios_base@std@@6B@", ptr @"??_Gfailure at ios_base@std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7failure at ios_base@std@@6B@")
-@"??_R4failure at ios_base@std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4failure at ios_base@std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3failure at ios_base@std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 5, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2failure at ios_base@std@@8" = linkonce_odr constant [6 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_R1A@?0A at EA@failure at ios_base@std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVfailure at ios_base@std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 4, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3failure at ios_base@std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R1A@?0A at EA@system_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 3, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3system_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 4, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2system_error at std@@8" = linkonce_odr constant [5 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
-@"??_R1A@?0A at EA@_System_error at std@@8" = linkonce_odr constant %rtti.BaseClassDescriptor { i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 2, i32 0, i32 -1, i32 0, i32 64, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R3_System_error at std@@8" = linkonce_odr constant %rtti.ClassHierarchyDescriptor { i32 0, i32 0, i32 3, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R2_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_R2_System_error at std@@8" = linkonce_odr constant [4 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@runtime_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R1A@?0A at EA@exception at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 0], comdat
- at 6 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4system_error at std@@6B@", ptr @"??_Gsystem_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7system_error at std@@6B@")
-@"??_R4system_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AVsystem_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3system_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4system_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
- at 7 = private unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr @"??_R4_System_error at std@@6B@", ptr @"??_G_System_error at std@@UEAAPEAXI at Z", ptr @"?what at exception@std@@UEBAPEBDXZ"] }, comdat($"??_7_System_error at std@@6B@")
-@"??_R4_System_error at std@@6B@" = linkonce_odr constant %rtti.CompleteObjectLocator { i32 1, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R0?AV_System_error at std@@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R3_System_error at std@@8" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), i32 trunc (i64 sub nuw nsw (i64 ptrtoint (ptr @"??_R4_System_error at std@@6B@" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32) }, comdat
-@"??_C at _02LMMGGCAJ@?3?5?$AA@" = linkonce_odr dso_local unnamed_addr constant [3 x i8] c": \00", comdat, align 1
-
-@"??_7runtime_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @0, i32 0, i32 0, i32 1)
-@"??_7exception at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @1, i32 0, i32 0, i32 1)
-@"??_7_Iostream_error_category2 at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [7 x ptr] }, ptr @2, i32 0, i32 0, i32 1)
-@"??_7bad_array_new_length at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @3, i32 0, i32 0, i32 1)
-@"??_7bad_alloc at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @4, i32 0, i32 0, i32 1)
-@"??_7failure at ios_base@std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @5, i32 0, i32 0, i32 1)
-@"??_7system_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @6, i32 0, i32 0, i32 1)
-@"??_7_System_error at std@@6B@" = unnamed_addr alias ptr, getelementptr inbounds ({ [3 x ptr] }, ptr @7, i32 0, i32 0, i32 1)
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define dso_local i64 @"?switch_to_new_thread@@YA at AEAVjthread@std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 {
-  %2 = alloca %struct.awaitable, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  %4 = getelementptr inbounds nuw %struct.awaitable, ptr %2, i32 0, i32 0
-  %5 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  store ptr %5, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %struct.awaitable, ptr %2, i32 0, i32 0
-  %7 = load ptr, ptr %6, align 8
-  %8 = ptrtoint ptr %7 to i64
-  ret i64 %8
-}
-
-; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
-define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0) #1 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca %struct.task, align 1
-  %3 = alloca ptr, align 8, !coro.outside.frame !16
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.task::promise_type", align 1
-  %6 = alloca %"struct.std::suspend_never", align 1
-  %7 = alloca %"class.std::thread::id", align 4
-  %8 = alloca %struct.awaitable, align 8
-  %9 = alloca %"class.std::thread::id", align 4
-  %10 = alloca %"struct.std::suspend_never", align 1
-  store ptr %0, ptr %3, align 8
-  %11 = bitcast ptr %5 to ptr
-  %12 = call token @llvm.coro.id(i32 16, ptr %11, ptr null, ptr null)
-  %13 = call i1 @llvm.coro.alloc(token %12)
-  br i1 %13, label %14, label %17
-
-14:                                               ; preds = %1
-  %15 = call i64 @llvm.coro.size.i64()
-  %16 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %15) #21
-  br label %17
-
-17:                                               ; preds = %14, %1
-  %18 = phi ptr [ null, %1 ], [ %16, %14 ]
-  %19 = call ptr @llvm.coro.begin(token %12, ptr %18)
-  invoke void @llvm.seh.scope.begin()
-          to label %20 unwind label %112
-
-20:                                               ; preds = %17
-  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
-  %21 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  store ptr %21, ptr %4, align 8
-  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #3
-  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
-          to label %22 unwind label %108
-
-22:                                               ; preds = %20
-  invoke void @llvm.seh.scope.begin()
-          to label %23 unwind label %104
-
-23:                                               ; preds = %22
-  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #3
-  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
-          to label %24 unwind label %54
-
-24:                                               ; preds = %23
-  %25 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
-  br i1 %25, label %30, label %26
-
-26:                                               ; preds = %24
-  %27 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__init") #3
-  %28 = call i8 @llvm.coro.suspend(token %27, i1 false)
-  switch i8 %28, label %100 [
-    i8 0, label %30
-    i8 1, label %29
-  ]
-
-29:                                               ; preds = %26
-  br label %31
-
-30:                                               ; preds = %26, %24
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
-  br label %31
-
-31:                                               ; preds = %30, %29
-  %32 = phi i32 [ 0, %30 ], [ 2, %29 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
-  switch i32 %32, label %91 [
-    i32 0, label %33
-  ]
-
-33:                                               ; preds = %31
-  invoke void @llvm.seh.try.begin()
-          to label %34 unwind label %69
-
-34:                                               ; preds = %33
-  %35 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BO@EKOPNEHI at Coroutine?5started?5on?5thread?3?5?$AA@")
-          to label %36 unwind label %69
-
-36:                                               ; preds = %34
-  call void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %7) #3
-  %37 = getelementptr inbounds nuw %"class.std::thread::id", ptr %7, i32 0, i32 0
-  %38 = load i32, ptr %37, align 4
-  %39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %35, i32 %38)
-          to label %40 unwind label %69
-
-40:                                               ; preds = %36
-  %41 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %39, i8 noundef 10)
-          to label %42 unwind label %69
-
-42:                                               ; preds = %40
-  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
-  %43 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %44 = call i64 @"?switch_to_new_thread@@YA at AEAVjthread@std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %43)
-  %45 = getelementptr inbounds nuw %struct.awaitable, ptr %8, i32 0, i32 0
-  %46 = inttoptr i64 %44 to ptr
-  store ptr %46, ptr %45, align 8
-  %47 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %8)
-          to label %48 unwind label %84
-
-48:                                               ; preds = %42
-  br i1 %47, label %56, label %49
-
-49:                                               ; preds = %48
-  %50 = call token @llvm.coro.save(ptr null)
-  invoke void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__await")
-          to label %51 unwind label %84
-
-51:                                               ; preds = %49
-  %52 = call i8 @llvm.coro.suspend(token %50, i1 false)
-  switch i8 %52, label %100 [
-    i8 0, label %56
-    i8 1, label %53
-  ]
-
-53:                                               ; preds = %51
-  br label %58
-
-54:                                               ; preds = %23
-  %55 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
-  cleanupret from %55 unwind label %104
-
-56:                                               ; preds = %51, %48
-  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %8)
-          to label %57 unwind label %84
-
-57:                                               ; preds = %56
-  br label %58
-
-58:                                               ; preds = %57, %53
-  %59 = phi i32 [ 0, %57 ], [ 2, %53 ]
-  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
-  switch i32 %59, label %91 [
-    i32 0, label %60
-  ]
-
-60:                                               ; preds = %58
-  %61 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BO@NLJBCPPM at Coroutine?5resumed?5on?5thread?3?5?$AA@")
-          to label %62 unwind label %69
-
-62:                                               ; preds = %60
-  call void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %9) #3
-  %63 = getelementptr inbounds nuw %"class.std::thread::id", ptr %9, i32 0, i32 0
-  %64 = load i32, ptr %63, align 4
-  %65 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %61, i32 %64)
-          to label %66 unwind label %69
-
-66:                                               ; preds = %62
-  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %65, i8 noundef 10)
-          to label %68 unwind label %69
-
-68:                                               ; preds = %66
-  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
-          to label %83 unwind label %69
-
-69:                                               ; preds = %68, %66, %62, %60, %84, %40, %36, %34, %33
-  %70 = catchswitch within none [label %71] unwind label %104
-
-71:                                               ; preds = %69
-  %72 = catchpad within %70 [ptr null, i32 0, ptr null]
-  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %72) ]
-          to label %73 unwind label %104
-
-73:                                               ; preds = %71
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %72) ]
-          to label %74 unwind label %104
-
-74:                                               ; preds = %73
-  catchret from %72 to label %75
-
-75:                                               ; preds = %74
-  br label %76
-
-76:                                               ; preds = %75
-  br label %77
-
-77:                                               ; preds = %76, %83
-  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #3
-  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %10) #3
-  %78 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br i1 %78, label %86, label %79
-
-79:                                               ; preds = %77
-  %80 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %10, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__final") #3
-  %81 = call i8 @llvm.coro.suspend(token %80, i1 true)
-  switch i8 %81, label %100 [
-    i8 0, label %86
-    i8 1, label %82
-  ]
-
-82:                                               ; preds = %79
-  br label %87
-
-83:                                               ; preds = %68
-  br label %77
-
-84:                                               ; preds = %56, %49, %42
-  %85 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
-  cleanupret from %85 unwind label %69
-
-86:                                               ; preds = %79, %77
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br label %87
-
-87:                                               ; preds = %86, %82
-  %88 = phi i32 [ 0, %86 ], [ 2, %82 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #3
-  switch i32 %88, label %91 [
-    i32 0, label %89
-  ]
-
-89:                                               ; preds = %87
-  invoke void @llvm.seh.scope.end()
-          to label %90 unwind label %104
-
-90:                                               ; preds = %89
-  br label %91
-
-91:                                               ; preds = %90, %87, %58, %31
-  %92 = phi i32 [ %32, %31 ], [ %59, %58 ], [ %88, %87 ], [ 0, %90 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
-  invoke void @llvm.seh.scope.end()
-          to label %93 unwind label %112
-
-93:                                               ; preds = %91
-  %94 = call ptr @llvm.coro.free(token %12, ptr %19)
-  %95 = icmp ne ptr %94, null
-  br i1 %95, label %96, label %98
-
-96:                                               ; preds = %93
-  %97 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %94, i64 noundef %97) #3
-  br label %98
-
-98:                                               ; preds = %93, %96
-  switch i32 %92, label %119 [
-    i32 0, label %99
-    i32 2, label %100
-  ]
-
-99:                                               ; preds = %98
-  br label %100
-
-100:                                              ; preds = %99, %98, %79, %51, %26
-  %101 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
-  %102 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
-  %103 = load i8, ptr %102, align 1
-  ret i8 %103
-
-104:                                              ; preds = %89, %73, %71, %69, %54, %22
-  %105 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %105) ]
-          to label %106 unwind label %108
-
-106:                                              ; preds = %104
-  %107 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %105) ]
-  cleanupret from %105 unwind label %108
-
-108:                                              ; preds = %106, %104, %20
-  %109 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
-  cleanupret from %109 unwind label %110
-
-110:                                              ; preds = %108
-  %111 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
-  cleanupret from %111 unwind label %112
-
-112:                                              ; preds = %91, %110, %17
-  %113 = cleanuppad within none []
-  %114 = call ptr @llvm.coro.free(token %12, ptr %19)
-  %115 = icmp ne ptr %114, null
-  br i1 %115, label %116, label %118
-
-116:                                              ; preds = %112
-  %117 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %114, i64 noundef %117) #3 [ "funclet"(token %113) ]
-  br label %118
-
-118:                                              ; preds = %112, %116
-  cleanupret from %113 unwind to caller
-
-119:                                              ; preds = %98
-  unreachable
-}
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #2
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.alloc(token) #3
-
-; Function Attrs: nobuiltin allocsize(0)
-declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #4
-
-; Function Attrs: nounwind memory(none)
-declare i64 @llvm.coro.size.i64() #5
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #3
-
-declare dso_local i32 @__CxxFrameHandler3(...)
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.begin() #5
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 true
-}
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #7
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #3
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
-  %7 = load ptr, ptr %6, align 8
-  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #3
-  ret void
-}
-
-declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #3
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6
-
-; Function Attrs: nounwind willreturn memory(write)
-declare dso_local void @llvm.seh.try.begin() #9
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i8 noundef %1) #10 comdat personality ptr @__CxxFrameHandler3 {
-  %3 = alloca i8, align 1
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca %"class.std::basic_ostream<char>::sentry", align 8
-  %7 = alloca i64, align 8
-  store i8 %1, ptr %3, align 1
-  store ptr %0, ptr %4, align 8
-  store i32 0, ptr %5, align 4
-  %8 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %9 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(8) %8)
-  invoke void @llvm.seh.scope.begin()
-          to label %10 unwind label %188
-
-10:                                               ; preds = %2
-  %11 = call noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %6)
-  br i1 %11, label %12, label %166
-
-12:                                               ; preds = %10
-  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %14 = getelementptr inbounds i8, ptr %13, i64 0
-  %15 = load ptr, ptr %14, align 8
-  %16 = getelementptr inbounds i32, ptr %15, i32 1
-  %17 = load i32, ptr %16, align 4
-  %18 = sext i32 %17 to i64
-  %19 = add nsw i64 0, %18
-  %20 = getelementptr inbounds i8, ptr %13, i64 %19
-  %21 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %20) #3
-  %22 = icmp sle i64 %21, 1
-  br i1 %22, label %23, label %24
-
-23:                                               ; preds = %12
-  br label %35
-
-24:                                               ; preds = %12
-  %25 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %26 = getelementptr inbounds i8, ptr %25, i64 0
-  %27 = load ptr, ptr %26, align 8
-  %28 = getelementptr inbounds i32, ptr %27, i32 1
-  %29 = load i32, ptr %28, align 4
-  %30 = sext i32 %29 to i64
-  %31 = add nsw i64 0, %30
-  %32 = getelementptr inbounds i8, ptr %25, i64 %31
-  %33 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %32) #3
-  %34 = sub nsw i64 %33, 1
-  br label %35
-
-35:                                               ; preds = %24, %23
-  %36 = phi i64 [ 0, %23 ], [ %34, %24 ]
-  store i64 %36, ptr %7, align 8
-  invoke void @llvm.seh.try.begin()
-          to label %37 unwind label %139
-
-37:                                               ; preds = %35
-  %38 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %39 = getelementptr inbounds i8, ptr %38, i64 0
-  %40 = load ptr, ptr %39, align 8
-  %41 = getelementptr inbounds i32, ptr %40, i32 1
-  %42 = load i32, ptr %41, align 4
-  %43 = sext i32 %42 to i64
-  %44 = add nsw i64 0, %43
-  %45 = getelementptr inbounds i8, ptr %38, i64 %44
-  %46 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %45) #3
-  %47 = and i32 %46, 448
-  %48 = icmp ne i32 %47, 64
-  br i1 %48, label %49, label %89
-
-49:                                               ; preds = %37
-  br label %50
-
-50:                                               ; preds = %85, %49
-  %51 = load i32, ptr %5, align 4
-  %52 = icmp eq i32 %51, 0
-  br i1 %52, label %53, label %56
-
-53:                                               ; preds = %50
-  %54 = load i64, ptr %7, align 8
-  %55 = icmp slt i64 0, %54
-  br label %56
-
-56:                                               ; preds = %53, %50
-  %57 = phi i1 [ false, %50 ], [ %55, %53 ]
-  br i1 %57, label %58, label %88
-
-58:                                               ; preds = %56
-  %59 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %60 = getelementptr inbounds i8, ptr %59, i64 0
-  %61 = load ptr, ptr %60, align 8
-  %62 = getelementptr inbounds i32, ptr %61, i32 1
-  %63 = load i32, ptr %62, align 4
-  %64 = sext i32 %63 to i64
-  %65 = add nsw i64 0, %64
-  %66 = getelementptr inbounds i8, ptr %59, i64 %65
-  %67 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %66) #3
-  %68 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %69 = getelementptr inbounds i8, ptr %68, i64 0
-  %70 = load ptr, ptr %69, align 8
-  %71 = getelementptr inbounds i32, ptr %70, i32 1
-  %72 = load i32, ptr %71, align 4
-  %73 = sext i32 %72 to i64
-  %74 = add nsw i64 0, %73
-  %75 = getelementptr inbounds i8, ptr %68, i64 %74
-  %76 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %75) #3
-  %77 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %67, i8 noundef %76)
-          to label %78 unwind label %139
-
-78:                                               ; preds = %58
-  %79 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
-  %80 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %79, i32 noundef %77) #3
-  br i1 %80, label %81, label %84
-
-81:                                               ; preds = %78
-  %82 = load i32, ptr %5, align 4
-  %83 = or i32 %82, 4
-  store i32 %83, ptr %5, align 4
-  br label %84
-
-84:                                               ; preds = %81, %78
-  br label %85
-
-85:                                               ; preds = %84
-  %86 = load i64, ptr %7, align 8
-  %87 = add nsw i64 %86, -1
-  store i64 %87, ptr %7, align 8
-  br label %50, !llvm.loop !18
-
-88:                                               ; preds = %56
-  br label %89
-
-89:                                               ; preds = %88, %37
-  %90 = load i32, ptr %5, align 4
-  %91 = icmp eq i32 %90, 0
-  br i1 %91, label %92, label %110
-
-92:                                               ; preds = %89
-  %93 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %94 = getelementptr inbounds i8, ptr %93, i64 0
-  %95 = load ptr, ptr %94, align 8
-  %96 = getelementptr inbounds i32, ptr %95, i32 1
-  %97 = load i32, ptr %96, align 4
-  %98 = sext i32 %97 to i64
-  %99 = add nsw i64 0, %98
-  %100 = getelementptr inbounds i8, ptr %93, i64 %99
-  %101 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %100) #3
-  %102 = load i8, ptr %3, align 1
-  %103 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %101, i8 noundef %102)
-          to label %104 unwind label %139
-
-104:                                              ; preds = %92
-  %105 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
-  %106 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %105, i32 noundef %103) #3
-  br i1 %106, label %107, label %110
-
-107:                                              ; preds = %104
-  %108 = load i32, ptr %5, align 4
-  %109 = or i32 %108, 4
-  store i32 %109, ptr %5, align 4
-  br label %110
-
-110:                                              ; preds = %107, %104, %89
-  br label %111
-
-111:                                              ; preds = %162, %110
-  %112 = load i32, ptr %5, align 4
-  %113 = icmp eq i32 %112, 0
-  br i1 %113, label %114, label %117
-
-114:                                              ; preds = %111
-  %115 = load i64, ptr %7, align 8
-  %116 = icmp slt i64 0, %115
-  br label %117
-
-117:                                              ; preds = %114, %111
-  %118 = phi i1 [ false, %111 ], [ %116, %114 ]
-  br i1 %118, label %119, label %165
-
-119:                                              ; preds = %117
-  %120 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %121 = getelementptr inbounds i8, ptr %120, i64 0
-  %122 = load ptr, ptr %121, align 8
-  %123 = getelementptr inbounds i32, ptr %122, i32 1
-  %124 = load i32, ptr %123, align 4
-  %125 = sext i32 %124 to i64
-  %126 = add nsw i64 0, %125
-  %127 = getelementptr inbounds i8, ptr %120, i64 %126
-  %128 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %127) #3
-  %129 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %130 = getelementptr inbounds i8, ptr %129, i64 0
-  %131 = load ptr, ptr %130, align 8
-  %132 = getelementptr inbounds i32, ptr %131, i32 1
-  %133 = load i32, ptr %132, align 4
-  %134 = sext i32 %133 to i64
-  %135 = add nsw i64 0, %134
-  %136 = getelementptr inbounds i8, ptr %129, i64 %135
-  %137 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %136) #3
-  %138 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %128, i8 noundef %137)
-          to label %155 unwind label %139
-
-139:                                              ; preds = %119, %92, %58, %35
-  %140 = catchswitch within none [label %141] unwind label %188
-
-141:                                              ; preds = %139
-  %142 = catchpad within %140 [ptr null, i32 0, ptr null]
-  %143 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %144 = getelementptr inbounds i8, ptr %143, i64 0
-  %145 = load ptr, ptr %144, align 8
-  %146 = getelementptr inbounds i32, ptr %145, i32 1
-  %147 = load i32, ptr %146, align 4
-  %148 = sext i32 %147 to i64
-  %149 = add nsw i64 0, %148
-  %150 = getelementptr inbounds i8, ptr %143, i64 %149
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %150, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %142) ]
-          to label %151 unwind label %188
-
-151:                                              ; preds = %141
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %142) ]
-          to label %152 unwind label %188
-
-152:                                              ; preds = %151
-  catchret from %142 to label %153
-
-153:                                              ; preds = %152
-  br label %154
-
-154:                                              ; preds = %153, %165
-  br label %166
-
-155:                                              ; preds = %119
-  %156 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
-  %157 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %156, i32 noundef %138) #3
-  br i1 %157, label %158, label %161
-
-158:                                              ; preds = %155
-  %159 = load i32, ptr %5, align 4
-  %160 = or i32 %159, 4
-  store i32 %160, ptr %5, align 4
-  br label %161
-
-161:                                              ; preds = %158, %155
-  br label %162
-
-162:                                              ; preds = %161
-  %163 = load i64, ptr %7, align 8
-  %164 = add nsw i64 %163, -1
-  store i64 %164, ptr %7, align 8
-  br label %111, !llvm.loop !20
-
-165:                                              ; preds = %117
-  br label %154
-
-166:                                              ; preds = %154, %10
-  %167 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %168 = getelementptr inbounds i8, ptr %167, i64 0
-  %169 = load ptr, ptr %168, align 8
-  %170 = getelementptr inbounds i32, ptr %169, i32 1
-  %171 = load i32, ptr %170, align 4
-  %172 = sext i32 %171 to i64
-  %173 = add nsw i64 0, %172
-  %174 = getelementptr inbounds i8, ptr %167, i64 %173
-  %175 = call noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %174, i64 noundef 0) #3
-  %176 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %177 = getelementptr inbounds i8, ptr %176, i64 0
-  %178 = load ptr, ptr %177, align 8
-  %179 = getelementptr inbounds i32, ptr %178, i32 1
-  %180 = load i32, ptr %179, align 4
-  %181 = sext i32 %180 to i64
-  %182 = add nsw i64 0, %181
-  %183 = getelementptr inbounds i8, ptr %176, i64 %182
-  %184 = load i32, ptr %5, align 4
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %183, i32 noundef %184, i1 noundef zeroext false)
-          to label %185 unwind label %188
-
-185:                                              ; preds = %166
-  %186 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  invoke void @llvm.seh.scope.end()
-          to label %187 unwind label %188
-
-187:                                              ; preds = %185
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
-  ret ptr %186
-
-188:                                              ; preds = %185, %166, %151, %141, %139, %2
-  %189 = cleanuppad within none []
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3 [ "funclet"(token %189) ]
-  cleanupret from %189 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 %1) #10 comdat {
-  %3 = alloca %"class.std::thread::id", align 4
-  %4 = alloca ptr, align 8
-  %5 = alloca [11 x i8], align 1
-  %6 = alloca ptr, align 8
-  %7 = getelementptr inbounds nuw %"class.std::thread::id", ptr %3, i32 0, i32 0
-  store i32 %1, ptr %7, align 4
-  store ptr %0, ptr %4, align 8
-  %8 = call noundef ptr @"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z"(ptr noundef nonnull align 1 dereferenceable(11) %5) #3
-  store ptr %8, ptr %6, align 8
-  %9 = load ptr, ptr %6, align 8
-  %10 = getelementptr inbounds i8, ptr %9, i32 -1
-  store ptr %10, ptr %6, align 8
-  store i8 0, ptr %10, align 1
-  %11 = getelementptr inbounds nuw %"class.std::thread::id", ptr %3, i32 0, i32 0
-  %12 = load i32, ptr %11, align 4
-  %13 = load ptr, ptr %6, align 8
-  %14 = call noundef ptr @"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z"(ptr noundef %13, i32 noundef %12)
-  store ptr %14, ptr %6, align 8
-  %15 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %16 = load ptr, ptr %6, align 8
-  %17 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %16)
-  ret ptr %17
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #10 comdat personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca i64, align 8
-  %7 = alloca i64, align 8
-  %8 = alloca %"class.std::basic_ostream<char>::sentry", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  store i32 0, ptr %5, align 4
-  %9 = load ptr, ptr %3, align 8
-  %10 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %9) #3
-  store i64 %10, ptr %6, align 8
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds i8, ptr %11, i64 0
-  %13 = load ptr, ptr %12, align 8
-  %14 = getelementptr inbounds i32, ptr %13, i32 1
-  %15 = load i32, ptr %14, align 4
-  %16 = sext i32 %15 to i64
-  %17 = add nsw i64 0, %16
-  %18 = getelementptr inbounds i8, ptr %11, i64 %17
-  %19 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %18) #3
-  %20 = icmp sle i64 %19, 0
-  br i1 %20, label %33, label %21
-
-21:                                               ; preds = %2
-  %22 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %23 = getelementptr inbounds i8, ptr %22, i64 0
-  %24 = load ptr, ptr %23, align 8
-  %25 = getelementptr inbounds i32, ptr %24, i32 1
-  %26 = load i32, ptr %25, align 4
-  %27 = sext i32 %26 to i64
-  %28 = add nsw i64 0, %27
-  %29 = getelementptr inbounds i8, ptr %22, i64 %28
-  %30 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %29) #3
-  %31 = load i64, ptr %6, align 8
-  %32 = icmp sle i64 %30, %31
-  br i1 %32, label %33, label %34
-
-33:                                               ; preds = %21, %2
-  br label %46
-
-34:                                               ; preds = %21
-  %35 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %36 = getelementptr inbounds i8, ptr %35, i64 0
-  %37 = load ptr, ptr %36, align 8
-  %38 = getelementptr inbounds i32, ptr %37, i32 1
-  %39 = load i32, ptr %38, align 4
-  %40 = sext i32 %39 to i64
-  %41 = add nsw i64 0, %40
-  %42 = getelementptr inbounds i8, ptr %35, i64 %41
-  %43 = call noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %42) #3
-  %44 = load i64, ptr %6, align 8
-  %45 = sub nsw i64 %43, %44
-  br label %46
-
-46:                                               ; preds = %34, %33
-  %47 = phi i64 [ 0, %33 ], [ %45, %34 ]
-  store i64 %47, ptr %7, align 8
-  %48 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %49 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(8) %48)
-  invoke void @llvm.seh.scope.begin()
-          to label %50 unwind label %203
-
-50:                                               ; preds = %46
-  %51 = invoke noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %8)
-          to label %52 unwind label %203
-
-52:                                               ; preds = %50
-  br i1 %51, label %56, label %53
-
-53:                                               ; preds = %52
-  %54 = load i32, ptr %5, align 4
-  %55 = or i32 %54, 4
-  store i32 %55, ptr %5, align 4
-  br label %190
-
-56:                                               ; preds = %52
-  invoke void @llvm.seh.try.begin()
-          to label %57 unwind label %153
-
-57:                                               ; preds = %56
-  %58 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %59 = getelementptr inbounds i8, ptr %58, i64 0
-  %60 = load ptr, ptr %59, align 8
-  %61 = getelementptr inbounds i32, ptr %60, i32 1
-  %62 = load i32, ptr %61, align 4
-  %63 = sext i32 %62 to i64
-  %64 = add nsw i64 0, %63
-  %65 = getelementptr inbounds i8, ptr %58, i64 %64
-  %66 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %65) #3
-  %67 = and i32 %66, 448
-  %68 = icmp ne i32 %67, 64
-  br i1 %68, label %69, label %104
-
-69:                                               ; preds = %57
-  br label %70
-
-70:                                               ; preds = %100, %69
-  %71 = load i64, ptr %7, align 8
-  %72 = icmp slt i64 0, %71
-  br i1 %72, label %73, label %103
-
-73:                                               ; preds = %70
-  %74 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %75 = getelementptr inbounds i8, ptr %74, i64 0
-  %76 = load ptr, ptr %75, align 8
-  %77 = getelementptr inbounds i32, ptr %76, i32 1
-  %78 = load i32, ptr %77, align 4
-  %79 = sext i32 %78 to i64
-  %80 = add nsw i64 0, %79
-  %81 = getelementptr inbounds i8, ptr %74, i64 %80
-  %82 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %81) #3
-  %83 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %84 = getelementptr inbounds i8, ptr %83, i64 0
-  %85 = load ptr, ptr %84, align 8
-  %86 = getelementptr inbounds i32, ptr %85, i32 1
-  %87 = load i32, ptr %86, align 4
-  %88 = sext i32 %87 to i64
-  %89 = add nsw i64 0, %88
-  %90 = getelementptr inbounds i8, ptr %83, i64 %89
-  %91 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %90) #3
-  %92 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %82, i8 noundef %91)
-          to label %93 unwind label %153
-
-93:                                               ; preds = %73
-  %94 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
-  %95 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %94, i32 noundef %92) #3
-  br i1 %95, label %96, label %99
-
-96:                                               ; preds = %93
-  %97 = load i32, ptr %5, align 4
-  %98 = or i32 %97, 4
-  store i32 %98, ptr %5, align 4
-  br label %103
-
-99:                                               ; preds = %93
-  br label %100
-
-100:                                              ; preds = %99
-  %101 = load i64, ptr %7, align 8
-  %102 = add nsw i64 %101, -1
-  store i64 %102, ptr %7, align 8
-  br label %70, !llvm.loop !21
-
-103:                                              ; preds = %96, %70
-  br label %104
-
-104:                                              ; preds = %103, %57
-  %105 = load i32, ptr %5, align 4
-  %106 = icmp eq i32 %105, 0
-  br i1 %106, label %107, label %126
-
-107:                                              ; preds = %104
-  %108 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %109 = getelementptr inbounds i8, ptr %108, i64 0
-  %110 = load ptr, ptr %109, align 8
-  %111 = getelementptr inbounds i32, ptr %110, i32 1
-  %112 = load i32, ptr %111, align 4
-  %113 = sext i32 %112 to i64
-  %114 = add nsw i64 0, %113
-  %115 = getelementptr inbounds i8, ptr %108, i64 %114
-  %116 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %115) #3
-  %117 = load i64, ptr %6, align 8
-  %118 = load ptr, ptr %3, align 8
-  %119 = invoke noundef i64 @"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z"(ptr noundef nonnull align 8 dereferenceable(104) %116, ptr noundef %118, i64 noundef %117)
-          to label %120 unwind label %153
-
-120:                                              ; preds = %107
-  %121 = load i64, ptr %6, align 8
-  %122 = icmp ne i64 %119, %121
-  br i1 %122, label %123, label %126
-
-123:                                              ; preds = %120
-  %124 = load i32, ptr %5, align 4
-  %125 = or i32 %124, 4
-  store i32 %125, ptr %5, align 4
-  br label %126
-
-126:                                              ; preds = %123, %120, %104
-  %127 = load i32, ptr %5, align 4
-  %128 = icmp eq i32 %127, 0
-  br i1 %128, label %129, label %180
-
-129:                                              ; preds = %126
-  br label %130
-
-130:                                              ; preds = %176, %129
-  %131 = load i64, ptr %7, align 8
-  %132 = icmp slt i64 0, %131
-  br i1 %132, label %133, label %179
-
-133:                                              ; preds = %130
-  %134 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %135 = getelementptr inbounds i8, ptr %134, i64 0
-  %136 = load ptr, ptr %135, align 8
-  %137 = getelementptr inbounds i32, ptr %136, i32 1
-  %138 = load i32, ptr %137, align 4
-  %139 = sext i32 %138 to i64
-  %140 = add nsw i64 0, %139
-  %141 = getelementptr inbounds i8, ptr %134, i64 %140
-  %142 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %141) #3
-  %143 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %144 = getelementptr inbounds i8, ptr %143, i64 0
-  %145 = load ptr, ptr %144, align 8
-  %146 = getelementptr inbounds i32, ptr %145, i32 1
-  %147 = load i32, ptr %146, align 4
-  %148 = sext i32 %147 to i64
-  %149 = add nsw i64 0, %148
-  %150 = getelementptr inbounds i8, ptr %143, i64 %149
-  %151 = call noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %150) #3
-  %152 = invoke noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %142, i8 noundef %151)
-          to label %169 unwind label %153
-
-153:                                              ; preds = %133, %107, %73, %56
-  %154 = catchswitch within none [label %155] unwind label %203
-
-155:                                              ; preds = %153
-  %156 = catchpad within %154 [ptr null, i32 0, ptr null]
-  %157 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %158 = getelementptr inbounds i8, ptr %157, i64 0
-  %159 = load ptr, ptr %158, align 8
-  %160 = getelementptr inbounds i32, ptr %159, i32 1
-  %161 = load i32, ptr %160, align 4
-  %162 = sext i32 %161 to i64
-  %163 = add nsw i64 0, %162
-  %164 = getelementptr inbounds i8, ptr %157, i64 %163
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %164, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %156) ]
-          to label %165 unwind label %203
-
-165:                                              ; preds = %155
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %156) ]
-          to label %166 unwind label %203
-
-166:                                              ; preds = %165
-  catchret from %156 to label %167
-
-167:                                              ; preds = %166
-  br label %168
-
-168:                                              ; preds = %167, %180
-  br label %190
-
-169:                                              ; preds = %133
-  %170 = call noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #3
-  %171 = call noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %170, i32 noundef %152) #3
-  br i1 %171, label %172, label %175
-
-172:                                              ; preds = %169
-  %173 = load i32, ptr %5, align 4
-  %174 = or i32 %173, 4
-  store i32 %174, ptr %5, align 4
-  br label %179
-
-175:                                              ; preds = %169
-  br label %176
-
-176:                                              ; preds = %175
-  %177 = load i64, ptr %7, align 8
-  %178 = add nsw i64 %177, -1
-  store i64 %178, ptr %7, align 8
-  br label %130, !llvm.loop !22
-
-179:                                              ; preds = %172, %130
-  br label %180
-
-180:                                              ; preds = %179, %126
-  %181 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %182 = getelementptr inbounds i8, ptr %181, i64 0
-  %183 = load ptr, ptr %182, align 8
-  %184 = getelementptr inbounds i32, ptr %183, i32 1
-  %185 = load i32, ptr %184, align 4
-  %186 = sext i32 %185 to i64
-  %187 = add nsw i64 0, %186
-  %188 = getelementptr inbounds i8, ptr %181, i64 %187
-  %189 = call noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %188, i64 noundef 0) #3
-  br label %168
-
-190:                                              ; preds = %168, %53
-  %191 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %192 = getelementptr inbounds i8, ptr %191, i64 0
-  %193 = load ptr, ptr %192, align 8
-  %194 = getelementptr inbounds i32, ptr %193, i32 1
-  %195 = load i32, ptr %194, align 4
-  %196 = sext i32 %195 to i64
-  %197 = add nsw i64 0, %196
-  %198 = getelementptr inbounds i8, ptr %191, i64 %197
-  %199 = load i32, ptr %5, align 4
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %198, i32 noundef %199, i1 noundef zeroext false)
-          to label %200 unwind label %203
-
-200:                                              ; preds = %190
-  %201 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  invoke void @llvm.seh.scope.end()
-          to label %202 unwind label %203
-
-202:                                              ; preds = %200
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3
-  ret ptr %201
-
-203:                                              ; preds = %200, %190, %165, %155, %153, %50, %46
-  %204 = cleanuppad within none []
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3 [ "funclet"(token %204) ]
-  cleanupret from %204 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_id at this_thread@std@@YA?AVid at thread@2 at XZ"(ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = call i32 @_Thrd_id()
-  %4 = call noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %3) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 false
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@4@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 %11)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@4@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 %1) #10 align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca %"class.std::runtime_error", align 8
-  %7 = alloca %"class.std::jthread", align 8
-  %8 = alloca %class.anon, align 8
-  %9 = alloca %"class.std::thread::id", align 4
-  %10 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %11 = inttoptr i64 %1 to ptr
-  store ptr %11, ptr %10, align 8
-  store ptr %0, ptr %4, align 8
-  %12 = load ptr, ptr %4, align 8
-  %13 = getelementptr inbounds nuw %struct.awaitable, ptr %12, i32 0, i32 0
-  %14 = load ptr, ptr %13, align 8
-  store ptr %14, ptr %5, align 8
-  %15 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %16 = call noundef zeroext i1 @"?joinable at jthread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(24) %15) #3
-  br i1 %16, label %17, label %19
-
-17:                                               ; preds = %2
-  %18 = call noundef ptr @"??0runtime_error at std@@QEAA at PEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef @"??_C at _0CD@HNLLMDJL at Output?5jthread?5parameter?5not?5emp@")
-  call void @_CxxThrowException(ptr %6, ptr @"_TI2?AVruntime_error at std@@") #22
-  unreachable
-
-19:                                               ; preds = %2
-  %20 = getelementptr inbounds nuw %class.anon, ptr %8, i32 0, i32 0
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %3, i64 8, i1 false)
-  %21 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@jthread at std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAV01@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
-  invoke void @llvm.seh.scope.begin()
-          to label %22 unwind label %32
-
-22:                                               ; preds = %19
-  %23 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %24 = call noundef nonnull align 8 dereferenceable(24) ptr @"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %7) #3
-  invoke void @llvm.seh.scope.end()
-          to label %25 unwind label %32
-
-25:                                               ; preds = %22
-  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %7) #3
-  %26 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@PEBD at Z"(ptr noundef nonnull align 8 dereferenceable(8) @"?cout at std@@3V?$basic_ostream at DU?$char_traits at D@std@@@1 at A", ptr noundef @"??_C at _0BA@OADHDNAI at New?5thread?5ID?3?5?$AA@")
-  %27 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  call void @"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %9) #3
-  %28 = getelementptr inbounds nuw %"class.std::thread::id", ptr %9, i32 0, i32 0
-  %29 = load i32, ptr %28, align 4
-  %30 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6DU?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@Vid at thread@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %26, i32 %29)
-  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$?6U?$char_traits at D@std@@@std@@YAAEAV?$basic_ostream at DU?$char_traits at D@std@@@0 at AEAV10@D at Z"(ptr noundef nonnull align 8 dereferenceable(8) %30, i8 noundef 10)
-  ret void
-
-32:                                               ; preds = %22, %19
-  %33 = cleanuppad within none []
-  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %7) #3 [ "funclet"(token %33) ]
-  cleanupret from %33 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.end() #5
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #3
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #3
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #3
-  ret void
-}
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #3
-
-; Function Attrs: nobuiltin nounwind
-declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #11
-
-; Function Attrs: nounwind memory(argmem: read)
-declare ptr @llvm.coro.free(token, ptr readonly captures(none)) #12
-
-; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
-define dso_local noundef i32 @main() #13 personality ptr @__CxxFrameHandler3 {
-  %1 = alloca %"class.std::jthread", align 8
-  %2 = alloca %struct.task, align 1
-  %3 = call noundef ptr @"??0jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %8
-
-4:                                                ; preds = %0
-  %5 = invoke i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %1)
-          to label %6 unwind label %8
-
-6:                                                ; preds = %4
-  invoke void @llvm.seh.scope.end()
-          to label %7 unwind label %8
-
-7:                                                ; preds = %6
-  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
-  ret i32 0
-
-8:                                                ; preds = %6, %4, %0
-  %9 = cleanuppad within none []
-  call void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3 [ "funclet"(token %9) ]
-  cleanupret from %9 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0jthread at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  %3 = alloca %"struct.std::nostopstate_t", align 1
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::jthread", ptr %4, i32 0, i32 0
-  %6 = call noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %7 unwind label %18
-
-7:                                                ; preds = %1
-  %8 = getelementptr inbounds nuw %"class.std::jthread", ptr %4, i32 0, i32 1
-  %9 = getelementptr inbounds nuw %"struct.std::nostopstate_t", ptr %3, i32 0, i32 0
-  %10 = load i8, ptr %9, align 1
-  %11 = call noundef ptr @"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %10) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %15
-
-12:                                               ; preds = %7
-  invoke void @llvm.seh.scope.end()
-          to label %13 unwind label %15
-
-13:                                               ; preds = %12
-  invoke void @llvm.seh.scope.end()
-          to label %14 unwind label %18
-
-14:                                               ; preds = %13
-  ret ptr %4
-
-15:                                               ; preds = %12, %7
-  %16 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %16) ]
-          to label %17 unwind label %18
-
-17:                                               ; preds = %15
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3 [ "funclet"(token %16) ]
-  cleanupret from %16 unwind label %18
-
-18:                                               ; preds = %13, %17, %15, %1
-  %19 = cleanuppad within none []
-  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1jthread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %14
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.begin()
-          to label %5 unwind label %10
-
-5:                                                ; preds = %4
-  call void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
-  invoke void @llvm.seh.scope.end()
-          to label %6 unwind label %10
-
-6:                                                ; preds = %5
-  %7 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  invoke void @llvm.seh.scope.end()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %6
-  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
-  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %9) #3
-  ret void
-
-10:                                               ; preds = %5, %4
-  %11 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %11) ]
-          to label %12 unwind label %14
-
-12:                                               ; preds = %10
-  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind label %14
-
-14:                                               ; preds = %6, %12, %10, %1
-  %15 = cleanuppad within none []
-  %16 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
-  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %16) #3 [ "funclet"(token %15) ]
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #3
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-declare dso_local i32 @_Thrd_id() #14
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"class.std::thread::id", ptr %5, i32 0, i32 0
-  %7 = load i32, ptr %3, align 4
-  store i32 %7, ptr %6, align 4
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?joinable at jthread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
-  %5 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
-  ret i1 %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at PEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = call noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  store ptr @"??_7exception at std@@6B@", ptr %5, align 8
-  %6 = getelementptr inbounds nuw %"class.std::exception", ptr %5, i32 0, i32 1
-  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 16, i1 false)
-  %7 = getelementptr inbounds nuw %"class.std::exception", ptr %5, i32 0, i32 1
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = getelementptr inbounds nuw %"class.std::exception", ptr %8, i32 0, i32 1
-  call void @__std_exception_copy(ptr noundef %9, ptr noundef %7)
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-declare dso_local void @_CxxThrowException(ptr, ptr)
-
-; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #15
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@jthread at std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAV01@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
-  %7 = call noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %21
-
-8:                                                ; preds = %2
-  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 1
-  %10 = invoke noundef ptr @"??0stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9)
-          to label %11 unwind label %21
-
-11:                                               ; preds = %8
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %18
-
-12:                                               ; preds = %11
-  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
-  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  invoke void @"??$_Start at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@$$V at thread@std@@AEAAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
-          to label %15 unwind label %18
-
-15:                                               ; preds = %12
-  invoke void @llvm.seh.scope.end()
-          to label %16 unwind label %18
-
-16:                                               ; preds = %15
-  invoke void @llvm.seh.scope.end()
-          to label %17 unwind label %21
-
-17:                                               ; preds = %16
-  ret ptr %5
-
-18:                                               ; preds = %15, %12, %11
-  %19 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %19) ]
-          to label %20 unwind label %21
-
-20:                                               ; preds = %18
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind label %21
-
-21:                                               ; preds = %16, %20, %18, %8, %2
-  %22 = cleanuppad within none []
-  call void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3 [ "funclet"(token %22) ]
-  cleanupret from %22 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(24) ptr @"??4jthread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %4, align 8
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %8 = icmp eq ptr %6, %7
-  br i1 %8, label %9, label %10
-
-9:                                                ; preds = %2
-  store ptr %6, ptr %3, align 8
-  br label %19
-
-10:                                               ; preds = %2
-  call void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds nuw %"class.std::jthread", ptr %11, i32 0, i32 0
-  %13 = getelementptr inbounds nuw %"class.std::jthread", ptr %6, i32 0, i32 0
-  %14 = call noundef nonnull align 8 dereferenceable(16) ptr @"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %12) #3
-  %15 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %16 = getelementptr inbounds nuw %"class.std::jthread", ptr %15, i32 0, i32 1
-  %17 = getelementptr inbounds nuw %"class.std::jthread", ptr %6, i32 0, i32 1
-  %18 = call noundef nonnull align 8 dereferenceable(8) ptr @"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %16) #3
-  store ptr %6, ptr %3, align 8
-  br label %19
-
-19:                                               ; preds = %10, %9
-  %20 = load ptr, ptr %3, align 8
-  ret ptr %20
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_id at jthread@std@@QEBA?AVid at thread@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"class.std::jthread", ptr %5, i32 0, i32 0
-  call void @"?get_id at thread@std@@QEBA?AVid at 12@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr dead_on_unwind writable sret(%"class.std::thread::id") align 4 %1) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::thread", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
-  %6 = load i32, ptr %5, align 8
-  %7 = icmp ne i32 %6, 0
-  ret i1 %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %struct.__std_exception_data, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  store ptr @"??_7exception at std@@6B@", ptr %6, align 8
-  %7 = getelementptr inbounds nuw %"class.std::exception", ptr %6, i32 0, i32 1
-  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 16, i1 false)
-  %8 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %5, i32 0, i32 0
-  %9 = load ptr, ptr %3, align 8
-  store ptr %9, ptr %8, align 8
-  %10 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %5, i32 0, i32 1
-  store i8 1, ptr %10, align 8
-  %11 = getelementptr inbounds nuw %"class.std::exception", ptr %6, i32 0, i32 1
-  call void @__std_exception_copy(ptr noundef %5, ptr noundef %11)
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  store ptr @"??_7exception at std@@6B@", ptr %3, align 8
-  %4 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
-  call void @__std_exception_destroy(ptr noundef %4)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gruntime_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?what at exception@std@@UEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
-  %5 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  %7 = icmp ne ptr %6, null
-  br i1 %7, label %8, label %12
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::exception", ptr %3, i32 0, i32 1
-  %10 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %9, i32 0, i32 0
-  %11 = load ptr, ptr %10, align 8
-  br label %13
-
-12:                                               ; preds = %1
-  br label %13
-
-13:                                               ; preds = %12, %8
-  %14 = phi ptr [ %11, %8 ], [ @"??_C at _0BC@EOODALEL at Unknown?5exception?$AA@", %12 ]
-  ret ptr %14
-}
-
-; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
-declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #16
-
-declare dso_local void @__std_exception_copy(ptr noundef, ptr noundef) #14
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gexception at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-declare dso_local void @__std_exception_destroy(ptr noundef) #14
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0thread at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::thread", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 0
-  store ptr null, ptr %5, align 8
-  %6 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
-  store i32 0, ptr %6, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::stop_source", ptr %3, i32 0, i32 0
-  %5 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef 32) #24
-  invoke void @llvm.seh.scope.begin()
-          to label %6 unwind label %9
-
-6:                                                ; preds = %1
-  %7 = call noundef ptr @"??0_Stop_state at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
-  invoke void @llvm.seh.scope.end()
-          to label %8 unwind label %9
-
-8:                                                ; preds = %6
-  store ptr %5, ptr %4, align 8
-  ret ptr %3
-
-9:                                                ; preds = %6, %1
-  %10 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 32) #23 [ "funclet"(token %10) ]
-  cleanupret from %10 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal void @"??$_Start at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@$$V at thread@std@@AEAAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"class.std::unique_ptr", align 8
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"??$make_unique at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@2@@Z at QEAAXU?$coroutine_handle at X@2@@Z@$0A@@std@@YA?AV?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@0@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr dead_on_unwind writable sret(%"class.std::unique_ptr") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %8)
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %30
-
-9:                                                ; preds = %2
-  store ptr @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z", ptr %6, align 8
-  %10 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
-  %11 = getelementptr inbounds nuw %struct._Thrd_t, ptr %10, i32 0, i32 1
-  %12 = call noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  %13 = invoke i64 @_beginthreadex(ptr noundef null, i32 noundef 0, ptr noundef @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z", ptr noundef %12, i32 noundef 0, ptr noundef %11)
-          to label %14 unwind label %30
-
-14:                                               ; preds = %9
-  %15 = inttoptr i64 %13 to ptr
-  %16 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
-  %17 = getelementptr inbounds nuw %struct._Thrd_t, ptr %16, i32 0, i32 0
-  store ptr %15, ptr %17, align 8
-  %18 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
-  %19 = getelementptr inbounds nuw %struct._Thrd_t, ptr %18, i32 0, i32 0
-  %20 = load ptr, ptr %19, align 8
-  %21 = icmp ne ptr %20, null
-  br i1 %21, label %22, label %24
-
-22:                                               ; preds = %14
-  %23 = call noundef ptr @"?release@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  br label %28
-
-24:                                               ; preds = %14
-  %25 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
-  %26 = getelementptr inbounds nuw %struct._Thrd_t, ptr %25, i32 0, i32 1
-  store i32 0, ptr %26, align 8
-  invoke void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 6) #22
-          to label %27 unwind label %30
-
-27:                                               ; preds = %24
-  unreachable
-
-28:                                               ; preds = %22
-  invoke void @llvm.seh.scope.end()
-          to label %29 unwind label %30
-
-29:                                               ; preds = %28
-  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  ret void
-
-30:                                               ; preds = %28, %24, %9, %2
-  %31 = cleanuppad within none []
-  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3 [ "funclet"(token %31) ]
-  cleanupret from %31 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::stop_source", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load ptr, ptr %3, align 8
-  %8 = icmp ne ptr %7, null
-  br i1 %8, label %9, label %31
-
-9:                                                ; preds = %1
-  %10 = load ptr, ptr %3, align 8
-  %11 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %10, i32 0, i32 1
-  %12 = call noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %11, i32 noundef 2, i32 noundef 4) #3
-  %13 = lshr i32 %12, 1
-  %14 = icmp eq i32 %13, 1
-  br i1 %14, label %15, label %30
-
-15:                                               ; preds = %9
-  %16 = load ptr, ptr %3, align 8
-  %17 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %16, i32 0, i32 0
-  %18 = call noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 noundef 1, i32 noundef 4) #3
-  %19 = icmp eq i32 %18, 1
-  br i1 %19, label %20, label %29
-
-20:                                               ; preds = %15
-  %21 = load ptr, ptr %3, align 8
-  %22 = icmp eq ptr %21, null
-  br i1 %22, label %26, label %23
-
-23:                                               ; preds = %20
-  invoke void @llvm.seh.scope.begin()
-          to label %24 unwind label %27
-
-24:                                               ; preds = %23
-  invoke void @llvm.seh.scope.end()
-          to label %25 unwind label %27
-
-25:                                               ; preds = %24
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %21, i64 noundef 32) #23
-  br label %26
-
-26:                                               ; preds = %25, %20
-  br label %29
-
-27:                                               ; preds = %24, %23
-  %28 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %21, i64 noundef 32) #23 [ "funclet"(token %28) ]
-  cleanupret from %28 unwind to caller
-
-29:                                               ; preds = %26, %15
-  br label %30
-
-30:                                               ; preds = %29, %9
-  br label %31
-
-31:                                               ; preds = %30, %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1thread at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3
-  br i1 %4, label %5, label %6
-
-5:                                                ; preds = %1
-  call void @terminate() #25
-  unreachable
-
-6:                                                ; preds = %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_Stop_state at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 0
-  %5 = call noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %4, i32 noundef 1) #3
-  %6 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 1
-  %7 = call noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef 2) #3
-  %8 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 2
-  %9 = call noundef ptr @"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
-  %10 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 3
-  %11 = call noundef ptr @"??0?$atomic at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef null) #3
-  %12 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %3, i32 0, i32 4
-  store i32 0, ptr %12, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??0?$atomic at I@std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load i32, ptr %3, align 4
-  %7 = call noundef ptr @"??0?$_Atomic_integral_facade at I@std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %3, i32 0, i32 0
-  %5 = call noundef ptr @"??0?$atomic at _K@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??0?$atomic at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = call noundef ptr @"??0?$_Atomic_pointer at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??0?$_Atomic_integral_facade at I@std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load i32, ptr %3, align 4
-  %7 = call noundef ptr @"??0?$_Atomic_integral at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??0?$_Atomic_integral at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load i32, ptr %3, align 4
-  %7 = call noundef ptr @"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$_Atomic_storage at I$03 at std@@QEAA at I@Z"(ptr noundef nonnull returned align 4 dereferenceable(4) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %5, i32 0, i32 0
-  %7 = getelementptr inbounds nuw %"struct.std::_Atomic_padded", ptr %6, i32 0, i32 0
-  %8 = load i32, ptr %3, align 4
-  store i32 %8, ptr %7, align 4
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$atomic at _K@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds i8, ptr %3, i64 0
-  call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 8, i1 false)
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??0?$_Atomic_pointer at PEBV_Stop_callback_base@std@@@std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = call noundef ptr @"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAA at QEBV_Stop_callback_base@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %5, i32 0, i32 0
-  %7 = getelementptr inbounds nuw %"struct.std::_Atomic_padded.8", ptr %6, i32 0, i32 0
-  %8 = load ptr, ptr %3, align 8
-  store ptr %8, ptr %7, align 8
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal void @"??$make_unique at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@2@@Z at QEAAXU?$coroutine_handle at X@2@@Z@$0A@@std@@YA?AV?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@0@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::unique_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef 8) #24
-  invoke void @llvm.seh.scope.begin()
-          to label %6 unwind label %11
-
-6:                                                ; preds = %2
-  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %8 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %11
-
-9:                                                ; preds = %6
-  %10 = call noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %5) #3
-  ret void
-
-11:                                               ; preds = %6, %2
-  %12 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 8) #23 [ "funclet"(token %12) ]
-  cleanupret from %12 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef i32 @"??$_Invoke at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$0A@@thread at std@@CAIPEAX at Z"(ptr noundef %0) #0 align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  %3 = alloca %"class.std::unique_ptr", align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %5 = load ptr, ptr %2, align 8
-  %6 = call noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %5) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %7 unwind label %14
-
-7:                                                ; preds = %1
-  %8 = call noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
-  store ptr %8, ptr %4, align 8
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %10 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$get@$0A at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAAEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z at AEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
-  invoke void @"??$invoke at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10)
-          to label %11 unwind label %14
-
-11:                                               ; preds = %7
-  invoke void @_Cnd_do_broadcast_at_thread_exit()
-          to label %12 unwind label %14
-
-12:                                               ; preds = %11
-  invoke void @llvm.seh.scope.end()
-          to label %13 unwind label %14
-
-13:                                               ; preds = %12
-  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
-  ret i32 0
-
-14:                                               ; preds = %12, %11, %7, %1
-  %15 = cleanuppad within none []
-  call void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3 [ "funclet"(token %15) ]
-  cleanupret from %15 unwind to caller
-}
-
-declare dso_local i64 @_beginthreadex(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #14
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"?get@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEBAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"?release@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  store ptr null, ptr %3, align 8
-  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
-  %7 = call noundef ptr @"??$exchange at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$$T at std@@YAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0 at AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #3
-  ret ptr %7
-}
-
-; Function Attrs: noreturn
-declare dso_local void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef) #17
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"??1?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  %7 = icmp ne ptr %6, null
-  br i1 %7, label %8, label %14
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAAAEAU?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
-  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
-  %13 = load ptr, ptr %12, align 8
-  call void @"??R?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@QEBAXPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #3
-  br label %14
-
-14:                                               ; preds = %8, %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::_Exact_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %8 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %5, i32 0, i32 0
-  %9 = load i8, ptr %8, align 1
-  %10 = call noundef ptr @"??$?0U_Exact_args_t at std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA at U_Exact_args_t@1@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 %9, ptr noundef nonnull align 8 dereferenceable(8) %7)
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??$?0U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@$0A@@?$unique_ptr at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2@@std@@QEAA at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef %1) unnamed_addr #0 align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %6, i32 0, i32 0
-  %8 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %5, i32 0, i32 0
-  %9 = load i8, ptr %8, align 1
-  %10 = call noundef ptr @"??$?0AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1 at AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i8 %9, ptr noundef nonnull align 8 dereferenceable(8) %3) #3
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal noundef ptr @"??$?0U_Exact_args_t at std@@V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@$$V$0A@@?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA at U_Exact_args_t@1@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) unnamed_addr #10 align 2 {
-  %4 = alloca %"struct.std::_Exact_args_t", align 1
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"struct.std::_Exact_args_t", align 1
-  %8 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %4, i32 0, i32 0
-  store i8 %1, ptr %8, align 1
-  store ptr %2, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %9 = load ptr, ptr %6, align 8
-  %10 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %7, i32 0, i32 0
-  %11 = load i8, ptr %10, align 1
-  %12 = call noundef ptr @"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %9, i8 %11) #3
-  %13 = getelementptr inbounds nuw %"class.std::tuple", ptr %9, i32 0, i32 0
-  %14 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %15 = call noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@@?$_Tuple_val at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14)
-  ret ptr %9
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U_Exact_args_t at std@@$0A@@?$tuple@$$V at std@@QEAA at U_Exact_args_t@1@@Z"(ptr noundef nonnull returned align 1 dereferenceable(1) %0, i8 %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca %"struct.std::_Exact_args_t", align 1
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::_Exact_args_t", ptr %3, i32 0, i32 0
-  store i8 %1, ptr %5, align 1
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??$?0V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z@@?$_Tuple_val at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@QEAA@$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@1@@Z at QEAAXU?$coroutine_handle at X@1@@Z@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::_Tuple_val", ptr %5, i32 0, i32 0
-  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %6, ptr align 8 %7, i64 8, i1 false)
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??$?0AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1 at AEAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) unnamed_addr #0 align 2 {
-  %4 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %4, i32 0, i32 0
-  store i8 %1, ptr %7, align 1
-  store ptr %2, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %8, i32 0, i32 0
-  %10 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %11 = load ptr, ptr %10, align 8
-  store ptr %11, ptr %9, align 8
-  ret ptr %8
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal void @"??$invoke at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAX$$QEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  call void @"??R<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z at QEBA?A?<auto>@@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %3)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef nonnull align 8 dereferenceable(8) ptr @"??$get@$0A at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@YAAEAV<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@0@@Z at QEAAXU?$coroutine_handle at X@0@@Z at AEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  %4 = getelementptr inbounds nuw %"class.std::tuple", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"struct.std::_Tuple_val", ptr %4, i32 0, i32 0
-  ret ptr %5
-}
-
-declare dso_local void @_Cnd_do_broadcast_at_thread_exit() #14
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define internal void @"??R<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@5@@Z at QEBA?A?<auto>@@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %class.anon, ptr %3, i32 0, i32 0
-  call void @"?resume@?$coroutine_handle at X@std@@QEBAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %4)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?resume@?$coroutine_handle at X@std@@QEBAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %5 = load ptr, ptr %4, align 8
-  call void @llvm.coro.resume(ptr %5)
-  ret void
-}
-
-declare void @llvm.coro.resume(ptr)
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef ptr @"??$exchange at PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@$$T at std@@YAPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@0 at AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr null, ptr %9, align 8
-  %10 = load ptr, ptr %5, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@PEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@2@$00 at std@@QEAAAEAU?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"??R?$default_delete at V?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@std@@@std@@QEBAXPEAV?$tuple at V<lambda_1>@?0??await_suspend at awaitable@?1??switch_to_new_thread@@YA at AEAVjthread@std@@@Z at QEAAXU?$coroutine_handle at X@6@@Z@@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = icmp eq ptr %6, null
-  br i1 %7, label %11, label %8
-
-8:                                                ; preds = %2
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %12
-
-9:                                                ; preds = %8
-  invoke void @llvm.seh.scope.end()
-          to label %10 unwind label %12
-
-10:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 8) #23
-  br label %11
-
-11:                                               ; preds = %10, %2
-  ret void
-
-12:                                               ; preds = %9, %8
-  %13 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 8) #23 [ "funclet"(token %13) ]
-  cleanupret from %13 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?fetch_sub@?$_Atomic_integral_facade at I@std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  store i32 %2, ptr %4, align 4
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i32, ptr %4, align 4
-  %9 = load i32, ptr %5, align 4
-  %10 = call noundef i32 @"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z"(i32 noundef %9) #3
-  %11 = call noundef i32 @"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %7, i32 noundef %10, i32 noundef %8) #3
-  ret i32 %11
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?fetch_add@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = alloca i32, align 4
-  store i32 %2, ptr %4, align 4
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i32, ptr %4, align 4
-  call void @_Check_memory_order(i32 noundef %9) #3
-  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %8, i32 0, i32 0
-  %11 = call noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %10) #3
-  %12 = load i32, ptr %5, align 4
-  %13 = atomicrmw add ptr %11, i32 %12 seq_cst, align 4
-  store i32 %13, ptr %7, align 4
-  %14 = load i32, ptr %7, align 4
-  ret i32 %14
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?_Negate@?$_Atomic_integral_facade at I@std@@SAII at Z"(i32 noundef %0) #0 comdat align 2 {
-  %2 = alloca i32, align 4
-  store i32 %0, ptr %2, align 4
-  %3 = load i32, ptr %2, align 4
-  %4 = sub i32 0, %3
-  ret i32 %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @_Check_memory_order(i32 noundef %0) #0 comdat {
-  %2 = alloca i32, align 4
-  store i32 %0, ptr %2, align 4
-  %3 = load i32, ptr %2, align 4
-  %4 = icmp ugt i32 %3, 5
-  br i1 %4, label %5, label %6
-
-5:                                                ; preds = %1
-  br label %6
-
-6:                                                ; preds = %5, %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !23
-  ret ptr %3
-}
-
-; Function Attrs: noreturn nounwind
-declare dso_local void @terminate() #18
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Try_cancel_and_join at jthread@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
-  %5 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
-  br i1 %5, label %6, label %10
-
-6:                                                ; preds = %1
-  %7 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 1
-  %8 = call noundef zeroext i1 @"?request_stop at stop_source@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  %9 = getelementptr inbounds nuw %"class.std::jthread", ptr %3, i32 0, i32 0
-  call void @"?join at thread@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(16) %9)
-  br label %10
-
-10:                                               ; preds = %6, %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"??4thread at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %struct._Thrd_t, align 8
-  %6 = alloca %struct._Thrd_t, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %7) #3
-  br i1 %8, label %9, label %10
-
-9:                                                ; preds = %2
-  call void @terminate() #25
-  unreachable
-
-10:                                               ; preds = %2
-  %11 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 0
-  store ptr null, ptr %11, align 8
-  %12 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 1
-  store i32 0, ptr %12, align 8
-  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %14 = getelementptr inbounds nuw %"class.std::thread", ptr %13, i32 0, i32 0
-  call void @"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z"(ptr dead_on_unwind writable sret(%struct._Thrd_t) align 8 %5, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %6) #3
-  %15 = getelementptr inbounds nuw %"class.std::thread", ptr %7, i32 0, i32 0
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %5, i64 16, i1 false)
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??4stop_source at std@@QEAAAEAV01@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"class.std::stop_source", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %8 = call noundef ptr @"??0stop_source at std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %11
-
-9:                                                ; preds = %2
-  call void @"?swap at stop_source@std@@QEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %10 unwind label %11
-
-10:                                               ; preds = %9
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  ret ptr %6
-
-11:                                               ; preds = %9, %2
-  %12 = cleanuppad within none []
-  call void @"??1stop_source at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3 [ "funclet"(token %12) ]
-  cleanupret from %12 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?request_stop at stop_source@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::stop_source", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load ptr, ptr %3, align 8
-  %8 = icmp ne ptr %7, null
-  br i1 %8, label %9, label %12
-
-9:                                                ; preds = %1
-  %10 = load ptr, ptr %3, align 8
-  %11 = call noundef zeroext i1 @"?_Request_stop at _Stop_state@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3
-  br label %12
-
-12:                                               ; preds = %9, %1
-  %13 = phi i1 [ false, %1 ], [ %11, %9 ]
-  ret i1 %13
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?join at thread@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #10 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca %struct._Thrd_t, align 8
-  %4 = alloca %struct._Thrd_t, align 8
-  store ptr %0, ptr %2, align 8
-  %5 = load ptr, ptr %2, align 8
-  %6 = call noundef zeroext i1 @"?joinable at thread@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  br i1 %6, label %8, label %7
-
-7:                                                ; preds = %1
-  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 1) #22
-  unreachable
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
-  %10 = getelementptr inbounds nuw %struct._Thrd_t, ptr %9, i32 0, i32 1
-  %11 = load i32, ptr %10, align 8
-  %12 = call i32 @_Thrd_id()
-  %13 = icmp eq i32 %11, %12
-  br i1 %13, label %14, label %15
-
-14:                                               ; preds = %8
-  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 5) #22
-  unreachable
-
-15:                                               ; preds = %8
-  %16 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3, ptr align 8 %16, i64 16, i1 false)
-  %17 = call i32 @_Thrd_join(ptr noundef %3, ptr noundef null)
-  %18 = icmp ne i32 %17, 0
-  br i1 %18, label %19, label %20
-
-19:                                               ; preds = %15
-  call void @"?_Throw_Cpp_error at std@@YAXH at Z"(i32 noundef 2) #22
-  unreachable
-
-20:                                               ; preds = %15
-  %21 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 0
-  store ptr null, ptr %21, align 8
-  %22 = getelementptr inbounds nuw %struct._Thrd_t, ptr %4, i32 0, i32 1
-  store i32 0, ptr %22, align 8
-  %23 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %4, i64 16, i1 false)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?_Request_stop at _Stop_state@std@@QEAA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca i1, align 1
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  %7 = load ptr, ptr %3, align 8
-  %8 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 1
-  %9 = call noundef i32 @"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef 1, i32 noundef 5) #3
-  %10 = and i32 %9, 1
-  %11 = icmp ne i32 %10, 0
-  br i1 %11, label %12, label %13
-
-12:                                               ; preds = %1
-  store i1 false, ptr %2, align 1
-  br label %42
-
-13:                                               ; preds = %1
-  %14 = call i32 @_Thrd_id()
-  %15 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 4
-  store i32 %14, ptr %15, align 8
-  br label %16
-
-16:                                               ; preds = %35, %13
-  %17 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
-  %18 = call noundef ptr @"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %17) #3
-  store ptr %18, ptr %4, align 8
-  %19 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 3
-  %20 = load ptr, ptr %4, align 8
-  call void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef %20, i32 noundef 0) #3
-  %21 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 3
-  call void @"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %21) #3
-  %22 = load ptr, ptr %4, align 8
-  %23 = icmp eq ptr %22, null
-  br i1 %23, label %24, label %26
-
-24:                                               ; preds = %16
-  %25 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
-  call void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef null) #3
-  store i1 true, ptr %2, align 1
-  br label %42
-
-26:                                               ; preds = %16
-  store ptr null, ptr %6, align 8
-  %27 = load ptr, ptr %4, align 8
-  %28 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %27, i32 0, i32 1
-  %29 = call noundef ptr @"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
-  store ptr %29, ptr %5, align 8
-  %30 = load ptr, ptr %5, align 8
-  %31 = icmp ne ptr %30, null
-  br i1 %31, label %32, label %35
-
-32:                                               ; preds = %26
-  %33 = load ptr, ptr %5, align 8
-  %34 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %33, i32 0, i32 2
-  store ptr null, ptr %34, align 8
-  br label %35
-
-35:                                               ; preds = %32, %26
-  %36 = getelementptr inbounds nuw %"struct.std::_Stop_state", ptr %7, i32 0, i32 2
-  %37 = load ptr, ptr %5, align 8
-  call void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %37) #3
-  %38 = load ptr, ptr %4, align 8
-  %39 = getelementptr inbounds nuw %"class.std::_Stop_callback_base", ptr %38, i32 0, i32 3
-  %40 = load ptr, ptr %39, align 8
-  %41 = load ptr, ptr %4, align 8
-  call void %40(ptr noundef %41) #3
-  br label %16, !llvm.loop !24
-
-42:                                               ; preds = %24, %12
-  %43 = load i1, ptr %2, align 1
-  ret i1 %43
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?fetch_or@?$_Atomic_integral at I$03 at std@@QEAAIIW4memory_order at 2@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %0, i32 noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = alloca i32, align 4
-  store i32 %2, ptr %4, align 4
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i32, ptr %4, align 4
-  call void @_Check_memory_order(i32 noundef %9) #3
-  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage", ptr %8, i32 0, i32 0
-  %11 = call noundef ptr @"??$_Atomic_address_as at JU?$_Atomic_padded at I@std@@@std@@YAPECJAEAU?$_Atomic_padded at I@0@@Z"(ptr noundef nonnull align 4 dereferenceable(4) %10) #3
-  %12 = load i32, ptr %5, align 4
-  %13 = atomicrmw or ptr %11, i32 %12 seq_cst, align 4
-  store i32 %13, ptr %7, align 4
-  %14 = load i32, ptr %7, align 4
-  ret i32 %14
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?_Lock_and_load@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAPEAV_Stop_callback_base at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca i64, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
-  %6 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i32 noundef 0) #3
-  store i64 %6, ptr %3, align 8
-  br label %7
-
-7:                                                ; preds = %36, %1
-  %8 = load i64, ptr %3, align 8
-  %9 = and i64 %8, 3
-  switch i64 %9, label %35 [
-    i64 0, label %10
-    i64 1, label %19
-    i64 2, label %30
-  ]
-
-10:                                               ; preds = %7
-  %11 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
-  %12 = load i64, ptr %3, align 8
-  %13 = or i64 %12, 1
-  %14 = call noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef %13) #3
-  br i1 %14, label %15, label %18
-
-15:                                               ; preds = %10
-  %16 = load i64, ptr %3, align 8
-  %17 = inttoptr i64 %16 to ptr
-  ret ptr %17
-
-18:                                               ; preds = %10
-  call void @llvm.x86.sse2.pause()
-  br label %36
-
-19:                                               ; preds = %7
-  %20 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
-  %21 = load i64, ptr %3, align 8
-  %22 = and i64 %21, -4
-  %23 = or i64 %22, 2
-  %24 = call noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef %23) #3
-  br i1 %24, label %26, label %25
-
-25:                                               ; preds = %19
-  call void @llvm.x86.sse2.pause()
-  br label %36
-
-26:                                               ; preds = %19
-  %27 = load i64, ptr %3, align 8
-  %28 = and i64 %27, -4
-  %29 = or i64 %28, 2
-  store i64 %29, ptr %3, align 8
-  br label %30
-
-30:                                               ; preds = %7, %26
-  %31 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
-  %32 = load i64, ptr %3, align 8
-  call void @"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %31, i64 noundef %32, i32 noundef 0) #3
-  %33 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %4, i32 0, i32 0
-  %34 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %33, i32 noundef 0) #3
-  store i64 %34, ptr %3, align 8
-  br label %36
-
-35:                                               ; preds = %7
-  call void @abort() #25
-  unreachable
-
-36:                                               ; preds = %30, %25, %18
-  br label %7, !llvm.loop !25
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@W4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca i64, align 8
-  store i32 %2, ptr %4, align 4
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %9 = load ptr, ptr %6, align 8
-  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %9, i32 0, i32 0
-  %11 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
-  store ptr %11, ptr %7, align 8
-  %12 = call noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  store i64 %12, ptr %8, align 8
-  %13 = load i32, ptr %4, align 4
-  switch i32 %13, label %20 [
-    i32 0, label %14
-    i32 3, label %17
-    i32 1, label %21
-    i32 2, label %21
-    i32 4, label %21
-    i32 5, label %22
-  ]
-
-14:                                               ; preds = %3
-  %15 = load ptr, ptr %7, align 8
-  %16 = load i64, ptr %8, align 8
-  store volatile i64 %16, ptr %15, align 8
-  br label %24
-
-17:                                               ; preds = %3
-  fence syncscope("singlethread") seq_cst
-  %18 = load ptr, ptr %7, align 8
-  %19 = load i64, ptr %8, align 8
-  store volatile i64 %19, ptr %18, align 8
-  br label %24
-
-20:                                               ; preds = %3
-  br label %21
-
-21:                                               ; preds = %3, %3, %3, %20
-  br label %22
-
-22:                                               ; preds = %3, %21
-  %23 = load ptr, ptr %5, align 8
-  call void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %23) #3
-  br label %24
-
-24:                                               ; preds = %22, %17, %14
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?notify_all@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %3, i32 0, i32 0
-  call void @__std_atomic_notify_all_direct(ptr noundef %4) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Store_and_unlock@?$_Locked_pointer at V_Stop_callback_base@std@@@std@@QEAAXQEAV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca i64, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %6, i32 0, i32 0
-  %8 = load ptr, ptr %3, align 8
-  %9 = ptrtoint ptr %8 to i64
-  %10 = call noundef i64 @"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef %9, i32 noundef 5) #3
-  store i64 %10, ptr %5, align 8
-  %11 = load i64, ptr %5, align 8
-  %12 = and i64 %11, 3
-  %13 = icmp eq i64 %12, 2
-  br i1 %13, label %14, label %16
-
-14:                                               ; preds = %2
-  %15 = getelementptr inbounds nuw %"class.std::_Locked_pointer", ptr %6, i32 0, i32 0
-  call void @"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %15) #3
-  br label %16
-
-16:                                               ; preds = %14, %2
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$exchange at PEAV_Stop_callback_base@std@@$$T at std@@YAPEAV_Stop_callback_base at 0@AEAPEAV10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr null, ptr %9, align 8
-  %10 = load ptr, ptr %5, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef %1) #0 comdat align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca i64, align 8
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %7, i32 0, i32 0
-  %9 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
-  store ptr %9, ptr %5, align 8
-  %10 = load ptr, ptr %5, align 8
-  %11 = load volatile i64, ptr %10, align 8
-  store i64 %11, ptr %6, align 8
-  %12 = load i32, ptr %3, align 4
-  switch i32 %12, label %16 [
-    i32 0, label %13
-    i32 1, label %14
-    i32 2, label %14
-    i32 5, label %14
-    i32 3, label %15
-    i32 4, label %15
-  ]
-
-13:                                               ; preds = %2
-  br label %17
-
-14:                                               ; preds = %2, %2, %2
-  fence syncscope("singlethread") seq_cst
-  br label %17
-
-15:                                               ; preds = %2, %2
-  br label %16
-
-16:                                               ; preds = %2, %15
-  br label %17
-
-17:                                               ; preds = %16, %14, %13
-  %18 = load i64, ptr %6, align 8
-  ret i64 %18
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?compare_exchange_weak@?$atomic at _K@std@@QEAA_NAEA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i64, ptr %4, align 8
-  %9 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %10 = call noundef zeroext i1 @"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %9, i64 noundef %8, i32 noundef 5) #3
-  ret i1 %10
-}
-
-; Function Attrs: nounwind
-declare void @llvm.x86.sse2.pause() #3
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?wait@?$_Atomic_storage at _K$07 at std@@QEBAX_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca i64, align 8
-  %6 = alloca ptr, align 8
-  store i32 %2, ptr %4, align 4
-  store i64 %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i32, ptr %4, align 4
-  %9 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  call void @"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z"(ptr noundef %7, i64 noundef %9, i32 noundef %8) #3
-  ret void
-}
-
-; Function Attrs: noreturn nounwind
-declare dso_local void @abort() #18
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPED_JAEBU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?compare_exchange_strong@?$_Atomic_storage at _K$07 at std@@QEAA_NAEA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %2, i32 noundef %3) #0 comdat align 2 {
-  %5 = alloca i1, align 1
-  %6 = alloca i32, align 4
-  %7 = alloca i64, align 8
-  %8 = alloca ptr, align 8
-  %9 = alloca ptr, align 8
-  %10 = alloca i64, align 8
-  %11 = alloca i64, align 8
-  store i32 %3, ptr %6, align 4
-  store i64 %2, ptr %7, align 8
-  store ptr %1, ptr %8, align 8
-  store ptr %0, ptr %9, align 8
-  %12 = load ptr, ptr %9, align 8
-  %13 = load ptr, ptr %8, align 8, !nonnull !16, !align !17
-  %14 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
-  store i64 %14, ptr %10, align 8
-  %15 = load i32, ptr %6, align 4
-  call void @_Check_memory_order(i32 noundef %15) #3
-  %16 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %12, i32 0, i32 0
-  %17 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %16) #3
-  %18 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  %19 = load i64, ptr %10, align 8
-  %20 = cmpxchg volatile ptr %17, i64 %19, i64 %18 seq_cst seq_cst, align 8
-  %21 = extractvalue { i64, i1 } %20, 0
-  store i64 %21, ptr %11, align 8
-  %22 = load i64, ptr %11, align 8
-  %23 = load i64, ptr %10, align 8
-  %24 = icmp eq i64 %22, %23
-  br i1 %24, label %25, label %26
-
-25:                                               ; preds = %4
-  store i1 true, ptr %5, align 1
-  br label %28
-
-26:                                               ; preds = %4
-  %27 = load ptr, ptr %8, align 8, !nonnull !16, !align !17
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %11, i64 8, i1 false)
-  store i1 false, ptr %5, align 1
-  br label %28
-
-28:                                               ; preds = %26, %25
-  %29 = load i1, ptr %5, align 1
-  ret i1 %29
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  %4 = load i64, ptr %3, align 8
-  ret i64 %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Atomic_wait_direct at _K_J@std@@YAXQEBU?$_Atomic_storage at _K$07 at 0@_JW4memory_order at 0@@Z"(ptr noundef %0, i64 noundef %1, i32 noundef %2) #0 comdat {
-  %4 = alloca i32, align 4
-  %5 = alloca i64, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca i64, align 8
-  %9 = alloca i64, align 8
-  store i32 %2, ptr %4, align 4
-  store i64 %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %10 = load ptr, ptr %6, align 8
-  %11 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %10, i32 0, i32 0
-  store ptr %11, ptr %7, align 8
-  br label %12
-
-12:                                               ; preds = %21, %3
-  %13 = load ptr, ptr %6, align 8
-  %14 = load i32, ptr %4, align 4
-  %15 = call noundef i64 @"?load@?$_Atomic_storage at _K$07 at std@@QEBA_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %13, i32 noundef %14) #3
-  store i64 %15, ptr %9, align 8
-  %16 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
-  store i64 %16, ptr %8, align 8
-  %17 = load i64, ptr %5, align 8
-  %18 = load i64, ptr %8, align 8
-  %19 = icmp ne i64 %17, %18
-  br i1 %19, label %20, label %21
-
-20:                                               ; preds = %12
-  ret void
-
-21:                                               ; preds = %12
-  %22 = load ptr, ptr %7, align 8
-  %23 = call i32 @__std_atomic_wait_direct(ptr noundef %22, ptr noundef %5, i64 noundef 8, i32 noundef -1) #3
-  br label %12, !llvm.loop !26
-}
-
-; Function Attrs: nounwind
-declare dso_local i32 @__std_atomic_wait_direct(ptr noundef, ptr noundef, i64 noundef, i32 noundef) #19
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  %4 = load ptr, ptr %3, align 8
-  %5 = ptrtoint ptr %4 to i64
-  ret i64 %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?store@?$_Atomic_storage at PEBV_Stop_callback_base@std@@$07 at std@@QEAAXQEBV_Stop_callback_base at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca i64, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.7", ptr %7, i32 0, i32 0
-  %9 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at PEBV_Stop_callback_base@std@@@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %8) #3
-  store ptr %9, ptr %5, align 8
-  %10 = call noundef i64 @"??$_Atomic_reinterpret_as at _JPEBV_Stop_callback_base@std@@@std@@YA_JAEBQEBV_Stop_callback_base at 0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %3) #3
-  store i64 %10, ptr %6, align 8
-  %11 = load ptr, ptr %5, align 8
-  %12 = load i64, ptr %6, align 8
-  %13 = atomicrmw xchg ptr %11, i64 %12 seq_cst, align 8
-  ret void
-}
-
-; Function Attrs: nounwind
-declare dso_local void @__std_atomic_notify_all_direct(ptr noundef) #19
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?exchange@?$_Atomic_storage at _K$07 at std@@QEAA_K_KW4memory_order at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1, i32 noundef %2) #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca i64, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca i64, align 8
-  store i32 %2, ptr %4, align 4
-  store i64 %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i32, ptr %4, align 4
-  call void @_Check_memory_order(i32 noundef %9) #3
-  %10 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %8, i32 0, i32 0
-  %11 = call noundef ptr @"??$_Atomic_address_as at _JU?$_Atomic_padded at _K@std@@@std@@YAPEC_JAEAU?$_Atomic_padded at _K@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %10) #3
-  %12 = call noundef i64 @"??$_Atomic_reinterpret_as at _J_K@std@@YA_JAEB_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  %13 = atomicrmw xchg ptr %11, i64 %12 seq_cst, align 8
-  store i64 %13, ptr %7, align 8
-  %14 = load i64, ptr %7, align 8
-  ret i64 %14
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?notify_all@?$_Atomic_storage at _K$07 at std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::_Atomic_storage.4", ptr %3, i32 0, i32 0
-  call void @__std_atomic_notify_all_direct(ptr noundef %4) #3
-  ret void
-}
-
-declare dso_local i32 @_Thrd_join(ptr noundef, ptr noundef) #14
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$exchange at U_Thrd_t@@U1@@std@@YA?AU_Thrd_t@@AEAU1@$$QEAU1@@Z"(ptr dead_on_unwind noalias writable sret(%struct._Thrd_t) align 8 %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2) #0 comdat {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %0, ptr %4, align 8
-  store ptr %2, ptr %5, align 8
-  store ptr %1, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8, !nonnull !16, !align !17
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %7, i64 16, i1 false)
-  %8 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %9 = load ptr, ptr %6, align 8, !nonnull !16, !align !17
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %8, i64 16, i1 false)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
-  store ptr null, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = getelementptr inbounds nuw %"class.std::stop_source", ptr %8, i32 0, i32 0
-  %10 = call noundef ptr @"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  store ptr %10, ptr %7, align 8
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?swap at stop_source@std@@QEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
-  %8 = getelementptr inbounds nuw %"class.std::stop_source", ptr %5, i32 0, i32 0
-  call void @"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$exchange at PEAU_Stop_state@std@@$$T at std@@YAPEAU_Stop_state at 0@AEAPEAU10@$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr null, ptr %9, align 8
-  %10 = load ptr, ptr %5, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$swap at PEAU_Stop_state@std@@$0A@@std@@YAXAEAPEAU_Stop_state at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = load ptr, ptr %8, align 8
-  %10 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr %9, ptr %10, align 8
-  %11 = load ptr, ptr %5, align 8
-  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  store ptr %11, ptr %12, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_id at thread@std@@QEBA?AVid at 12@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::thread::id") align 4 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"class.std::thread", ptr %5, i32 0, i32 0
-  %7 = getelementptr inbounds nuw %struct._Thrd_t, ptr %6, i32 0, i32 1
-  %8 = load i32, ptr %7, align 8
-  %9 = call noundef ptr @"??0id at thread@std@@AEAA at I@Z"(ptr noundef nonnull align 4 dereferenceable(4) %1, i32 noundef %8) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0stop_source at std@@QEAA at Unostopstate_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca %"struct.std::nostopstate_t", align 1
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::nostopstate_t", ptr %3, i32 0, i32 0
-  store i8 %1, ptr %5, align 1
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::stop_source", ptr %6, i32 0, i32 0
-  store ptr null, ptr %7, align 8
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = call i64 @strlen(ptr noundef %3) #3
-  ret i64 %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?width at ios_base@std@@QEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 6
-  %5 = load i64, ptr %4, align 8
-  ret i64 %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %4, align 8
-  store ptr %0, ptr %5, align 8
-  %7 = load ptr, ptr %5, align 8
-  store ptr %7, ptr %3, align 8
-  %8 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %9 = call noundef ptr @"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
-  invoke void @llvm.seh.scope.begin()
-          to label %10 unwind label %57
-
-10:                                               ; preds = %2
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds i8, ptr %11, i64 0
-  %13 = load ptr, ptr %12, align 8
-  %14 = getelementptr inbounds i32, ptr %13, i32 1
-  %15 = load i32, ptr %14, align 4
-  %16 = sext i32 %15 to i64
-  %17 = add nsw i64 0, %16
-  %18 = getelementptr inbounds i8, ptr %11, i64 %17
-  %19 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %18) #3
-  br i1 %19, label %22, label %20
-
-20:                                               ; preds = %10
-  %21 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
-  store i8 0, ptr %21, align 8
-  br label %55
-
-22:                                               ; preds = %10
-  %23 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %24 = getelementptr inbounds i8, ptr %23, i64 0
-  %25 = load ptr, ptr %24, align 8
-  %26 = getelementptr inbounds i32, ptr %25, i32 1
-  %27 = load i32, ptr %26, align 4
-  %28 = sext i32 %27 to i64
-  %29 = add nsw i64 0, %28
-  %30 = getelementptr inbounds i8, ptr %23, i64 %29
-  %31 = call noundef ptr @"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %30) #3
-  store ptr %31, ptr %6, align 8
-  %32 = load ptr, ptr %6, align 8
-  %33 = icmp ne ptr %32, null
-  br i1 %33, label %34, label %38
-
-34:                                               ; preds = %22
-  %35 = load ptr, ptr %6, align 8
-  %36 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %37 = icmp eq ptr %35, %36
-  br i1 %37, label %38, label %40
-
-38:                                               ; preds = %34, %22
-  %39 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
-  store i8 1, ptr %39, align 8
-  br label %55
-
-40:                                               ; preds = %34
-  %41 = load ptr, ptr %6, align 8
-  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %41)
-          to label %43 unwind label %57
-
-43:                                               ; preds = %40
-  %44 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %45 = getelementptr inbounds i8, ptr %44, i64 0
-  %46 = load ptr, ptr %45, align 8
-  %47 = getelementptr inbounds i32, ptr %46, i32 1
-  %48 = load i32, ptr %47, align 4
-  %49 = sext i32 %48 to i64
-  %50 = add nsw i64 0, %49
-  %51 = getelementptr inbounds i8, ptr %44, i64 %50
-  %52 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %51) #3
-  %53 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %7, i32 0, i32 1
-  %54 = zext i1 %52 to i8
-  store i8 %54, ptr %53, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %55 unwind label %57
-
-55:                                               ; preds = %20, %38, %43
-  %56 = load ptr, ptr %3, align 8
-  ret ptr %56
-
-57:                                               ; preds = %43, %40, %2
-  %58 = cleanuppad within none []
-  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #3 [ "funclet"(token %58) ]
-  cleanupret from %58 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::sentry", ptr %3, i32 0, i32 1
-  %5 = load i8, ptr %4, align 8
-  %6 = trunc i8 %5 to i1
-  ret i1 %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 4
-  %5 = load i32, ptr %4, align 8
-  ret i32 %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?eq_int_type@?$_Narrow_char_traits at DH@std@@SA_NHH at Z"(i32 noundef %0, i32 noundef %1) #0 comdat align 2 {
-  %3 = alloca i32, align 4
-  %4 = alloca i32, align 4
-  store i32 %1, ptr %3, align 4
-  store i32 %0, ptr %4, align 4
-  %5 = load i32, ptr %4, align 4
-  %6 = load i32, ptr %3, align 4
-  %7 = icmp eq i32 %5, %6
-  ret i1 %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 1
-  %5 = load ptr, ptr %4, align 8
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?sputc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHD at Z"(ptr noundef nonnull align 8 dereferenceable(104) %0, i8 noundef %1) #10 comdat align 2 {
-  %3 = alloca i8, align 1
-  %4 = alloca ptr, align 8
-  store i8 %1, ptr %3, align 1
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = call noundef i64 @"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(104) %5) #3
-  %7 = icmp slt i64 0, %6
-  br i1 %7, label %8, label %12
-
-8:                                                ; preds = %2
-  %9 = load i8, ptr %3, align 1
-  %10 = call noundef ptr @"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(104) %5) #3
-  store i8 %9, ptr %10, align 1
-  %11 = call noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %9) #3
-  br label %19
-
-12:                                               ; preds = %2
-  %13 = load i8, ptr %3, align 1
-  %14 = call noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %13) #3
-  %15 = load ptr, ptr %5, align 8
-  %16 = getelementptr inbounds ptr, ptr %15, i64 3
-  %17 = load ptr, ptr %16, align 8
-  %18 = call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(104) %5, i32 noundef %14)
-  br label %19
-
-19:                                               ; preds = %12, %8
-  %20 = phi i32 [ %11, %8 ], [ %18, %12 ]
-  ret i32 %20
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i8 @"?fill@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBADXZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 3
-  %5 = load i8, ptr %4, align 8
-  ret i8 %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?eof@?$_Narrow_char_traits at DH@std@@SAHXZ"() #0 comdat align 2 {
-  ret i32 -1
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?sputn@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAA_JPEBD_J at Z"(ptr noundef nonnull align 8 dereferenceable(104) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i64, ptr %4, align 8
-  %9 = load ptr, ptr %5, align 8
-  %10 = load ptr, ptr %7, align 8
-  %11 = getelementptr inbounds ptr, ptr %10, i64 9
-  %12 = load ptr, ptr %11, align 8
-  %13 = call noundef i64 %12(ptr noundef nonnull align 8 dereferenceable(104) %7, ptr noundef %9, i64 noundef %8)
-  ret i64 %13
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?width at ios_base@std@@QEAA_J_J at Z"(ptr noundef nonnull align 8 dereferenceable(72) %0, i64 noundef %1) #0 comdat align 2 {
-  %3 = alloca i64, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca i64, align 8
-  store i64 %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::ios_base", ptr %6, i32 0, i32 6
-  %8 = load i64, ptr %7, align 8
-  store i64 %8, ptr %5, align 8
-  %9 = load i64, ptr %3, align 8
-  %10 = getelementptr inbounds nuw %"class.std::ios_base", ptr %6, i32 0, i32 6
-  store i64 %9, ptr %10, align 8
-  %11 = load i64, ptr %5, align 8
-  ret i64 %11
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
-  %4 = alloca i8, align 1
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = zext i1 %2 to i8
-  store i8 %7, ptr %4, align 1
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i8, ptr %4, align 1
-  %10 = trunc i8 %9 to i1
-  %11 = call noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %8) #3
-  %12 = load i32, ptr %5, align 4
-  %13 = or i32 %11, %12
-  call void @"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %8, i32 noundef %13, i1 noundef zeroext %10)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  %3 = alloca i8, align 1
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %5 unwind label %16
-
-5:                                                ; preds = %1
-  %6 = call noundef i32 @"?uncaught_exceptions at std@@YAHXZ"() #3
-  %7 = icmp eq i32 %6, 0
-  %8 = zext i1 %7 to i8
-  store i8 %8, ptr %3, align 1
-  %9 = load i8, ptr %3, align 1
-  %10 = trunc i8 %9 to i1
-  br i1 %10, label %11, label %14
-
-11:                                               ; preds = %5
-  %12 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %4, i32 0, i32 0
-  %13 = load ptr, ptr %12, align 8, !nonnull !16, !align !17
-  call void @"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %13) #3
-  br label %14
-
-14:                                               ; preds = %11, %5
-  invoke void @llvm.seh.scope.end()
-          to label %15 unwind label %16
-
-15:                                               ; preds = %14
-  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3
-  ret void
-
-16:                                               ; preds = %14, %1
-  %17 = cleanuppad within none []
-  call void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #3 [ "funclet"(token %17) ]
-  cleanupret from %17 unwind to caller
-}
-
-; Function Attrs: nounwind
-declare dso_local i64 @strlen(ptr noundef) #19
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #10 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %4, align 8
-  store ptr %0, ptr %5, align 8
-  %7 = load ptr, ptr %5, align 8
-  store ptr %7, ptr %3, align 8
-  %8 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %7, i32 0, i32 0
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr %9, ptr %8, align 8
-  %10 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %7, i32 0, i32 0
-  %11 = load ptr, ptr %10, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds i8, ptr %11, i64 0
-  %13 = load ptr, ptr %12, align 8
-  %14 = getelementptr inbounds i32, ptr %13, i32 1
-  %15 = load i32, ptr %14, align 4
-  %16 = sext i32 %15 to i64
-  %17 = add nsw i64 0, %16
-  %18 = getelementptr inbounds i8, ptr %11, i64 %17
-  %19 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %18) #3
-  store ptr %19, ptr %6, align 8
-  %20 = load ptr, ptr %6, align 8
-  %21 = icmp ne ptr %20, null
-  br i1 %21, label %22, label %27
-
-22:                                               ; preds = %2
-  %23 = load ptr, ptr %6, align 8
-  %24 = load ptr, ptr %23, align 8
-  %25 = getelementptr inbounds ptr, ptr %24, i64 1
-  %26 = load ptr, ptr %25, align 8
-  call void %26(ptr noundef nonnull align 8 dereferenceable(104) %23)
-  br label %27
-
-27:                                               ; preds = %22, %2
-  %28 = load ptr, ptr %3, align 8
-  ret ptr %28
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = call noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %3) #3
-  %5 = icmp eq i32 %4, 0
-  ret i1 %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?tie@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_ostream at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %3, i32 0, i32 2
-  %5 = load ptr, ptr %4, align 8
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"?flush@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAAEAV12 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  %4 = alloca %"class.std::basic_ostream<char>::sentry", align 8
-  %5 = alloca i32, align 4
-  store ptr %0, ptr %2, align 8
-  %6 = load ptr, ptr %2, align 8
-  %7 = getelementptr inbounds i8, ptr %6, i64 0
-  %8 = load ptr, ptr %7, align 8
-  %9 = getelementptr inbounds i32, ptr %8, i32 1
-  %10 = load i32, ptr %9, align 4
-  %11 = sext i32 %10 to i64
-  %12 = add nsw i64 0, %11
-  %13 = getelementptr inbounds i8, ptr %6, i64 %12
-  %14 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %13) #3
-  store ptr %14, ptr %3, align 8
-  %15 = load ptr, ptr %3, align 8
-  %16 = icmp ne ptr %15, null
-  br i1 %16, label %17, label %60
-
-17:                                               ; preds = %1
-  %18 = call noundef ptr @"??0sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at AEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(8) %6)
-  invoke void @llvm.seh.scope.begin()
-          to label %19 unwind label %58
-
-19:                                               ; preds = %17
-  %20 = invoke noundef zeroext i1 @"??Bsentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(16) %4)
-          to label %21 unwind label %58
-
-21:                                               ; preds = %19
-  br i1 %20, label %22, label %56
-
-22:                                               ; preds = %21
-  store i32 0, ptr %5, align 4
-  invoke void @llvm.seh.try.begin()
-          to label %23 unwind label %26
-
-23:                                               ; preds = %22
-  %24 = load ptr, ptr %3, align 8
-  %25 = invoke noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %24)
-          to label %50 unwind label %26
-
-26:                                               ; preds = %23, %22
-  %27 = catchswitch within none [label %28] unwind label %58
-
-28:                                               ; preds = %26
-  %29 = catchpad within %27 [ptr null, i32 0, ptr null]
-  %30 = getelementptr inbounds i8, ptr %6, i64 0
-  %31 = load ptr, ptr %30, align 8
-  %32 = getelementptr inbounds i32, ptr %31, i32 1
-  %33 = load i32, ptr %32, align 4
-  %34 = sext i32 %33 to i64
-  %35 = add nsw i64 0, %34
-  %36 = getelementptr inbounds i8, ptr %6, i64 %35
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %36, i32 noundef 4, i1 noundef zeroext true) [ "funclet"(token %29) ]
-          to label %37 unwind label %58
-
-37:                                               ; preds = %28
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %29) ]
-          to label %38 unwind label %58
-
-38:                                               ; preds = %37
-  catchret from %29 to label %39
-
-39:                                               ; preds = %38
-  br label %40
-
-40:                                               ; preds = %39, %55
-  %41 = getelementptr inbounds i8, ptr %6, i64 0
-  %42 = load ptr, ptr %41, align 8
-  %43 = getelementptr inbounds i32, ptr %42, i32 1
-  %44 = load i32, ptr %43, align 4
-  %45 = sext i32 %44 to i64
-  %46 = add nsw i64 0, %45
-  %47 = getelementptr inbounds i8, ptr %6, i64 %46
-  %48 = load i32, ptr %5, align 4
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %47, i32 noundef %48, i1 noundef zeroext false)
-          to label %49 unwind label %58
-
-49:                                               ; preds = %40
-  br label %56
-
-50:                                               ; preds = %23
-  %51 = icmp eq i32 %25, -1
-  br i1 %51, label %52, label %55
-
-52:                                               ; preds = %50
-  %53 = load i32, ptr %5, align 4
-  %54 = or i32 %53, 4
-  store i32 %54, ptr %5, align 4
-  br label %55
-
-55:                                               ; preds = %52, %50
-  br label %40
-
-56:                                               ; preds = %49, %21
-  invoke void @llvm.seh.scope.end()
-          to label %57 unwind label %58
-
-57:                                               ; preds = %56
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
-  br label %60
-
-58:                                               ; preds = %56, %40, %37, %28, %26, %19, %17
-  %59 = cleanuppad within none []
-  call void @"??1sentry@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3 [ "funclet"(token %59) ]
-  cleanupret from %59 unwind to caller
-
-60:                                               ; preds = %57, %1
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1_Sentry_base@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::basic_ostream<char>::_Sentry_base", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %7 = getelementptr inbounds i8, ptr %6, i64 0
-  %8 = load ptr, ptr %7, align 8
-  %9 = getelementptr inbounds i32, ptr %8, i32 1
-  %10 = load i32, ptr %9, align 4
-  %11 = sext i32 %10 to i64
-  %12 = add nsw i64 0, %11
-  %13 = getelementptr inbounds i8, ptr %6, i64 %12
-  %14 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %13) #3
-  store ptr %14, ptr %3, align 8
-  %15 = load ptr, ptr %3, align 8
-  %16 = icmp ne ptr %15, null
-  br i1 %16, label %17, label %22
-
-17:                                               ; preds = %1
-  %18 = load ptr, ptr %3, align 8
-  %19 = load ptr, ptr %18, align 8
-  %20 = getelementptr inbounds ptr, ptr %19, i64 2
-  %21 = load ptr, ptr %20, align 8
-  call void %21(ptr noundef nonnull align 8 dereferenceable(104) %18)
-  br label %22
-
-22:                                               ; preds = %17, %1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?rdstate at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::ios_base", ptr %3, i32 0, i32 2
-  %5 = load i32, ptr %4, align 8
-  ret i32 %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #10 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = load ptr, ptr %3, align 8
-  %5 = getelementptr inbounds ptr, ptr %4, i64 13
-  %6 = load ptr, ptr %5, align 8
-  %7 = call noundef i32 %6(ptr noundef nonnull align 8 dereferenceable(104) %3)
-  ret i32 %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?_Pnavail@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEBA_JXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %5, align 8
-  %7 = icmp ne ptr %6, null
-  br i1 %7, label %8, label %12
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 12
-  %10 = load ptr, ptr %9, align 8
-  %11 = load i32, ptr %10, align 4
-  br label %13
-
-12:                                               ; preds = %1
-  br label %13
-
-13:                                               ; preds = %12, %8
-  %14 = phi i32 [ %11, %8 ], [ 0, %12 ]
-  %15 = sext i32 %14 to i64
-  ret i64 %15
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?to_int_type@?$_Narrow_char_traits at DH@std@@SAHD at Z"(i8 noundef %0) #0 comdat align 2 {
-  %2 = alloca i8, align 1
-  store i8 %0, ptr %2, align 1
-  %3 = load i8, ptr %2, align 1
-  %4 = zext i8 %3 to i32
-  ret i32 %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?_Pninc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@IEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(104) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 12
-  %5 = load ptr, ptr %4, align 8
-  %6 = load i32, ptr %5, align 4
-  %7 = add nsw i32 %6, -1
-  store i32 %7, ptr %5, align 4
-  %8 = getelementptr inbounds nuw %"class.std::basic_streambuf", ptr %3, i32 0, i32 8
-  %9 = load ptr, ptr %8, align 8
-  %10 = load ptr, ptr %9, align 8
-  %11 = getelementptr inbounds nuw i8, ptr %10, i32 1
-  store ptr %11, ptr %9, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?clear@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
-  %4 = alloca i8, align 1
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = zext i1 %2 to i8
-  store i8 %7, ptr %4, align 1
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i8, ptr %4, align 1
-  %10 = trunc i8 %9 to i1
-  %11 = load i32, ptr %5, align 4
-  %12 = getelementptr inbounds nuw %"class.std::basic_ios", ptr %8, i32 0, i32 1
-  %13 = load ptr, ptr %12, align 8
-  %14 = icmp ne ptr %13, null
-  %15 = zext i1 %14 to i64
-  %16 = select i1 %14, i32 0, i32 4
-  %17 = or i32 %11, %16
-  call void @"?clear at ios_base@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(72) %8, i32 noundef %17, i1 noundef zeroext %10)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?clear at ios_base@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(72) %0, i32 noundef %1, i1 noundef zeroext %2) #10 comdat align 2 {
-  %4 = alloca i8, align 1
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = alloca i32, align 4
-  %8 = alloca ptr, align 8
-  %9 = alloca %"class.std::ios_base::failure", align 8
-  %10 = alloca %"class.std::error_code", align 8
-  %11 = zext i1 %2 to i8
-  store i8 %11, ptr %4, align 1
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %12 = load ptr, ptr %6, align 8
-  %13 = load i32, ptr %5, align 4
-  %14 = and i32 %13, 23
-  store i32 %14, ptr %5, align 4
-  %15 = load i32, ptr %5, align 4
-  %16 = getelementptr inbounds nuw %"class.std::ios_base", ptr %12, i32 0, i32 2
-  store i32 %15, ptr %16, align 8
-  %17 = load i32, ptr %5, align 4
-  %18 = getelementptr inbounds nuw %"class.std::ios_base", ptr %12, i32 0, i32 3
-  %19 = load i32, ptr %18, align 4
-  %20 = and i32 %17, %19
-  store i32 %20, ptr %7, align 4
-  %21 = load i32, ptr %7, align 4
-  %22 = icmp ne i32 %21, 0
-  br i1 %22, label %23, label %42
-
-23:                                               ; preds = %3
-  %24 = load i8, ptr %4, align 1
-  %25 = trunc i8 %24 to i1
-  br i1 %25, label %26, label %27
-
-26:                                               ; preds = %23
-  call void @_CxxThrowException(ptr null, ptr null) #22
-  unreachable
-
-27:                                               ; preds = %23
-  %28 = load i32, ptr %7, align 4
-  %29 = and i32 %28, 4
-  %30 = icmp ne i32 %29, 0
-  br i1 %30, label %31, label %32
-
-31:                                               ; preds = %27
-  store ptr @"??_C at _0BF@PHHKMMFD at ios_base?3?3badbit?5set?$AA@", ptr %8, align 8
-  br label %39
-
-32:                                               ; preds = %27
-  %33 = load i32, ptr %7, align 4
-  %34 = and i32 %33, 2
-  %35 = icmp ne i32 %34, 0
-  br i1 %35, label %36, label %37
-
-36:                                               ; preds = %32
-  store ptr @"??_C at _0BG@FMKFHCIL at ios_base?3?3failbit?5set?$AA@", ptr %8, align 8
-  br label %38
-
-37:                                               ; preds = %32
-  store ptr @"??_C at _0BF@OOHOMBOF at ios_base?3?3eofbit?5set?$AA@", ptr %8, align 8
-  br label %38
-
-38:                                               ; preds = %37, %36
-  br label %39
-
-39:                                               ; preds = %38, %31
-  call void @"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z"(ptr dead_on_unwind writable sret(%"class.std::error_code") align 8 %10, i32 noundef 1) #3
-  %40 = load ptr, ptr %8, align 8
-  %41 = call noundef ptr @"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(16) %10)
-  call void @_CxxThrowException(ptr %9, ptr @"_TI5?AVfailure at ios_base@std@@") #22
-  unreachable
-
-42:                                               ; preds = %3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?make_error_code at std@@YA?AVerror_code at 1@W4io_errc at 1@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::error_code") align 8 %0, i32 noundef %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  store ptr %0, ptr %3, align 8
-  store i32 %1, ptr %4, align 4
-  %5 = call noundef nonnull align 8 dereferenceable(16) ptr @"?iostream_category at std@@YAAEBVerror_category at 1@XZ"() #3
-  %6 = load i32, ptr %4, align 4
-  %7 = call noundef ptr @"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %6, ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0failure at ios_base@std@@QEAA at PEBDAEBVerror_code@2@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"class.std::error_code", align 8
-  store ptr %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load ptr, ptr %5, align 8
-  %10 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %10, i64 16, i1 false)
-  %11 = call noundef ptr @"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z"(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %7, ptr noundef %9)
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %14
-
-12:                                               ; preds = %3
-  store ptr @"??_7failure at ios_base@std@@6B@", ptr %8, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %13 unwind label %14
-
-13:                                               ; preds = %12
-  ret ptr %8
-
-14:                                               ; preds = %12, %3
-  %15 = cleanuppad within none []
-  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %8) #3 [ "funclet"(token %15) ]
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0failure at ios_base@std@@QEAA at AEBV012@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0system_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7failure at ios_base@std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0system_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0_System_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7system_error at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_System_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(40) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0runtime_error at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %13
-
-8:                                                ; preds = %2
-  store ptr @"??_7_System_error at std@@6B@", ptr %5, align 8
-  %9 = getelementptr inbounds nuw %"class.std::_System_error", ptr %5, i32 0, i32 1
-  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %11 = getelementptr inbounds nuw %"class.std::_System_error", ptr %10, i32 0, i32 1
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %11, i64 16, i1 false)
-  invoke void @llvm.seh.scope.end()
-          to label %12 unwind label %13
-
-12:                                               ; preds = %8
-  ret ptr %5
-
-13:                                               ; preds = %8, %2
-  %14 = cleanuppad within none []
-  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %14) ]
-  cleanupret from %14 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1failure at ios_base@std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?iostream_category at std@@YAAEBVerror_category at 1@XZ"() #0 comdat {
-  %1 = call noundef nonnull align 8 dereferenceable(16) ptr @"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ"() #3
-  ret ptr %1
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0error_code at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  store ptr %2, ptr %4, align 8
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = getelementptr inbounds nuw %"class.std::error_code", ptr %7, i32 0, i32 0
-  %9 = load i32, ptr %5, align 4
-  store i32 %9, ptr %8, align 8
-  %10 = getelementptr inbounds nuw %"class.std::error_code", ptr %7, i32 0, i32 1
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr %11, ptr %10, align 8
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"??$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 0@XZ"() #0 comdat {
-  ret ptr @"?_Static@?1???$_Immortalize_memcpy_image at V_Iostream_error_category2@std@@@std@@YAAEBV_Iostream_error_category2 at 1@XZ at 4V21@B"
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_G_Iostream_error_category2 at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1_Iostream_error_category2 at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 16) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 16) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?name at _Iostream_error_category2@std@@UEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr @"??_C at _08LLGCOLLL@iostream?$AA@"
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at H@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %1, i32 noundef %2) unnamed_addr #10 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = alloca i64, align 8
-  store ptr %1, ptr %4, align 8
-  store i32 %2, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load i32, ptr %5, align 4
-  %10 = icmp eq i32 %9, 1
-  br i1 %10, label %11, label %13
-
-11:                                               ; preds = %3
-  store i64 21, ptr %7, align 8
-  %12 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef @"?_Iostream_error@?4??message at _Iostream_error_category2@std@@UEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@3 at H@Z at 4QBDB", i64 noundef 21)
-  br label %17
-
-13:                                               ; preds = %3
-  %14 = load i32, ptr %5, align 4
-  %15 = call noundef ptr @"?_Syserror_map at std@@YAPEBDH at Z"(i32 noundef %14)
-  %16 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef %15)
-  br label %17
-
-17:                                               ; preds = %13, %11
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?default_error_condition at error_category@std@@UEBA?AVerror_condition at 2@H at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::error_condition") align 8 %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %4, align 8
-  store i32 %2, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i32, ptr %5, align 4
-  %9 = call noundef ptr @"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %8, ptr noundef nonnull align 8 dereferenceable(16) %7) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?equivalent at error_category@std@@UEBA_NAEBVerror_code at 2@H at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i32 %2, ptr %4, align 4
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %9 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %8) #3
-  %10 = call noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %9) #3
-  br i1 %10, label %11, label %16
-
-11:                                               ; preds = %3
-  %12 = load ptr, ptr %5, align 8, !nonnull !16, !align !17
-  %13 = call noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %12) #3
-  %14 = load i32, ptr %4, align 4
-  %15 = icmp eq i32 %13, %14
-  br label %16
-
-16:                                               ; preds = %11, %3
-  %17 = phi i1 [ false, %3 ], [ %15, %11 ]
-  ret i1 %17
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?equivalent at error_category@std@@UEBA_NHAEBVerror_condition at 2@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  %7 = alloca %"class.std::error_condition", align 8
-  store ptr %2, ptr %4, align 8
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %10 = load i32, ptr %5, align 4
-  %11 = load ptr, ptr %8, align 8
-  %12 = getelementptr inbounds ptr, ptr %11, i64 3
-  %13 = load ptr, ptr %12, align 8
-  call void %13(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr dead_on_unwind writable sret(%"class.std::error_condition") align 8 %7, i32 noundef %10) #3
-  %14 = call noundef zeroext i1 @"??8std@@YA_NAEBVerror_condition at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %9) #3
-  ret i1 %14
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1_Iostream_error_category2 at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1error_category at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD_K@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = getelementptr inbounds nuw %"class.std::basic_string", ptr %8, i32 0, i32 0
-  %10 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %7, i32 0, i32 0
-  %11 = load i8, ptr %10, align 1
-  %12 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 %11) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %13 unwind label %18
-
-13:                                               ; preds = %3
-  %14 = load i64, ptr %4, align 8
-  %15 = load ptr, ptr %5, align 8
-  invoke void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %15, i64 noundef %14)
-          to label %16 unwind label %18
-
-16:                                               ; preds = %13
-  invoke void @llvm.seh.scope.end()
-          to label %17 unwind label %18
-
-17:                                               ; preds = %16
-  ret ptr %8
-
-18:                                               ; preds = %16, %13, %3
-  %19 = cleanuppad within none []
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind to caller
-}
-
-declare dso_local noundef ptr @"?_Syserror_map at std@@YAPEBDH at Z"(i32 noundef) #14
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
-  %8 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %5, i32 0, i32 0
-  %9 = load i8, ptr %8, align 1
-  %10 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 %9) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %11 unwind label %18
-
-11:                                               ; preds = %2
-  %12 = load ptr, ptr %3, align 8
-  %13 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %12) #3
-  %14 = call noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %13) #3
-  %15 = load ptr, ptr %3, align 8
-  invoke void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %15, i64 noundef %14)
-          to label %16 unwind label %18
-
-16:                                               ; preds = %11
-  invoke void @llvm.seh.scope.end()
-          to label %17 unwind label %18
-
-17:                                               ; preds = %16
-  ret ptr %6
-
-18:                                               ; preds = %16, %11, %2
-  %19 = cleanuppad within none []
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, i8 %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
-  store i8 %1, ptr %5, align 1
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = call noundef ptr @"??0?$allocator at D@std@@QEAA at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #3
-  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %6, i32 0, i32 0
-  %9 = call noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %10 unwind label %12
-
-10:                                               ; preds = %2
-  invoke void @llvm.seh.scope.end()
-          to label %11 unwind label %12
-
-11:                                               ; preds = %10
-  ret ptr %6
-
-12:                                               ; preds = %10, %2
-  %13 = cleanuppad within none []
-  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %13) ]
-  cleanupret from %13 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Construct@$00PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca ptr, align 8
-  %9 = alloca ptr, align 8
-  %10 = alloca %"struct.std::_Fake_proxy_ptr_impl", align 1
-  %11 = alloca i8, align 1
-  %12 = alloca i64, align 8
-  %13 = alloca ptr, align 8
-  %14 = alloca i8, align 1
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %15 = load ptr, ptr %6, align 8
-  %16 = getelementptr inbounds nuw %"class.std::basic_string", ptr %15, i32 0, i32 0
-  %17 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %16, i32 0, i32 0
-  store ptr %17, ptr %7, align 8
-  %18 = load i64, ptr %4, align 8
-  %19 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %15) #3
-  %20 = icmp ugt i64 %18, %19
-  br i1 %20, label %21, label %22
-
-21:                                               ; preds = %3
-  call void @"?_Xlen_string at std@@YAXXZ"() #22
-  unreachable
-
-22:                                               ; preds = %3
-  %23 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %15) #3
-  store ptr %23, ptr %8, align 8
-  store ptr @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr %9, align 8
-  %24 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %25 = call noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr noundef nonnull align 1 dereferenceable(1) %24) #3
-  %26 = load i64, ptr %4, align 8
-  %27 = icmp ule i64 %26, 15
-  br i1 %27, label %28, label %44
-
-28:                                               ; preds = %22
-  %29 = load i64, ptr %4, align 8
-  %30 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 1
-  store i64 %29, ptr %31, align 8
-  %32 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %33 = getelementptr inbounds nuw %"class.std::_String_val", ptr %32, i32 0, i32 2
-  store i64 15, ptr %33, align 8
-  %34 = load i64, ptr %4, align 8
-  %35 = load ptr, ptr %5, align 8
-  %36 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %37 = getelementptr inbounds nuw %"class.std::_String_val", ptr %36, i32 0, i32 0
-  %38 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
-  %39 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %38, ptr noundef %35, i64 noundef %34) #3
-  store i8 0, ptr %11, align 1
-  %40 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %41 = getelementptr inbounds nuw %"class.std::_String_val", ptr %40, i32 0, i32 0
-  %42 = load i64, ptr %4, align 8
-  %43 = getelementptr inbounds nuw [16 x i8], ptr %41, i64 0, i64 %42
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef nonnull align 1 dereferenceable(1) %11) #3
-  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br label %68
-
-44:                                               ; preds = %22
-  %45 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %46 = getelementptr inbounds nuw %"class.std::_String_val", ptr %45, i32 0, i32 2
-  store i64 15, ptr %46, align 8
-  %47 = load i64, ptr %4, align 8
-  %48 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %15, i64 noundef %47) #3
-  store i64 %48, ptr %12, align 8
-  %49 = load ptr, ptr %8, align 8, !nonnull !16
-  %50 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %49, ptr noundef nonnull align 8 dereferenceable(8) %12)
-  store ptr %50, ptr %13, align 8
-  %51 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %52 = getelementptr inbounds nuw %"class.std::_String_val", ptr %51, i32 0, i32 0
-  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %13) #3
-  %53 = load i64, ptr %4, align 8
-  %54 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %55 = getelementptr inbounds nuw %"class.std::_String_val", ptr %54, i32 0, i32 1
-  store i64 %53, ptr %55, align 8
-  %56 = load i64, ptr %12, align 8
-  %57 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %58 = getelementptr inbounds nuw %"class.std::_String_val", ptr %57, i32 0, i32 2
-  store i64 %56, ptr %58, align 8
-  %59 = load i64, ptr %4, align 8
-  %60 = load ptr, ptr %5, align 8
-  %61 = load ptr, ptr %13, align 8
-  %62 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %61) #3
-  %63 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %62, ptr noundef %60, i64 noundef %59) #3
-  store i8 0, ptr %14, align 1
-  %64 = load ptr, ptr %13, align 8
-  %65 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %64) #3
-  %66 = load i64, ptr %4, align 8
-  %67 = getelementptr inbounds nuw i8, ptr %65, i64 %66
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %67, ptr noundef nonnull align 1 dereferenceable(1) %14) #3
-  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br label %68
-
-68:                                               ; preds = %44, %28
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %7
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %7
-
-5:                                                ; preds = %4
-  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %3, i32 0, i32 0
-  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
-  ret void
-
-7:                                                ; preds = %4, %1
-  %8 = cleanuppad within none []
-  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %3, i32 0, i32 0
-  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %8) ]
-  cleanupret from %8 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$allocator at D@std@@QEAA at XZ"(ptr noundef nonnull returned align 1 dereferenceable(1) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
-  %5 = call noundef ptr @"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %6 unwind label %10
-
-6:                                                ; preds = %1
-  %7 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 1
-  store i64 0, ptr %7, align 8
-  %8 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 2
-  store i64 0, ptr %8, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %6
-  ret ptr %3
-
-10:                                               ; preds = %6, %1
-  %11 = cleanuppad within none []
-  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %4) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %7
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %7
-
-5:                                                ; preds = %4
-  %6 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
-  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %6) #3
-  ret void
-
-7:                                                ; preds = %4, %1
-  %8 = cleanuppad within none []
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 0
-  call void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %9) #3 [ "funclet"(token %8) ]
-  cleanupret from %8 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  call void @llvm.memset.p0.i64(ptr align 8 %3, i8 0, i64 16, i1 false)
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1_Bxty@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca i64, align 8
-  %4 = alloca i64, align 8
-  %5 = alloca i64, align 8
-  %6 = alloca i64, align 8
-  %7 = alloca i64, align 8
-  store ptr %0, ptr %2, align 8
-  %8 = load ptr, ptr %2, align 8
-  %9 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
-  %10 = call noundef i64 @"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %9) #3
-  store i64 %10, ptr %3, align 8
-  store i64 16, ptr %5, align 8
-  %11 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #3
-  %12 = load i64, ptr %11, align 8
-  store i64 %12, ptr %4, align 8
-  %13 = load i64, ptr %4, align 8
-  %14 = sub i64 %13, 1
-  store i64 %14, ptr %6, align 8
-  %15 = call noundef i64 @"?max@?$numeric_limits at _J@std@@SA_JXZ"() #3
-  store i64 %15, ptr %7, align 8
-  %16 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$min at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %6) #3
-  %17 = load i64, ptr %16, align 8
-  ret i64 %17
-}
-
-; Function Attrs: mustprogress noinline noreturn optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Xlen_string at std@@YAXXZ"() #20 comdat {
-  call void @"?_Xlength_error at std@@YAXPEBD at Z"(ptr noundef @"??_C at _0BA@JFNIOLAK at string?5too?5long?$AA@") #22
-  unreachable
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull returned align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load ptr, ptr %5, align 8
-  %9 = load i64, ptr %4, align 8
-  %10 = mul i64 %9, 1
-  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %7, ptr align 1 %8, i64 %10, i1 false)
-  %11 = load ptr, ptr %6, align 8
-  ret ptr %11
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %3, align 8, !nonnull !16
-  %6 = load i8, ptr %5, align 1
-  %7 = load ptr, ptr %4, align 8, !nonnull !16
-  store i8 %6, ptr %7, align 1
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %1) #0 comdat align 2 {
-  %3 = alloca i64, align 8
-  %4 = alloca ptr, align 8
-  store i64 %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
-  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %5, i32 0, i32 0
-  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %7, i32 0, i32 0
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 2
-  %10 = load i64, ptr %9, align 8
-  %11 = load i64, ptr %3, align 8
-  %12 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z"(i64 noundef %11, i64 noundef %10, i64 noundef %6) #3
-  ret i64 %12
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = load i64, ptr %6, align 8
-  %8 = add i64 %7, 1
-  store i64 %8, ptr %6, align 8
-  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %10 = load ptr, ptr %4, align 8, !nonnull !16
-  %11 = call noundef ptr @"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 8 dereferenceable(8) %9)
-  store ptr %11, ptr %5, align 8
-  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %13 = load i64, ptr %12, align 8
-  %14 = add i64 %13, -1
-  store i64 %14, ptr %12, align 8
-  %15 = load ptr, ptr %5, align 8
-  ret ptr %15
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?max_size@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA_KAEBV?$allocator at D@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  ret i64 -1
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %6 = load i64, ptr %5, align 8
-  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %8 = load i64, ptr %7, align 8
-  %9 = icmp ult i64 %6, %8
-  br i1 %9, label %10, label %12
-
-10:                                               ; preds = %2
-  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  br label %14
-
-12:                                               ; preds = %2
-  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  br label %14
-
-14:                                               ; preds = %12, %10
-  %15 = phi ptr [ %11, %10 ], [ %13, %12 ]
-  ret ptr %15
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @"??$min at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %6 = load i64, ptr %5, align 8
-  %7 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %8 = load i64, ptr %7, align 8
-  %9 = icmp ult i64 %6, %8
-  br i1 %9, label %10, label %12
-
-10:                                               ; preds = %2
-  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  br label %14
-
-12:                                               ; preds = %2
-  %13 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  br label %14
-
-14:                                               ; preds = %12, %10
-  %15 = phi ptr [ %11, %10 ], [ %13, %12 ]
-  ret ptr %15
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?max@?$numeric_limits at _J@std@@SA_JXZ"() #0 comdat align 2 {
-  ret i64 9223372036854775807
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: noreturn
-declare dso_local void @"?_Xlength_error at std@@YAXPEBD at Z"(ptr noundef) #17
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CA_K_K00 at Z"(i64 noundef %0, i64 noundef %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca i64, align 8
-  %6 = alloca i64, align 8
-  %7 = alloca i64, align 8
-  %8 = alloca i64, align 8
-  %9 = alloca i64, align 8
-  store i64 %2, ptr %5, align 8
-  store i64 %1, ptr %6, align 8
-  store i64 %0, ptr %7, align 8
-  %10 = load i64, ptr %7, align 8
-  %11 = or i64 %10, 15
-  store i64 %11, ptr %8, align 8
-  %12 = load i64, ptr %8, align 8
-  %13 = load i64, ptr %5, align 8
-  %14 = icmp ugt i64 %12, %13
-  br i1 %14, label %15, label %17
-
-15:                                               ; preds = %3
-  %16 = load i64, ptr %5, align 8
-  store i64 %16, ptr %4, align 8
-  br label %33
-
-17:                                               ; preds = %3
-  %18 = load i64, ptr %6, align 8
-  %19 = load i64, ptr %5, align 8
-  %20 = load i64, ptr %6, align 8
-  %21 = udiv i64 %20, 2
-  %22 = sub i64 %19, %21
-  %23 = icmp ugt i64 %18, %22
-  br i1 %23, label %24, label %26
-
-24:                                               ; preds = %17
-  %25 = load i64, ptr %5, align 8
-  store i64 %25, ptr %4, align 8
-  br label %33
-
-26:                                               ; preds = %17
-  %27 = load i64, ptr %6, align 8
-  %28 = load i64, ptr %6, align 8
-  %29 = udiv i64 %28, 2
-  %30 = add i64 %27, %29
-  store i64 %30, ptr %9, align 8
-  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @"??$max at _K@std@@YAAEB_KAEB_K0 at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #3
-  %32 = load i64, ptr %31, align 8
-  store i64 %32, ptr %4, align 8
-  br label %33
-
-33:                                               ; preds = %26, %24, %15
-  %34 = load i64, ptr %4, align 8
-  ret i64 %34
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Allocate_at_least_helper at V?$allocator at D@std@@@std@@YAPEADAEAV?$allocator at D@0 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8, !nonnull !16
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = load i64, ptr %6, align 8
-  %8 = call noundef ptr @"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %5, i64 noundef %7)
-  ret ptr %8
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?allocate@?$allocator at D@std@@QEAAPEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1) #10 comdat align 2 {
-  %3 = alloca i64, align 8
-  %4 = alloca ptr, align 8
-  store i64 %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load i64, ptr %3, align 8
-  %7 = call noundef i64 @"??$_Get_size_of_n@$00 at std@@YA_K_K at Z"(i64 noundef %6)
-  %8 = call noundef ptr @"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z"(i64 noundef %7)
-  ret ptr %8
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Allocate@$0BA at U_Default_allocate_traits@std@@$0A@@std@@YAPEAX_K at Z"(i64 noundef %0) #10 comdat {
-  %2 = alloca ptr, align 8
-  %3 = alloca i64, align 8
-  store i64 %0, ptr %3, align 8
-  %4 = load i64, ptr %3, align 8
-  %5 = icmp uge i64 %4, 4096
-  br i1 %5, label %6, label %9
-
-6:                                                ; preds = %1
-  %7 = load i64, ptr %3, align 8
-  %8 = call noundef ptr @"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z"(i64 noundef %7)
-  store ptr %8, ptr %2, align 8
-  br label %16
-
-9:                                                ; preds = %1
-  %10 = load i64, ptr %3, align 8
-  %11 = icmp ne i64 %10, 0
-  br i1 %11, label %12, label %15
-
-12:                                               ; preds = %9
-  %13 = load i64, ptr %3, align 8
-  %14 = call noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %13)
-  store ptr %14, ptr %2, align 8
-  br label %16
-
-15:                                               ; preds = %9
-  store ptr null, ptr %2, align 8
-  br label %16
-
-16:                                               ; preds = %15, %12, %6
-  %17 = load ptr, ptr %2, align 8
-  ret ptr %17
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"??$_Get_size_of_n@$00 at std@@YA_K_K at Z"(i64 noundef %0) #0 comdat {
-  %2 = alloca i64, align 8
-  %3 = alloca i8, align 1
-  store i64 %0, ptr %2, align 8
-  store i8 0, ptr %3, align 1
-  %4 = load i64, ptr %2, align 8
-  %5 = mul i64 %4, 1
-  ret i64 %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_Allocate_manually_vector_aligned at U_Default_allocate_traits@std@@@std@@YAPEAX_K at Z"(i64 noundef %0) #10 comdat {
-  %2 = alloca i64, align 8
-  %3 = alloca i64, align 8
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  store i64 %0, ptr %2, align 8
-  %6 = load i64, ptr %2, align 8
-  %7 = add i64 39, %6
-  store i64 %7, ptr %3, align 8
-  %8 = load i64, ptr %3, align 8
-  %9 = load i64, ptr %2, align 8
-  %10 = icmp ule i64 %8, %9
-  br i1 %10, label %11, label %12
-
-11:                                               ; preds = %1
-  call void @"?_Throw_bad_array_new_length at std@@YAXXZ"() #22
-  unreachable
-
-12:                                               ; preds = %1
-  %13 = load i64, ptr %3, align 8
-  %14 = call noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %13)
-  %15 = ptrtoint ptr %14 to i64
-  store i64 %15, ptr %4, align 8
-  br label %16
-
-16:                                               ; preds = %12
-  %17 = load i64, ptr %4, align 8
-  %18 = icmp ne i64 %17, 0
-  br i1 %18, label %19, label %20
-
-19:                                               ; preds = %16
-  br label %23
-
-20:                                               ; preds = %16
-  br label %21
-
-21:                                               ; preds = %20
-  call void @_invalid_parameter_noinfo_noreturn() #22
-  unreachable
-
-22:                                               ; No predecessors!
-  br label %23
-
-23:                                               ; preds = %22, %19
-  br label %24
-
-24:                                               ; preds = %23
-  %25 = load i64, ptr %4, align 8
-  %26 = add i64 %25, 39
-  %27 = and i64 %26, -32
-  %28 = inttoptr i64 %27 to ptr
-  store ptr %28, ptr %5, align 8
-  %29 = load i64, ptr %4, align 8
-  %30 = load ptr, ptr %5, align 8
-  %31 = getelementptr inbounds i64, ptr %30, i64 -1
-  store i64 %29, ptr %31, align 8
-  %32 = load ptr, ptr %5, align 8
-  ret ptr %32
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?_Allocate at _Default_allocate_traits@std@@SAPEAX_K at Z"(i64 noundef %0) #10 comdat align 2 {
-  %2 = alloca i64, align 8
-  store i64 %0, ptr %2, align 8
-  %3 = load i64, ptr %2, align 8
-  %4 = call noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %3) #21
-  ret ptr %4
-}
-
-; Function Attrs: mustprogress noinline noreturn optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Throw_bad_array_new_length at std@@YAXXZ"() #20 comdat {
-  %1 = alloca %"class.std::bad_array_new_length", align 8
-  %2 = call noundef ptr @"??0bad_array_new_length at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %1) #3
-  call void @_CxxThrowException(ptr %1, ptr @"_TI3?AVbad_array_new_length at std@@") #22
-  unreachable
-}
-
-; Function Attrs: noreturn
-declare dso_local void @_invalid_parameter_noinfo_noreturn() #17
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0bad_array_new_length at std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = call noundef ptr @"??0bad_alloc at std@@AEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef @"??_C at _0BF@KINCDENJ at bad?5array?5new?5length?$AA@") #3
-  invoke void @llvm.seh.scope.begin()
-          to label %5 unwind label %7
-
-5:                                                ; preds = %1
-  store ptr @"??_7bad_array_new_length at std@@6B@", ptr %3, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %6 unwind label %7
-
-6:                                                ; preds = %5
-  ret ptr %3
-
-7:                                                ; preds = %5, %1
-  %8 = cleanuppad within none []
-  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %8) ]
-  cleanupret from %8 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0bad_array_new_length at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7bad_array_new_length at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0bad_alloc at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"??0exception at std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7bad_alloc at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1bad_array_new_length at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0bad_alloc at std@@AEAA at QEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = call noundef ptr @"??0exception at std@@QEAA at QEBDH@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %6, i32 noundef 1) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %10
-
-8:                                                ; preds = %2
-  store ptr @"??_7bad_alloc at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %10
-
-9:                                                ; preds = %8
-  ret ptr %5
-
-10:                                               ; preds = %8, %2
-  %11 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gbad_array_new_length at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1bad_array_new_length at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0exception at std@@QEAA at QEBDH@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef %1, i32 noundef %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i32 %2, ptr %4, align 4
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  store ptr @"??_7exception at std@@6B@", ptr %7, align 8
-  %8 = getelementptr inbounds nuw %"class.std::exception", ptr %7, i32 0, i32 1
-  call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 16, i1 false)
-  %9 = load ptr, ptr %5, align 8
-  %10 = getelementptr inbounds nuw %"class.std::exception", ptr %7, i32 0, i32 1
-  %11 = getelementptr inbounds nuw %struct.__std_exception_data, ptr %10, i32 0, i32 0
-  store ptr %9, ptr %11, align 8
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gbad_alloc at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(24) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1bad_alloc at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 24) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %0) #0 comdat {
-  %2 = alloca i64, align 8
-  store i64 %0, ptr %2, align 8
-  %3 = load i64, ptr %2, align 8
-  ret i64 %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0error_condition at std@@QEAA at HAEBVerror_category@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(16) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) unnamed_addr #0 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  %6 = alloca ptr, align 8
-  store ptr %2, ptr %4, align 8
-  store i32 %1, ptr %5, align 4
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = getelementptr inbounds nuw %"class.std::error_condition", ptr %7, i32 0, i32 0
-  %9 = load i32, ptr %5, align 4
-  store i32 %9, ptr %8, align 8
-  %10 = getelementptr inbounds nuw %"class.std::error_condition", ptr %7, i32 0, i32 1
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr %11, ptr %10, align 8
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"class.std::error_category", ptr %5, i32 0, i32 1
-  %7 = call noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6) #3
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = getelementptr inbounds nuw %"class.std::error_category", ptr %8, i32 0, i32 1
-  %10 = call noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %9) #3
-  %11 = icmp eq i64 %7, %10
-  ret i1 %11
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::error_code", ptr %3, i32 0, i32 1
-  %5 = load ptr, ptr %4, align 8
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::error_code", ptr %3, i32 0, i32 0
-  %5 = load i32, ptr %4, align 8
-  ret i32 %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i64 @"??$_Bit_cast at _KT_Addr_storage@error_category at std@@$0A@@std@@YA_KAEBT_Addr_storage at error_category@0@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  %4 = load i64, ptr %3, align 8
-  ret i64 %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"??8std@@YA_NAEBVerror_condition at 0@0 at Z"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %6 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  %7 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %8 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %7) #3
-  %9 = call noundef zeroext i1 @"??8error_category at std@@QEBA_NAEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %8) #3
-  br i1 %9, label %10, label %16
-
-10:                                               ; preds = %2
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %12 = call noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %11) #3
-  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %14 = call noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %13) #3
-  %15 = icmp eq i32 %12, %14
-  br label %16
-
-16:                                               ; preds = %10, %2
-  %17 = phi i1 [ false, %2 ], [ %15, %10 ]
-  ret i1 %17
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_condition@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::error_condition", ptr %3, i32 0, i32 1
-  %5 = load ptr, ptr %4, align 8
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef i32 @"?value at error_condition@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::error_condition", ptr %3, i32 0, i32 0
-  %5 = load i32, ptr %4, align 8
-  ret i32 %5
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0system_error at std@@QEAA at Verror_code@1 at PEBD@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"class.std::basic_string", align 8
-  %8 = alloca %"class.std::error_code", align 8
-  store ptr %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %9 = load ptr, ptr %6, align 8
-  %10 = load ptr, ptr %4, align 8
-  %11 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %10)
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %18
-
-12:                                               ; preds = %3
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %8, ptr align 8 %1, i64 16, i1 false)
-  %13 = invoke noundef ptr @"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %8, ptr noundef nonnull align 8 dereferenceable(32) %7)
-          to label %14 unwind label %18
-
-14:                                               ; preds = %12
-  invoke void @llvm.seh.scope.end()
-          to label %15 unwind label %18
-
-15:                                               ; preds = %14
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %16 unwind label %20
-
-16:                                               ; preds = %15
-  store ptr @"??_7system_error at std@@6B@", ptr %9, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %17 unwind label %20
-
-17:                                               ; preds = %16
-  ret ptr %9
-
-18:                                               ; preds = %14, %12, %3
-  %19 = cleanuppad within none []
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind to caller
-
-20:                                               ; preds = %16, %15
-  %21 = cleanuppad within none []
-  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %9) #3 [ "funclet"(token %21) ]
-  cleanupret from %21 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gfailure at ios_base@std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1failure at ios_base@std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0_System_error at std@@IEAA at Verror_code@1 at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"class.std::basic_string", align 8
-  %8 = alloca %"class.std::basic_string", align 8
-  %9 = alloca %"class.std::error_code", align 8
-  store ptr %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %10 = load ptr, ptr %6, align 8
-  %11 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %12 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %11)
-  invoke void @llvm.seh.scope.begin()
-          to label %13 unwind label %22
-
-13:                                               ; preds = %3
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %1, i64 16, i1 false)
-  invoke void @llvm.seh.scope.end()
-          to label %14 unwind label %22
-
-14:                                               ; preds = %13
-  call void @"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z"(ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %7, ptr noundef %9, ptr noundef %8)
-  invoke void @llvm.seh.scope.begin()
-          to label %15 unwind label %24
-
-15:                                               ; preds = %14
-  %16 = invoke noundef ptr @"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(32) %7)
-          to label %17 unwind label %24
-
-17:                                               ; preds = %15
-  invoke void @llvm.seh.scope.end()
-          to label %18 unwind label %24
-
-18:                                               ; preds = %17
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %19 unwind label %26
-
-19:                                               ; preds = %18
-  store ptr @"??_7_System_error at std@@6B@", ptr %10, align 8
-  %20 = getelementptr inbounds nuw %"class.std::_System_error", ptr %10, i32 0, i32 1
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %1, i64 16, i1 false)
-  invoke void @llvm.seh.scope.end()
-          to label %21 unwind label %26
-
-21:                                               ; preds = %19
-  ret ptr %10
-
-22:                                               ; preds = %13, %3
-  %23 = cleanuppad within none []
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %23) ]
-  cleanupret from %23 unwind to caller
-
-24:                                               ; preds = %17, %15, %14
-  %25 = cleanuppad within none []
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %25) ]
-  cleanupret from %25 unwind to caller
-
-26:                                               ; preds = %19, %18
-  %27 = cleanuppad within none []
-  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %10) #3 [ "funclet"(token %27) ]
-  cleanupret from %27 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %7
-
-4:                                                ; preds = %1
-  call void @"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %3) #3
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %7
-
-5:                                                ; preds = %4
-  %6 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
-  ret void
-
-7:                                                ; preds = %4, %1
-  %8 = cleanuppad within none []
-  %9 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3 [ "funclet"(token %8) ]
-  cleanupret from %8 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %6
-
-4:                                                ; preds = %1
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %6
-
-5:                                                ; preds = %4
-  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3
-  ret void
-
-6:                                                ; preds = %4, %1
-  %7 = cleanuppad within none []
-  call void @"??1runtime_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %3) #3 [ "funclet"(token %7) ]
-  cleanupret from %7 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_Gsystem_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1system_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Makestr at _System_error@std@@CA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at Verror_code@2 at V32@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %0, ptr noundef %1, ptr noundef %2) #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca %"class.std::basic_string", align 8
-  store ptr %0, ptr %4, align 8
-  store ptr %2, ptr %5, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %24
-
-8:                                                ; preds = %3
-  store ptr %1, ptr %6, align 8
-  %9 = call noundef zeroext i1 @"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3
-  br i1 %9, label %13, label %10
-
-10:                                               ; preds = %8
-  %11 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @"??_C at _02LMMGGCAJ@?3?5?$AA@")
-          to label %12 unwind label %24
-
-12:                                               ; preds = %10
-  br label %13
-
-13:                                               ; preds = %12, %8
-  invoke void @"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %7)
-          to label %14 unwind label %24
-
-14:                                               ; preds = %13
-  invoke void @llvm.seh.scope.begin()
-          to label %15 unwind label %20
-
-15:                                               ; preds = %14
-  %16 = invoke noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %7)
-          to label %17 unwind label %20
-
-17:                                               ; preds = %15
-  invoke void @llvm.seh.scope.end()
-          to label %18 unwind label %20
-
-18:                                               ; preds = %17
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
-  %19 = call noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %2) #3
-  invoke void @llvm.seh.scope.end()
-          to label %23 unwind label %24
-
-20:                                               ; preds = %17, %15, %14
-  %21 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %21) ]
-          to label %22 unwind label %24
-
-22:                                               ; preds = %20
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %21) ]
-  cleanupret from %21 unwind label %24
-
-23:                                               ; preds = %18
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3
-  ret void
-
-24:                                               ; preds = %18, %22, %20, %13, %10, %3
-  %25 = cleanuppad within none []
-  call void @"??1?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %2) #3 [ "funclet"(token %25) ]
-  cleanupret from %25 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at AEBV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"class.std::allocator", align 1
-  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
-  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBAAEBV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %9) #3
-  call void @"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z"(ptr dead_on_unwind writable sret(%"class.std::allocator") align 1 %5, ptr noundef nonnull align 1 dereferenceable(1) %10)
-  %11 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
-  %12 = load i8, ptr %11, align 1
-  %13 = call noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 %12, ptr noundef nonnull align 1 dereferenceable(1) %5) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %14 unwind label %26
-
-14:                                               ; preds = %2
-  %15 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %16 = getelementptr inbounds nuw %"class.std::basic_string", ptr %15, i32 0, i32 0
-  %17 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %16, i32 0, i32 0
-  %18 = getelementptr inbounds nuw %"class.std::_String_val", ptr %17, i32 0, i32 1
-  %19 = load i64, ptr %18, align 8
-  %20 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %21 = getelementptr inbounds nuw %"class.std::basic_string", ptr %20, i32 0, i32 0
-  %22 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %21, i32 0, i32 0
-  %23 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %22) #3
-  invoke void @"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %23, i64 noundef %19)
-          to label %24 unwind label %26
-
-24:                                               ; preds = %14
-  invoke void @llvm.seh.scope.end()
-          to label %25 unwind label %26
-
-25:                                               ; preds = %24
-  ret ptr %7
-
-26:                                               ; preds = %24, %14, %2
-  %27 = cleanuppad within none []
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3 [ "funclet"(token %27) ]
-  cleanupret from %27 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0runtime_error at std@@QEAA at AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #10 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = call noundef ptr @"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %6) #3
-  %8 = call noundef ptr @"??0exception at std@@QEAA at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef %7) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %11
-
-9:                                                ; preds = %2
-  store ptr @"??_7runtime_error at std@@6B@", ptr %5, align 8
-  invoke void @llvm.seh.scope.end()
-          to label %10 unwind label %11
-
-10:                                               ; preds = %9
-  ret ptr %5
-
-11:                                               ; preds = %9, %2
-  %12 = cleanuppad within none []
-  call void @"??1exception at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(24) %5) #3 [ "funclet"(token %12) ]
-  cleanupret from %12 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??_G_System_error at std@@UEAAPEAXI at Z"(ptr noundef nonnull align 8 dereferenceable(40) %0, i32 noundef %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca i32, align 4
-  %5 = alloca ptr, align 8
-  store i32 %1, ptr %4, align 4
-  store ptr %0, ptr %5, align 8
-  %6 = load ptr, ptr %5, align 8
-  store ptr %6, ptr %3, align 8
-  %7 = load i32, ptr %4, align 4
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %14
-
-8:                                                ; preds = %2
-  call void @"??1_System_error at std@@UEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(40) %6) #3
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = icmp eq i32 %7, 0
-  br i1 %10, label %12, label %11
-
-11:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23
-  br label %12
-
-12:                                               ; preds = %11, %9
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-
-14:                                               ; preds = %8, %2
-  %15 = cleanuppad within none []
-  %16 = icmp eq i32 %7, 0
-  br i1 %16, label %18, label %17
-
-17:                                               ; preds = %14
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 40) #23 [ "funclet"(token %15) ]
-  br label %18
-
-18:                                               ; preds = %17, %14
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?empty@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"class.std::_String_val", ptr %5, i32 0, i32 1
-  %7 = load i64, ptr %6, align 8
-  %8 = icmp eq i64 %7, 0
-  ret i1 %8
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1) #10 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = call noundef i64 @"?length@?$_Narrow_char_traits at DH@std@@SA_KQEBD at Z"(ptr noundef %6) #3
-  %8 = call noundef i64 @"??$_Convert_size at _K_K@std@@YA_K_K at Z"(i64 noundef %7) #3
-  %9 = load ptr, ptr %3, align 8
-  %10 = call noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %9, i64 noundef %8)
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #10 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
-  %8 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %7, i32 0, i32 0
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 1
-  %10 = load i64, ptr %9, align 8
-  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds nuw %"class.std::basic_string", ptr %11, i32 0, i32 0
-  %13 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %12, i32 0, i32 0
-  %14 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
-  %15 = call noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %14, i64 noundef %10)
-  ret ptr %15
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?message at error_code@std@@QEBA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr dead_on_unwind noalias writable sret(%"class.std::basic_string") align 8 %1) #10 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = call noundef nonnull align 8 dereferenceable(16) ptr @"?category at error_code@std@@QEBAAEBVerror_category at 2@XZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  %7 = call noundef i32 @"?value at error_code@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(16) %5) #3
-  %8 = load ptr, ptr %6, align 8
-  %9 = getelementptr inbounds ptr, ptr %8, i64 2
-  %10 = load ptr, ptr %9, align 8
-  call void %10(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr dead_on_unwind writable sret(%"class.std::basic_string") align 8 %1, i32 noundef %7)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %8) #3
-  %10 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
-  %11 = load i8, ptr %10, align 1
-  %12 = call noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 %11, ptr noundef nonnull align 1 dereferenceable(1) %9) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %13 unwind label %18
-
-13:                                               ; preds = %2
-  %14 = getelementptr inbounds nuw %"class.std::basic_string", ptr %6, i32 0, i32 0
-  %15 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %14, i32 0, i32 0
-  call void @"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B") #3
-  %16 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %16) #3
-  invoke void @llvm.seh.scope.end()
-          to label %17 unwind label %18
-
-17:                                               ; preds = %13
-  ret ptr %6
-
-18:                                               ; preds = %13, %2
-  %19 = cleanuppad within none []
-  call void @"??1?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3 [ "funclet"(token %19) ]
-  cleanupret from %19 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at QEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
-  %4 = alloca ptr, align 8
-  %5 = alloca i64, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca i64, align 8
-  %9 = alloca ptr, align 8
-  %10 = alloca i8, align 1
-  %11 = alloca %class.anon.11, align 1
-  store i64 %2, ptr %5, align 8
-  store ptr %1, ptr %6, align 8
-  store ptr %0, ptr %7, align 8
-  %12 = load ptr, ptr %7, align 8
-  %13 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
-  %14 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %13, i32 0, i32 0
-  %15 = getelementptr inbounds nuw %"class.std::_String_val", ptr %14, i32 0, i32 1
-  %16 = load i64, ptr %15, align 8
-  store i64 %16, ptr %8, align 8
-  %17 = load i64, ptr %5, align 8
-  %18 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
-  %19 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %18, i32 0, i32 0
-  %20 = getelementptr inbounds nuw %"class.std::_String_val", ptr %19, i32 0, i32 2
-  %21 = load i64, ptr %20, align 8
-  %22 = load i64, ptr %8, align 8
-  %23 = sub i64 %21, %22
-  %24 = icmp ule i64 %17, %23
-  br i1 %24, label %25, label %46
-
-25:                                               ; preds = %3
-  %26 = load i64, ptr %8, align 8
-  %27 = load i64, ptr %5, align 8
-  %28 = add i64 %26, %27
-  %29 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
-  %30 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %29, i32 0, i32 0
-  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 1
-  store i64 %28, ptr %31, align 8
-  %32 = getelementptr inbounds nuw %"class.std::basic_string", ptr %12, i32 0, i32 0
-  %33 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %32, i32 0, i32 0
-  %34 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(32) %33) #3
-  store ptr %34, ptr %9, align 8
-  %35 = load i64, ptr %5, align 8
-  %36 = load ptr, ptr %6, align 8
-  %37 = load ptr, ptr %9, align 8
-  %38 = load i64, ptr %8, align 8
-  %39 = getelementptr inbounds nuw i8, ptr %37, i64 %38
-  %40 = call noundef ptr @"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %39, ptr noundef %36, i64 noundef %35) #3
-  store i8 0, ptr %10, align 1
-  %41 = load ptr, ptr %9, align 8
-  %42 = load i64, ptr %8, align 8
-  %43 = load i64, ptr %5, align 8
-  %44 = add i64 %42, %43
-  %45 = getelementptr inbounds nuw i8, ptr %41, i64 %44
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  store ptr %12, ptr %4, align 8
-  br label %53
-
-46:                                               ; preds = %3
-  %47 = load i64, ptr %5, align 8
-  %48 = load ptr, ptr %6, align 8
-  %49 = load i64, ptr %5, align 8
-  %50 = getelementptr inbounds nuw %class.anon.11, ptr %11, i32 0, i32 0
-  %51 = load i8, ptr %50, align 1
-  %52 = call noundef nonnull align 8 dereferenceable(32) ptr @"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %49, i8 %51, ptr noundef %48, i64 noundef %47)
-  store ptr %52, ptr %4, align 8
-  br label %53
-
-53:                                               ; preds = %46, %25
-  %54 = load ptr, ptr %4, align 8
-  ret ptr %54
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAPEADXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds [16 x i8], ptr %5, i64 0, i64 0
-  store ptr %6, ptr %3, align 8
-  %7 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
-  br i1 %7, label %8, label %12
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %10) #3
-  store ptr %11, ptr %3, align 8
-  br label %12
-
-12:                                               ; preds = %8, %1
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?move@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load ptr, ptr %5, align 8
-  %9 = load i64, ptr %4, align 8
-  %10 = mul i64 %9, 1
-  call void @llvm.memmove.p0.p0.i64(ptr align 1 %7, ptr align 1 %8, i64 %10, i1 false)
-  %11 = load ptr, ptr %6, align 8
-  ret ptr %11
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @"??$_Reallocate_grow_by at V<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV34 at QEBD_K@Z at PEBD_K@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV01 at _KV<lambda_1>@?0??append at 01@QEAAAEAV01 at QEBD0@Z at PEBD_K@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, i64 noundef %1, i8 %2, ptr noundef %3, i64 noundef %4) #10 comdat align 2 {
-  %6 = alloca %class.anon.11, align 1
-  %7 = alloca i64, align 8
-  %8 = alloca ptr, align 8
-  %9 = alloca i64, align 8
-  %10 = alloca ptr, align 8
-  %11 = alloca ptr, align 8
-  %12 = alloca i64, align 8
-  %13 = alloca i64, align 8
-  %14 = alloca i64, align 8
-  %15 = alloca i64, align 8
-  %16 = alloca ptr, align 8
-  %17 = alloca ptr, align 8
-  %18 = alloca ptr, align 8
-  %19 = alloca ptr, align 8
-  %20 = getelementptr inbounds nuw %class.anon.11, ptr %6, i32 0, i32 0
-  store i8 %2, ptr %20, align 1
-  store i64 %4, ptr %7, align 8
-  store ptr %3, ptr %8, align 8
-  store i64 %1, ptr %9, align 8
-  store ptr %0, ptr %10, align 8
-  %21 = load ptr, ptr %10, align 8
-  %22 = getelementptr inbounds nuw %"class.std::basic_string", ptr %21, i32 0, i32 0
-  %23 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %22, i32 0, i32 0
-  store ptr %23, ptr %11, align 8
-  %24 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %25 = getelementptr inbounds nuw %"class.std::_String_val", ptr %24, i32 0, i32 1
-  %26 = load i64, ptr %25, align 8
-  store i64 %26, ptr %12, align 8
-  %27 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %21) #3
-  %28 = load i64, ptr %12, align 8
-  %29 = sub i64 %27, %28
-  %30 = load i64, ptr %9, align 8
-  %31 = icmp ult i64 %29, %30
-  br i1 %31, label %32, label %33
-
-32:                                               ; preds = %5
-  call void @"?_Xlen_string at std@@YAXXZ"() #22
-  unreachable
-
-33:                                               ; preds = %5
-  %34 = load i64, ptr %12, align 8
-  %35 = load i64, ptr %9, align 8
-  %36 = add i64 %34, %35
-  store i64 %36, ptr %13, align 8
-  %37 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %38 = getelementptr inbounds nuw %"class.std::_String_val", ptr %37, i32 0, i32 2
-  %39 = load i64, ptr %38, align 8
-  store i64 %39, ptr %14, align 8
-  %40 = load i64, ptr %13, align 8
-  %41 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %21, i64 noundef %40) #3
-  store i64 %41, ptr %15, align 8
-  %42 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %21) #3
-  store ptr %42, ptr %16, align 8
-  %43 = load ptr, ptr %16, align 8, !nonnull !16
-  %44 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef nonnull align 8 dereferenceable(8) %15)
-  store ptr %44, ptr %17, align 8
-  %45 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  call void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %45) #3
-  %46 = load i64, ptr %13, align 8
-  %47 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %48 = getelementptr inbounds nuw %"class.std::_String_val", ptr %47, i32 0, i32 1
-  store i64 %46, ptr %48, align 8
-  %49 = load i64, ptr %15, align 8
-  %50 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %51 = getelementptr inbounds nuw %"class.std::_String_val", ptr %50, i32 0, i32 2
-  store i64 %49, ptr %51, align 8
-  %52 = load ptr, ptr %17, align 8
-  %53 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %52) #3
-  store ptr %53, ptr %18, align 8
-  %54 = load i64, ptr %14, align 8
-  %55 = icmp ugt i64 %54, 15
-  br i1 %55, label %56, label %72
-
-56:                                               ; preds = %33
-  %57 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %58 = getelementptr inbounds nuw %"class.std::_String_val", ptr %57, i32 0, i32 0
-  %59 = load ptr, ptr %58, align 8
-  store ptr %59, ptr %19, align 8
-  %60 = load i64, ptr %7, align 8
-  %61 = load ptr, ptr %8, align 8
-  %62 = load i64, ptr %12, align 8
-  %63 = load ptr, ptr %19, align 8
-  %64 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %63) #3
-  %65 = load ptr, ptr %18, align 8
-  call void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef %65, ptr noundef %64, i64 noundef %62, ptr noundef %61, i64 noundef %60)
-  %66 = load i64, ptr %14, align 8
-  %67 = load ptr, ptr %19, align 8
-  %68 = load ptr, ptr %16, align 8, !nonnull !16
-  call void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef %67, i64 noundef %66) #3
-  %69 = load ptr, ptr %17, align 8
-  %70 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %71 = getelementptr inbounds nuw %"class.std::_String_val", ptr %70, i32 0, i32 0
-  store ptr %69, ptr %71, align 8
-  br label %82
-
-72:                                               ; preds = %33
-  %73 = load i64, ptr %7, align 8
-  %74 = load ptr, ptr %8, align 8
-  %75 = load i64, ptr %12, align 8
-  %76 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %77 = getelementptr inbounds nuw %"class.std::_String_val", ptr %76, i32 0, i32 0
-  %78 = getelementptr inbounds [16 x i8], ptr %77, i64 0, i64 0
-  %79 = load ptr, ptr %18, align 8
-  call void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %6, ptr noundef %79, ptr noundef %78, i64 noundef %75, ptr noundef %74, i64 noundef %73)
-  %80 = load ptr, ptr %11, align 8, !nonnull !16, !align !17
-  %81 = getelementptr inbounds nuw %"class.std::_String_val", ptr %80, i32 0, i32 0
-  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %17) #3
-  br label %82
-
-82:                                               ; preds = %72, %56
-  ret ptr %21
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::_String_val", ptr %3, i32 0, i32 2
-  %5 = load i64, ptr %4, align 8
-  %6 = icmp ugt i64 %5, 15
-  ret i1 %6
-}
-
-; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly captures(none), i64, i1 immarg) #15
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??R<lambda_1>@?0??append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV23 at QEBD_K@Z at QEBA?A?<auto>@@QEAD0101 at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef %2, i64 noundef %3, ptr noundef %4, i64 noundef %5) #0 comdat align 2 {
-  %7 = alloca i64, align 8
-  %8 = alloca ptr, align 8
-  %9 = alloca i64, align 8
-  %10 = alloca ptr, align 8
-  %11 = alloca ptr, align 8
-  %12 = alloca ptr, align 8
-  %13 = alloca i8, align 1
-  store i64 %5, ptr %7, align 8
-  store ptr %4, ptr %8, align 8
-  store i64 %3, ptr %9, align 8
-  store ptr %2, ptr %10, align 8
-  store ptr %1, ptr %11, align 8
-  store ptr %0, ptr %12, align 8
-  %14 = load ptr, ptr %12, align 8
-  %15 = load i64, ptr %9, align 8
-  %16 = load ptr, ptr %10, align 8
-  %17 = load ptr, ptr %11, align 8
-  %18 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %17, ptr noundef %16, i64 noundef %15) #3
-  %19 = load i64, ptr %7, align 8
-  %20 = load ptr, ptr %8, align 8
-  %21 = load ptr, ptr %11, align 8
-  %22 = load i64, ptr %9, align 8
-  %23 = getelementptr inbounds nuw i8, ptr %21, i64 %22
-  %24 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %23, ptr noundef %20, i64 noundef %19) #3
-  store i8 0, ptr %13, align 1
-  %25 = load ptr, ptr %11, align 8
-  %26 = load i64, ptr %9, align 8
-  %27 = load i64, ptr %7, align 8
-  %28 = add i64 %26, %27
-  %29 = getelementptr inbounds nuw i8, ptr %25, i64 %28
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(1) %13) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8, !nonnull !16
-  %8 = load i64, ptr %4, align 8
-  %9 = add i64 %8, 1
-  %10 = load ptr, ptr %5, align 8
-  call void @"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, ptr noundef %10, i64 noundef %9)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?deallocate@?$allocator at D@std@@QEAAXQEAD_K at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) #0 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %7 = load ptr, ptr %6, align 8
-  %8 = load i64, ptr %4, align 8
-  %9 = mul i64 1, %8
-  %10 = load ptr, ptr %5, align 8
-  call void @"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z"(ptr noundef %10, i64 noundef %9) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Deallocate@$0BA@$0A@@std@@YAXPEAX_K at Z"(ptr noundef %0, i64 noundef %1) #0 comdat {
-  %3 = alloca i64, align 8
-  %4 = alloca ptr, align 8
-  store i64 %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load i64, ptr %3, align 8
-  %6 = icmp uge i64 %5, 4096
-  br i1 %6, label %7, label %8
-
-7:                                                ; preds = %2
-  call void @"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %3)
-  br label %8
-
-8:                                                ; preds = %7, %2
-  %9 = load i64, ptr %3, align 8
-  %10 = load ptr, ptr %4, align 8
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %10, i64 noundef %9) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Adjust_manually_vector_aligned at std@@YAXAEAPEAXAEA_K at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #10 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca i64, align 8
-  %7 = alloca i64, align 8
-  %8 = alloca i64, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %9 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %10 = load i64, ptr %9, align 8
-  %11 = add i64 %10, 39
-  store i64 %11, ptr %9, align 8
-  %12 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %13 = load ptr, ptr %12, align 8
-  store ptr %13, ptr %5, align 8
-  %14 = load ptr, ptr %5, align 8
-  %15 = getelementptr inbounds i64, ptr %14, i64 -1
-  %16 = load i64, ptr %15, align 8
-  store i64 %16, ptr %6, align 8
-  store i64 8, ptr %7, align 8
-  %17 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  %18 = load ptr, ptr %17, align 8
-  %19 = ptrtoint ptr %18 to i64
-  %20 = load i64, ptr %6, align 8
-  %21 = sub i64 %19, %20
-  store i64 %21, ptr %8, align 8
-  br label %22
-
-22:                                               ; preds = %2
-  %23 = load i64, ptr %8, align 8
-  %24 = icmp uge i64 %23, 8
-  br i1 %24, label %25, label %29
-
-25:                                               ; preds = %22
-  %26 = load i64, ptr %8, align 8
-  %27 = icmp ule i64 %26, 39
-  br i1 %27, label %28, label %29
-
-28:                                               ; preds = %25
-  br label %32
-
-29:                                               ; preds = %25, %22
-  br label %30
-
-30:                                               ; preds = %29
-  call void @_invalid_parameter_noinfo_noreturn() #22
-  unreachable
-
-31:                                               ; No predecessors!
-  br label %32
-
-32:                                               ; preds = %31, %28
-  br label %33
-
-33:                                               ; preds = %32
-  %34 = load i64, ptr %6, align 8
-  %35 = inttoptr i64 %34 to ptr
-  %36 = load ptr, ptr %4, align 8, !nonnull !16, !align !17
-  store ptr %35, ptr %36, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds [16 x i8], ptr %5, i64 0, i64 0
-  store ptr %6, ptr %3, align 8
-  %7 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %4) #3
-  br i1 %7, label %8, label %12
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %4, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %10) #3
-  store ptr %11, ptr %3, align 8
-  br label %12
-
-12:                                               ; preds = %8, %1
-  %13 = load ptr, ptr %3, align 8
-  ret ptr %13
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0V?$allocator at D@std@@$$V@?$_Compressed_pair at V?$allocator at D@std@@V?$_String_val at U?$_Simple_types at D@std@@@2@$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAV?$allocator at D@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(32) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %4 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %4, i32 0, i32 0
-  store i8 %1, ptr %7, align 1
-  store ptr %2, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %8 = load ptr, ptr %6, align 8
-  %9 = load ptr, ptr %5, align 8, !nonnull !16
-  %10 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
-  %11 = call noundef ptr @"??0?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %14
-
-12:                                               ; preds = %3
-  invoke void @llvm.seh.scope.end()
-          to label %13 unwind label %14
-
-13:                                               ; preds = %12
-  ret ptr %8
-
-14:                                               ; preds = %12, %3
-  %15 = cleanuppad within none []
-  call void @"??1?$_String_val at U?$_Simple_types at D@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %10) #3 [ "funclet"(token %15) ]
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Alloc_proxy at _Container_base0@std@@QEAAXAEBU_Fake_allocator at 2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Take_contents@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEAV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
-  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
-  store ptr %9, ptr %5, align 8
-  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %11 = getelementptr inbounds nuw %"class.std::basic_string", ptr %10, i32 0, i32 0
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %11, i32 0, i32 0
-  store ptr %12, ptr %6, align 8
-  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %13) #3
-  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %14) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Memcpy_val_from@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXAEBV12@@Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
-  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
-  %10 = getelementptr inbounds nuw i8, ptr %9, i64 0
-  store ptr %10, ptr %5, align 8
-  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %12 = getelementptr inbounds nuw %"class.std::basic_string", ptr %11, i32 0, i32 0
-  %13 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %12, i32 0, i32 0
-  %14 = getelementptr inbounds nuw i8, ptr %13, i64 0
-  store ptr %14, ptr %6, align 8
-  %15 = load ptr, ptr %5, align 8
-  %16 = load ptr, ptr %6, align 8
-  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %15, ptr align 1 %16, i64 32, i1 false)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Tidy_init@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  %4 = alloca i8, align 1
-  store ptr %0, ptr %2, align 8
-  %5 = load ptr, ptr %2, align 8
-  %6 = getelementptr inbounds nuw %"class.std::basic_string", ptr %5, i32 0, i32 0
-  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %6, i32 0, i32 0
-  store ptr %7, ptr %3, align 8
-  %8 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %9 = getelementptr inbounds nuw %"class.std::_String_val", ptr %8, i32 0, i32 1
-  store i64 0, ptr %9, align 8
-  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %11 = getelementptr inbounds nuw %"class.std::_String_val", ptr %10, i32 0, i32 2
-  store i64 15, ptr %11, align 8
-  %12 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %12) #3
-  store i8 0, ptr %4, align 1
-  %13 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %14 = getelementptr inbounds nuw %"class.std::_String_val", ptr %13, i32 0, i32 0
-  %15 = getelementptr inbounds [16 x i8], ptr %14, i64 0, i64 0
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %4) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?select_on_container_copy_construction@?$_Default_allocator_traits at V?$allocator at D@std@@@std@@SA?AV?$allocator at D@2 at AEBV32@@Z"(ptr dead_on_unwind noalias writable sret(%"class.std::allocator") align 1 %0, ptr noundef nonnull align 1 dereferenceable(1) %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8, !nonnull !16
-  ret void
-}
-
-; Function Attrs: mustprogress noinline optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Construct@$01PEBD@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXQEBD_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1, i64 noundef %2) #10 comdat align 2 {
-  %4 = alloca i64, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca ptr, align 8
-  %9 = alloca ptr, align 8
-  %10 = alloca %"struct.std::_Fake_proxy_ptr_impl", align 1
-  %11 = alloca i64, align 8
-  %12 = alloca ptr, align 8
-  store i64 %2, ptr %4, align 8
-  store ptr %1, ptr %5, align 8
-  store ptr %0, ptr %6, align 8
-  %13 = load ptr, ptr %6, align 8
-  %14 = getelementptr inbounds nuw %"class.std::basic_string", ptr %13, i32 0, i32 0
-  %15 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %14, i32 0, i32 0
-  store ptr %15, ptr %7, align 8
-  %16 = load i64, ptr %4, align 8
-  %17 = call noundef i64 @"?max_size@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KXZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
-  %18 = icmp ugt i64 %16, %17
-  br i1 %18, label %19, label %20
-
-19:                                               ; preds = %3
-  call void @"?_Xlen_string at std@@YAXXZ"() #22
-  unreachable
-
-20:                                               ; preds = %3
-  %21 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %13) #3
-  store ptr %21, ptr %8, align 8
-  store ptr @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr %9, align 8
-  %22 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %23 = call noundef ptr @"??0_Fake_proxy_ptr_impl at std@@QEAA at AEBU_Fake_allocator@1 at AEBU_Container_base0@1@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) @"?_Fake_alloc at std@@3U_Fake_allocator at 1@B", ptr noundef nonnull align 1 dereferenceable(1) %22) #3
-  %24 = load i64, ptr %4, align 8
-  %25 = icmp ule i64 %24, 15
-  br i1 %25, label %26, label %37
-
-26:                                               ; preds = %20
-  %27 = load i64, ptr %4, align 8
-  %28 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %29 = getelementptr inbounds nuw %"class.std::_String_val", ptr %28, i32 0, i32 1
-  store i64 %27, ptr %29, align 8
-  %30 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %31 = getelementptr inbounds nuw %"class.std::_String_val", ptr %30, i32 0, i32 2
-  store i64 15, ptr %31, align 8
-  %32 = load ptr, ptr %5, align 8
-  %33 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %34 = getelementptr inbounds nuw %"class.std::_String_val", ptr %33, i32 0, i32 0
-  %35 = getelementptr inbounds [16 x i8], ptr %34, i64 0, i64 0
-  %36 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %35, ptr noundef %32, i64 noundef 16) #3
-  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br label %58
-
-37:                                               ; preds = %20
-  %38 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %39 = getelementptr inbounds nuw %"class.std::_String_val", ptr %38, i32 0, i32 2
-  store i64 15, ptr %39, align 8
-  %40 = load i64, ptr %4, align 8
-  %41 = call noundef i64 @"?_Calculate_growth@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBA_K_K at Z"(ptr noundef nonnull align 8 dereferenceable(32) %13, i64 noundef %40) #3
-  store i64 %41, ptr %11, align 8
-  %42 = load ptr, ptr %8, align 8, !nonnull !16
-  %43 = call noundef ptr @"??$_Allocate_for_capacity@$0A@@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAPEADAEAV?$allocator at D@1 at AEA_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %42, ptr noundef nonnull align 8 dereferenceable(8) %11)
-  store ptr %43, ptr %12, align 8
-  %44 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %45 = getelementptr inbounds nuw %"class.std::_String_val", ptr %44, i32 0, i32 0
-  call void @"??$_Construct_in_place at PEADAEBQEAD@std@@YAXAEAPEADAEBQEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %12) #3
-  %46 = load i64, ptr %4, align 8
-  %47 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %48 = getelementptr inbounds nuw %"class.std::_String_val", ptr %47, i32 0, i32 1
-  store i64 %46, ptr %48, align 8
-  %49 = load i64, ptr %11, align 8
-  %50 = load ptr, ptr %7, align 8, !nonnull !16, !align !17
-  %51 = getelementptr inbounds nuw %"class.std::_String_val", ptr %50, i32 0, i32 2
-  store i64 %49, ptr %51, align 8
-  %52 = load i64, ptr %4, align 8
-  %53 = add i64 %52, 1
-  %54 = load ptr, ptr %5, align 8
-  %55 = load ptr, ptr %12, align 8
-  %56 = call noundef ptr @"??$_Unfancy at D@std@@YAPEADPEAD at Z"(ptr noundef %55) #3
-  %57 = call noundef ptr @"?copy@?$_Char_traits at DH@std@@SAPEADQEADQEBD_K at Z"(ptr noundef %56, ptr noundef %54, i64 noundef %53) #3
-  call void @"?_Release at _Fake_proxy_ptr_impl@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  br label %58
-
-58:                                               ; preds = %37, %26
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?c_str@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::basic_string", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %4, i32 0, i32 0
-  %6 = call noundef ptr @"?_Myptr@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBAPEBDXZ"(ptr noundef nonnull align 8 dereferenceable(32) %5) #3
-  ret ptr %6
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Tidy_deallocate@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca i8, align 1
-  store ptr %0, ptr %2, align 8
-  %7 = load ptr, ptr %2, align 8
-  %8 = getelementptr inbounds nuw %"class.std::basic_string", ptr %7, i32 0, i32 0
-  %9 = getelementptr inbounds nuw %"class.std::_Compressed_pair.10", ptr %8, i32 0, i32 0
-  store ptr %9, ptr %3, align 8
-  %10 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Orphan_all at _Container_base0@std@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10) #3
-  %11 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %12 = call noundef zeroext i1 @"?_Large_mode_engaged@?$_String_val at U?$_Simple_types at D@std@@@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(32) %11) #3
-  br i1 %12, label %13, label %26
-
-13:                                               ; preds = %1
-  %14 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %15 = getelementptr inbounds nuw %"class.std::_String_val", ptr %14, i32 0, i32 0
-  %16 = load ptr, ptr %15, align 8
-  store ptr %16, ptr %4, align 8
-  %17 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Getal@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEAAAEAV?$allocator at D@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(32) %7) #3
-  store ptr %17, ptr %5, align 8
-  %18 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %19 = getelementptr inbounds nuw %"class.std::_String_val", ptr %18, i32 0, i32 0
-  call void @"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %19) #3
-  %20 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  call void @"?_Activate_SSO_buffer@?$_String_val at U?$_Simple_types at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(32) %20) #3
-  %21 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %22 = getelementptr inbounds nuw %"class.std::_String_val", ptr %21, i32 0, i32 2
-  %23 = load i64, ptr %22, align 8
-  %24 = load ptr, ptr %4, align 8
-  %25 = load ptr, ptr %5, align 8, !nonnull !16
-  call void @"?_Deallocate_for_capacity@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@CAXAEAV?$allocator at D@2 at QEAD_K@Z"(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef %24, i64 noundef %23) #3
-  br label %26
-
-26:                                               ; preds = %13, %1
-  %27 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %28 = getelementptr inbounds nuw %"class.std::_String_val", ptr %27, i32 0, i32 1
-  store i64 0, ptr %28, align 8
-  %29 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %30 = getelementptr inbounds nuw %"class.std::_String_val", ptr %29, i32 0, i32 2
-  store i64 15, ptr %30, align 8
-  store i8 0, ptr %6, align 1
-  %31 = load ptr, ptr %3, align 8, !nonnull !16, !align !17
-  %32 = getelementptr inbounds nuw %"class.std::_String_val", ptr %31, i32 0, i32 0
-  %33 = getelementptr inbounds [16 x i8], ptr %32, i64 0, i64 0
-  call void @"?assign@?$_Narrow_char_traits at DH@std@@SAXAEADAEBD at Z"(ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef nonnull align 1 dereferenceable(1) %6) #3
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??$_Destroy_in_place at PEAD@std@@YAXAEAPEAD at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16, !align !17
-  ret void
-}
-
-; Function Attrs: nounwind
-declare dso_local noundef i32 @"?uncaught_exceptions at std@@YAHXZ"() #19
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?_Osfx@?$basic_ostream at DU?$char_traits at D@std@@@std@@QEAAXXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  invoke void @llvm.seh.try.begin()
-          to label %4 unwind label %44
-
-4:                                                ; preds = %1
-  %5 = getelementptr inbounds i8, ptr %3, i64 0
-  %6 = load ptr, ptr %5, align 8
-  %7 = getelementptr inbounds i32, ptr %6, i32 1
-  %8 = load i32, ptr %7, align 4
-  %9 = sext i32 %8 to i64
-  %10 = add nsw i64 0, %9
-  %11 = getelementptr inbounds i8, ptr %3, i64 %10
-  %12 = call noundef zeroext i1 @"?good at ios_base@std@@QEBA_NXZ"(ptr noundef nonnull align 8 dereferenceable(72) %11) #3
-  br i1 %12, label %13, label %52
-
-13:                                               ; preds = %4
-  %14 = getelementptr inbounds i8, ptr %3, i64 0
-  %15 = load ptr, ptr %14, align 8
-  %16 = getelementptr inbounds i32, ptr %15, i32 1
-  %17 = load i32, ptr %16, align 4
-  %18 = sext i32 %17 to i64
-  %19 = add nsw i64 0, %18
-  %20 = getelementptr inbounds i8, ptr %3, i64 %19
-  %21 = call noundef i32 @"?flags at ios_base@std@@QEBAHXZ"(ptr noundef nonnull align 8 dereferenceable(72) %20) #3
-  %22 = and i32 %21, 2
-  %23 = icmp ne i32 %22, 0
-  br i1 %23, label %24, label %52
-
-24:                                               ; preds = %13
-  %25 = getelementptr inbounds i8, ptr %3, i64 0
-  %26 = load ptr, ptr %25, align 8
-  %27 = getelementptr inbounds i32, ptr %26, i32 1
-  %28 = load i32, ptr %27, align 4
-  %29 = sext i32 %28 to i64
-  %30 = add nsw i64 0, %29
-  %31 = getelementptr inbounds i8, ptr %3, i64 %30
-  %32 = call noundef ptr @"?rdbuf@?$basic_ios at DU?$char_traits at D@std@@@std@@QEBAPEAV?$basic_streambuf at DU?$char_traits at D@std@@@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(96) %31) #3
-  %33 = invoke noundef i32 @"?pubsync@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ"(ptr noundef nonnull align 8 dereferenceable(104) %32)
-          to label %34 unwind label %44
-
-34:                                               ; preds = %24
-  %35 = icmp eq i32 %33, -1
-  br i1 %35, label %36, label %51
-
-36:                                               ; preds = %34
-  %37 = getelementptr inbounds i8, ptr %3, i64 0
-  %38 = load ptr, ptr %37, align 8
-  %39 = getelementptr inbounds i32, ptr %38, i32 1
-  %40 = load i32, ptr %39, align 4
-  %41 = sext i32 %40 to i64
-  %42 = add nsw i64 0, %41
-  %43 = getelementptr inbounds i8, ptr %3, i64 %42
-  invoke void @"?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z"(ptr noundef nonnull align 8 dereferenceable(96) %43, i32 noundef 4, i1 noundef zeroext false)
-          to label %50 unwind label %44
-
-44:                                               ; preds = %36, %24, %1
-  %45 = catchswitch within none [label %46] unwind to caller
-
-46:                                               ; preds = %44
-  %47 = catchpad within %45 [ptr null, i32 0, ptr null]
-  catchret from %47 to label %48
-
-48:                                               ; preds = %46
-  br label %49
-
-49:                                               ; preds = %48, %52
-  ret void
-
-50:                                               ; preds = %36
-  br label %51
-
-51:                                               ; preds = %50, %34
-  br label %52
-
-52:                                               ; preds = %51, %13, %4
-  br label %49
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$end at D$0L@@std@@YAPEADAEAY0L at D@Z"(ptr noundef nonnull align 1 dereferenceable(11) %0) #0 comdat {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8, !nonnull !16
-  %4 = getelementptr inbounds [11 x i8], ptr %3, i64 0, i64 0
-  %5 = getelementptr inbounds nuw i8, ptr %4, i64 11
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$_UIntegral_to_buff at DI@std@@YAPEADPEADI at Z"(ptr noundef %0, i32 noundef %1) #0 comdat {
-  %3 = alloca i32, align 4
-  %4 = alloca ptr, align 8
-  %5 = alloca i32, align 4
-  store i32 %1, ptr %3, align 4
-  store ptr %0, ptr %4, align 8
-  %6 = load i32, ptr %3, align 4
-  store i32 %6, ptr %5, align 4
-  br label %7
-
-7:                                                ; preds = %16, %2
-  %8 = load i32, ptr %5, align 4
-  %9 = urem i32 %8, 10
-  %10 = add i32 48, %9
-  %11 = trunc i32 %10 to i8
-  %12 = load ptr, ptr %4, align 8
-  %13 = getelementptr inbounds i8, ptr %12, i32 -1
-  store ptr %13, ptr %4, align 8
-  store i8 %11, ptr %13, align 1
-  %14 = load i32, ptr %5, align 4
-  %15 = udiv i32 %14, 10
-  store i32 %15, ptr %5, align 4
-  br label %16
-
-16:                                               ; preds = %7
-  %17 = load i32, ptr %5, align 4
-  %18 = icmp ne i32 %17, 0
-  br i1 %18, label %7, label %19, !llvm.loop !27
-
-19:                                               ; preds = %16
-  %20 = load ptr, ptr %4, align 8
-  ret ptr %20
-}
-
-attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #3 = { nounwind }
-attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #5 = { nounwind memory(none) }
-attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
-attributes #7 = { nomerge nounwind }
-attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
-attributes #9 = { nounwind willreturn memory(write) }
-attributes #10 = { mustprogress noinline optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #11 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #12 = { nounwind memory(argmem: read) }
-attributes #13 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #14 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #15 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
-attributes #16 = { nocallback nofree nounwind willreturn memory(argmem: write) }
-attributes #17 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #18 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #19 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #20 = { mustprogress noinline noreturn optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #21 = { allocsize(0) }
-attributes #22 = { noreturn }
-attributes #23 = { builtin nounwind }
-attributes #24 = { builtin allocsize(0) }
-attributes #25 = { noreturn nounwind }
-
-!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9}
-!llvm.module.flags = !{!10, !11, !12, !13, !14}
-!llvm.ident = !{!15}
-
-!0 = !{!"/DEFAULTLIB:libcmt.lib"}
-!1 = !{!"/DEFAULTLIB:oldnames.lib"}
-!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
-!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
-!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
-!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
-!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
-!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
-!8 = !{!"/FAILIFMISMATCH:\22annotate_string=0\22"}
-!9 = !{!"/FAILIFMISMATCH:\22annotate_vector=0\22"}
-!10 = !{i32 1, !"wchar_size", i32 2}
-!11 = !{i32 2, !"eh-asynch", i32 1}
-!12 = !{i32 8, !"PIC Level", i32 2}
-!13 = !{i32 7, !"uwtable", i32 2}
-!14 = !{i32 1, !"MaxTLSAlign", i32 65536}
-!15 = !{!"clang version 21.0.0git (https://github.com/llvm/llvm-project.git e66c205bda33a91fbe2ba5b4a5d6b823e5c23e8a)"}
-!16 = !{}
-!17 = !{i64 8}
-!18 = distinct !{!18, !19}
-!19 = !{!"llvm.loop.mustprogress"}
-!20 = distinct !{!20, !19}
-!21 = distinct !{!21, !19}
-!22 = distinct !{!22, !19}
-!23 = !{i64 4}
-!24 = distinct !{!24, !19}
-!25 = distinct !{!25, !19}
-!26 = distinct !{!26, !19}
-!27 = distinct !{!27, !19}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
deleted file mode 100644
index 073165cd925c1..0000000000000
--- a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_std_unique.ll
+++ /dev/null
@@ -1,866 +0,0 @@
-; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
-; the manipulation is that the coroutine function receives an argument of std::unique_ptr
-; which is copied by value
-; crashed before fix because of the both validation mismatches:
-; "Unwind edges out of a funclet pad must have the same unwind dest"
-; and - "Instruction does not dominate all uses!"
-; RUN: opt < %s -passes=coro-split -S | FileCheck %s
-; CHECK: define
-
-; ModuleID = 'C:\Dev\Projects\clang_asynch_exceptions_coroutines_bug\coroutine_with_unique_ptr_argument.cpp'
-source_filename = "C:\\Dev\\Projects\\clang_asynch_exceptions_coroutines_bug\\coroutine_with_unique_ptr_argument.cpp"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
-%struct.awaitable = type { i8 }
-%struct.task = type { i8 }
-%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
-%"class.std::_Compressed_pair" = type { ptr }
-%"struct.task::promise_type" = type { i8 }
-%"struct.std::suspend_never" = type { i8 }
-%"struct.std::_One_then_variadic_args_t" = type { i8 }
-%"struct.std::coroutine_handle" = type { ptr }
-%"struct.std::coroutine_handle.0" = type { ptr }
-%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
-
-$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z" = comdat any
-
-$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
-
-$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
-
-$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
-
-$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
-
-$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
-
-$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
-
-$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
-
-$"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ" = comdat any
-
-$"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
-
-$"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z" = comdat any
-
-$"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z" = comdat any
-
-$"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
-
-$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
-
-$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
-
-$"??R?$default_delete at H@std@@QEBAXPEAH at Z" = comdat any
-
-$"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
-  %1 = alloca %struct.awaitable, align 1
-  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
-  %3 = load i8, ptr %2, align 1
-  ret i8 %3
-}
-
-; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
-define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z"(ptr noundef %0) #1 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca %struct.task, align 1
-  %3 = alloca ptr, align 8
-  %4 = alloca %"class.std::unique_ptr", align 8
-  %5 = alloca %"struct.task::promise_type", align 1
-  %6 = alloca %"struct.std::suspend_never", align 1
-  %7 = alloca %struct.awaitable, align 1
-  %8 = alloca %"struct.std::suspend_never", align 1
-  store ptr %0, ptr %3, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %107
-
-9:                                                ; preds = %1
-  %10 = bitcast ptr %5 to ptr
-  %11 = call token @llvm.coro.id(i32 16, ptr %10, ptr null, ptr null)
-  %12 = call i1 @llvm.coro.alloc(token %11)
-  br i1 %12, label %13, label %17
-
-13:                                               ; preds = %9
-  %14 = call i64 @llvm.coro.size.i64()
-  %15 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %14) #13
-          to label %16 unwind label %107
-
-16:                                               ; preds = %13
-  br label %17
-
-17:                                               ; preds = %16, %9
-  %18 = phi ptr [ null, %9 ], [ %15, %16 ]
-  %19 = call ptr @llvm.coro.begin(token %11, ptr %18)
-  invoke void @llvm.seh.scope.begin()
-          to label %20 unwind label %96
-
-20:                                               ; preds = %17
-  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
-  %21 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %22 unwind label %91
-
-22:                                               ; preds = %20
-  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
-  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
-          to label %23 unwind label %89
-
-23:                                               ; preds = %22
-  invoke void @llvm.seh.scope.begin()
-          to label %24 unwind label %85
-
-24:                                               ; preds = %23
-  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #4
-  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
-          to label %25 unwind label %44
-
-25:                                               ; preds = %24
-  %26 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
-  br i1 %26, label %31, label %27
-
-27:                                               ; preds = %25
-  %28 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__init") #4
-  %29 = call i8 @llvm.coro.suspend(token %28, i1 false)
-  switch i8 %29, label %83 [
-    i8 0, label %31
-    i8 1, label %30
-  ]
-
-30:                                               ; preds = %27
-  br label %32
-
-31:                                               ; preds = %27, %25
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
-  br label %32
-
-32:                                               ; preds = %31, %30
-  %33 = phi i32 [ 0, %31 ], [ 2, %30 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
-  switch i32 %33, label %73 [
-    i32 0, label %34
-  ]
-
-34:                                               ; preds = %32
-  invoke void @llvm.seh.try.begin()
-          to label %35 unwind label %51
-
-35:                                               ; preds = %34
-  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
-  %36 = call i8 @"?switch_to_new_thread@@YA at XZ"()
-  %37 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
-          to label %38 unwind label %66
-
-38:                                               ; preds = %35
-  br i1 %37, label %46, label %39
-
-39:                                               ; preds = %38
-  %40 = call token @llvm.coro.save(ptr null)
-  invoke void @llvm.coro.await.suspend.void(ptr %7, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__await")
-          to label %41 unwind label %66
-
-41:                                               ; preds = %39
-  %42 = call i8 @llvm.coro.suspend(token %40, i1 false)
-  switch i8 %42, label %83 [
-    i8 0, label %46
-    i8 1, label %43
-  ]
-
-43:                                               ; preds = %41
-  br label %48
-
-44:                                               ; preds = %24
-  %45 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
-  cleanupret from %45 unwind label %85
-
-46:                                               ; preds = %41, %38
-  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
-          to label %47 unwind label %66
-
-47:                                               ; preds = %46
-  br label %48
-
-48:                                               ; preds = %47, %43
-  %49 = phi i32 [ 0, %47 ], [ 2, %43 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
-  switch i32 %49, label %73 [
-    i32 0, label %50
-  ]
-
-50:                                               ; preds = %48
-  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
-          to label %65 unwind label %51
-
-51:                                               ; preds = %50, %66, %34
-  %52 = catchswitch within none [label %53] unwind label %85
-
-53:                                               ; preds = %51
-  %54 = catchpad within %52 [ptr null, i32 0, ptr null]
-  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %54) ]
-          to label %55 unwind label %85
-
-55:                                               ; preds = %53
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %54) ]
-          to label %56 unwind label %85
-
-56:                                               ; preds = %55
-  catchret from %54 to label %57
-
-57:                                               ; preds = %56
-  br label %58
-
-58:                                               ; preds = %57
-  br label %59
-
-59:                                               ; preds = %58, %65
-  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
-  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %8) #4
-  %60 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
-  br i1 %60, label %68, label %61
-
-61:                                               ; preds = %59
-  %62 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__final") #4
-  %63 = call i8 @llvm.coro.suspend(token %62, i1 true)
-  switch i8 %63, label %83 [
-    i8 0, label %68
-    i8 1, label %64
-  ]
-
-64:                                               ; preds = %61
-  br label %69
-
-65:                                               ; preds = %50
-  br label %59
-
-66:                                               ; preds = %46, %39, %35
-  %67 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
-  cleanupret from %67 unwind label %51
-
-68:                                               ; preds = %61, %59
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
-  br label %69
-
-69:                                               ; preds = %68, %64
-  %70 = phi i32 [ 0, %68 ], [ 2, %64 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
-  switch i32 %70, label %73 [
-    i32 0, label %71
-  ]
-
-71:                                               ; preds = %69
-  invoke void @llvm.seh.scope.end()
-          to label %72 unwind label %85
-
-72:                                               ; preds = %71
-  br label %73
-
-73:                                               ; preds = %72, %69, %48, %32
-  %74 = phi i32 [ %33, %32 ], [ %49, %48 ], [ %70, %69 ], [ 0, %72 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
-  invoke void @llvm.seh.scope.end()
-          to label %75 unwind label %91
-
-75:                                               ; preds = %73
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
-  invoke void @llvm.seh.scope.end()
-          to label %76 unwind label %96
-
-76:                                               ; preds = %75
-  %77 = call ptr @llvm.coro.free(token %11, ptr %19)
-  %78 = icmp ne ptr %77, null
-  br i1 %78, label %79, label %81
-
-79:                                               ; preds = %76
-  %80 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %77, i64 noundef %80) #4
-  br label %81
-
-81:                                               ; preds = %76, %79
-  switch i32 %74, label %109 [
-    i32 0, label %82
-    i32 2, label %83
-  ]
-
-82:                                               ; preds = %81
-  br label %83
-
-83:                                               ; preds = %82, %81, %61, %41, %27
-  %84 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
-  invoke void @llvm.seh.scope.end()
-          to label %104 unwind label %107
-
-85:                                               ; preds = %71, %55, %53, %51, %44, %23
-  %86 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %86) ]
-          to label %87 unwind label %89
-
-87:                                               ; preds = %85
-  %88 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %86) ]
-  cleanupret from %86 unwind label %89
-
-89:                                               ; preds = %87, %85, %22
-  %90 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
-  cleanupret from %90 unwind label %91
-
-91:                                               ; preds = %73, %89, %20
-  %92 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %92) ]
-          to label %93 unwind label %94
-
-93:                                               ; preds = %91
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4 [ "funclet"(token %92) ]
-  cleanupret from %92 unwind label %94
-
-94:                                               ; preds = %93, %91
-  %95 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
-  cleanupret from %95 unwind label %96
-
-96:                                               ; preds = %75, %94, %17
-  %97 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %97) ]
-          to label %98 unwind label %107
-
-98:                                               ; preds = %96
-  %99 = call ptr @llvm.coro.free(token %11, ptr %19)
-  %100 = icmp ne ptr %99, null
-  br i1 %100, label %101, label %103
-
-101:                                              ; preds = %98
-  %102 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %99, i64 noundef %102) #4 [ "funclet"(token %97) ]
-  br label %103
-
-103:                                              ; preds = %98, %101
-  cleanupret from %97 unwind label %107
-
-104:                                              ; preds = %83
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %105 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
-  %106 = load i8, ptr %105, align 1
-  ret i8 %106
-
-107:                                              ; preds = %83, %103, %96, %13, %1
-  %108 = cleanuppad within none []
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %108) ]
-  cleanupret from %108 unwind to caller
-
-109:                                              ; preds = %81
-  unreachable
-}
-
-declare dso_local i32 @__CxxFrameHandler3(...)
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.begin() #2
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #3
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.alloc(token) #4
-
-; Function Attrs: nobuiltin allocsize(0)
-declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
-
-; Function Attrs: nounwind memory(none)
-declare i64 @llvm.coro.size.i64() #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #4
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %7, i32 0, i32 0
-  %9 = load ptr, ptr %3, align 8
-  %10 = call noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
-  store ptr %10, ptr %5, align 8
-  %11 = load ptr, ptr %3, align 8
-  %12 = call noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
-  %13 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
-  %14 = load i8, ptr %13, align 1
-  %15 = call noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %14, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %5) #4
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 true
-}
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #7
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
-  %7 = load ptr, ptr %6, align 8
-  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
-  ret void
-}
-
-declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6
-
-; Function Attrs: nounwind willreturn memory(write)
-declare dso_local void @llvm.seh.try.begin() #9
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 false
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.end() #2
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  %7 = icmp ne ptr %6, null
-  br i1 %7, label %8, label %14
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
-  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
-  %13 = load ptr, ptr %12, align 8
-  call void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #4
-  br label %14
-
-14:                                               ; preds = %8, %1
-  ret void
-}
-
-; Function Attrs: nobuiltin nounwind
-declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #10
-
-; Function Attrs: nounwind memory(argmem: read)
-declare ptr @llvm.coro.free(token, ptr nocapture readonly) #11
-
-; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
-define dso_local noundef i32 @main() #12 personality ptr @__CxxFrameHandler3 {
-  %1 = alloca %"class.std::unique_ptr", align 8
-  %2 = alloca %struct.task, align 1
-  %3 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %7
-
-4:                                                ; preds = %0
-  invoke void @llvm.seh.scope.end()
-          to label %5 unwind label %7
-
-5:                                                ; preds = %4
-  %6 = call i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@@Z"(ptr noundef %1)
-  ret i32 0
-
-7:                                                ; preds = %4, %0
-  %8 = cleanuppad within none []
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %8) ]
-  cleanupret from %8 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
-  %7 = load i8, ptr %6, align 1
-  %8 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i8 %7) #4
-  ret ptr %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  store ptr null, ptr %3, align 8
-  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
-  %7 = call noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #4
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 {
-  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca ptr, align 8
-  %9 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
-  store i8 %1, ptr %9, align 1
-  store ptr %3, ptr %6, align 8
-  store ptr %2, ptr %7, align 8
-  store ptr %0, ptr %8, align 8
-  %10 = load ptr, ptr %8, align 8
-  %11 = load ptr, ptr %7, align 8
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %10, i32 0, i32 0
-  %13 = load ptr, ptr %6, align 8
-  %14 = load ptr, ptr %13, align 8
-  store ptr %14, ptr %12, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8
-  %9 = load ptr, ptr %4, align 8
-  store ptr null, ptr %9, align 8
-  %10 = load ptr, ptr %5, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = icmp eq ptr %6, null
-  br i1 %7, label %11, label %8
-
-8:                                                ; preds = %2
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %12
-
-9:                                                ; preds = %8
-  invoke void @llvm.seh.scope.end()
-          to label %10 unwind label %12
-
-10:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14
-  br label %11
-
-11:                                               ; preds = %10, %2
-  ret void
-
-12:                                               ; preds = %9, %8
-  %13 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14 [ "funclet"(token %13) ]
-  cleanupret from %13 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
-  store i8 %1, ptr %5, align 1
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %6, i32 0, i32 0
-  store ptr null, ptr %7, align 8
-  ret ptr %6
-}
-
-attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #2 = { nounwind memory(none) }
-attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #4 = { nounwind }
-attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
-attributes #7 = { nomerge nounwind }
-attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
-attributes #9 = { nounwind willreturn memory(write) }
-attributes #10 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #11 = { nounwind memory(argmem: read) }
-attributes #12 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #13 = { allocsize(0) }
-attributes #14 = { builtin nounwind }
-
-!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7}
-!llvm.module.flags = !{!8, !9, !10, !11, !12}
-!llvm.ident = !{!13}
-
-!0 = !{!"/DEFAULTLIB:libcmt.lib"}
-!1 = !{!"/DEFAULTLIB:oldnames.lib"}
-!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
-!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
-!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
-!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
-!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
-!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
-!8 = !{i32 1, !"wchar_size", i32 2}
-!9 = !{i32 2, !"eh-asynch", i32 1}
-!10 = !{i32 8, !"PIC Level", i32 2}
-!11 = !{i32 7, !"uwtable", i32 2}
-!12 = !{i32 1, !"MaxTLSAlign", i32 65536}
-!13 = !{!"clang version 20.1.6"}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll b/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll
deleted file mode 100644
index d9eb07d3406c0..0000000000000
--- a/llvm/test/Transforms/Coroutines/pr148035_2_coroutine_w_arg_w_move_ctor_and_deleter.ll
+++ /dev/null
@@ -1,727 +0,0 @@
-; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
-; the manipulation is that the coroutine function receives an argument with is of class type
-; that's having a default move ctor, and a dtor which tries to delete a member pointer.
-; It's a cpp reduce of std::unique_ptr
-; crashed before fix because of the both validation mismatches:
-; "Unwind edges out of a funclet pad must have the same unwind dest"
-; and - "Instruction does not dominate all uses!"
-; RUN: opt < %s -passes=coro-split -S | FileCheck %s
-; CHECK: define
-
-; ModuleID = 'coroutine_with_argument_having_deleter_and_move_ctor.cpp'
-source_filename = "coroutine_with_argument_having_deleter_and_move_ctor.cpp"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
-%struct.awaitable = type { i8 }
-%struct.task = type { i8 }
-%class.unique_ptr = type { ptr }
-%"struct.task::promise_type" = type { i8 }
-%"struct.std::suspend_never" = type { i8 }
-%"struct.std::coroutine_handle" = type { ptr }
-%"struct.std::coroutine_handle.0" = type { ptr }
-
-$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
-
-$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
-
-$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
-
-$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
-
-$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
-
-$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"??1unique_ptr@@QEAA at XZ" = comdat any
-
-$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
-
-$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
-  %1 = alloca %struct.awaitable, align 1
-  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
-  %3 = load i8, ptr %2, align 1
-  ret i8 %3
-}
-
-; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
-define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr noundef %0) #1 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca %struct.task, align 1
-  %3 = alloca ptr, align 8
-  %4 = alloca %class.unique_ptr, align 8
-  %5 = alloca %"struct.task::promise_type", align 1
-  %6 = alloca %"struct.std::suspend_never", align 1
-  %7 = alloca %struct.awaitable, align 1
-  %8 = alloca %"struct.std::suspend_never", align 1
-  store ptr %0, ptr %3, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %106
-
-9:                                                ; preds = %1
-  %10 = bitcast ptr %5 to ptr
-  %11 = call token @llvm.coro.id(i32 16, ptr %10, ptr null, ptr null)
-  %12 = call i1 @llvm.coro.alloc(token %11)
-  br i1 %12, label %13, label %17
-
-13:                                               ; preds = %9
-  %14 = call i64 @llvm.coro.size.i64()
-  %15 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %14) #14
-          to label %16 unwind label %106
-
-16:                                               ; preds = %13
-  br label %17
-
-17:                                               ; preds = %16, %9
-  %18 = phi ptr [ null, %9 ], [ %15, %16 ]
-  %19 = call ptr @llvm.coro.begin(token %11, ptr %18)
-  invoke void @llvm.seh.scope.begin()
-          to label %20 unwind label %95
-
-20:                                               ; preds = %17
-  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #4
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4, ptr align 8 %0, i64 8, i1 false)
-  invoke void @llvm.seh.scope.begin()
-          to label %21 unwind label %90
-
-21:                                               ; preds = %20
-  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #4
-  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%struct.task) align 1 %2)
-          to label %22 unwind label %88
-
-22:                                               ; preds = %21
-  invoke void @llvm.seh.scope.begin()
-          to label %23 unwind label %84
-
-23:                                               ; preds = %22
-  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #4
-  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %6)
-          to label %24 unwind label %43
-
-24:                                               ; preds = %23
-  %25 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
-  br i1 %25, label %30, label %26
-
-26:                                               ; preds = %24
-  %27 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %6, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__init") #4
-  %28 = call i8 @llvm.coro.suspend(token %27, i1 false)
-  switch i8 %28, label %82 [
-    i8 0, label %30
-    i8 1, label %29
-  ]
-
-29:                                               ; preds = %26
-  br label %31
-
-30:                                               ; preds = %26, %24
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %6) #4
-  br label %31
-
-31:                                               ; preds = %30, %29
-  %32 = phi i32 [ 0, %30 ], [ 2, %29 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
-  switch i32 %32, label %72 [
-    i32 0, label %33
-  ]
-
-33:                                               ; preds = %31
-  invoke void @llvm.seh.try.begin()
-          to label %34 unwind label %50
-
-34:                                               ; preds = %33
-  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
-  %35 = call i8 @"?switch_to_new_thread@@YA at XZ"()
-  %36 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
-          to label %37 unwind label %65
-
-37:                                               ; preds = %34
-  br i1 %36, label %45, label %38
-
-38:                                               ; preds = %37
-  %39 = call token @llvm.coro.save(ptr null)
-  invoke void @llvm.coro.await.suspend.void(ptr %7, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__await")
-          to label %40 unwind label %65
-
-40:                                               ; preds = %38
-  %41 = call i8 @llvm.coro.suspend(token %39, i1 false)
-  switch i8 %41, label %82 [
-    i8 0, label %45
-    i8 1, label %42
-  ]
-
-42:                                               ; preds = %40
-  br label %47
-
-43:                                               ; preds = %23
-  %44 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #4
-  cleanupret from %44 unwind label %84
-
-45:                                               ; preds = %40, %37
-  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %7)
-          to label %46 unwind label %65
-
-46:                                               ; preds = %45
-  br label %47
-
-47:                                               ; preds = %46, %42
-  %48 = phi i32 [ 0, %46 ], [ 2, %42 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
-  switch i32 %48, label %72 [
-    i32 0, label %49
-  ]
-
-49:                                               ; preds = %47
-  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5)
-          to label %64 unwind label %50
-
-50:                                               ; preds = %49, %65, %33
-  %51 = catchswitch within none [label %52] unwind label %84
-
-52:                                               ; preds = %50
-  %53 = catchpad within %51 [ptr null, i32 0, ptr null]
-  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %5) [ "funclet"(token %53) ]
-          to label %54 unwind label %84
-
-54:                                               ; preds = %52
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %53) ]
-          to label %55 unwind label %84
-
-55:                                               ; preds = %54
-  catchret from %53 to label %56
-
-56:                                               ; preds = %55
-  br label %57
-
-57:                                               ; preds = %56
-  br label %58
-
-58:                                               ; preds = %57, %64
-  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
-  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %5, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %8) #4
-  %59 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
-  br i1 %59, label %67, label %60
-
-60:                                               ; preds = %58
-  %61 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %8, ptr %19, ptr @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__final") #4
-  %62 = call i8 @llvm.coro.suspend(token %61, i1 true)
-  switch i8 %62, label %82 [
-    i8 0, label %67
-    i8 1, label %63
-  ]
-
-63:                                               ; preds = %60
-  br label %68
-
-64:                                               ; preds = %49
-  br label %58
-
-65:                                               ; preds = %45, %38, %34
-  %66 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
-  cleanupret from %66 unwind label %50
-
-67:                                               ; preds = %60, %58
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) #4
-  br label %68
-
-68:                                               ; preds = %67, %63
-  %69 = phi i32 [ 0, %67 ], [ 2, %63 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
-  switch i32 %69, label %72 [
-    i32 0, label %70
-  ]
-
-70:                                               ; preds = %68
-  invoke void @llvm.seh.scope.end()
-          to label %71 unwind label %84
-
-71:                                               ; preds = %70
-  br label %72
-
-72:                                               ; preds = %71, %68, %47, %31
-  %73 = phi i32 [ %32, %31 ], [ %48, %47 ], [ %69, %68 ], [ 0, %71 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
-  invoke void @llvm.seh.scope.end()
-          to label %74 unwind label %90
-
-74:                                               ; preds = %72
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
-  invoke void @llvm.seh.scope.end()
-          to label %75 unwind label %95
-
-75:                                               ; preds = %74
-  %76 = call ptr @llvm.coro.free(token %11, ptr %19)
-  %77 = icmp ne ptr %76, null
-  br i1 %77, label %78, label %80
-
-78:                                               ; preds = %75
-  %79 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %76, i64 noundef %79) #4
-  br label %80
-
-80:                                               ; preds = %75, %78
-  switch i32 %73, label %108 [
-    i32 0, label %81
-    i32 2, label %82
-  ]
-
-81:                                               ; preds = %80
-  br label %82
-
-82:                                               ; preds = %81, %80, %60, %40, %26
-  %83 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
-  invoke void @llvm.seh.scope.end()
-          to label %103 unwind label %106
-
-84:                                               ; preds = %70, %54, %52, %50, %43, %22
-  %85 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %85) ]
-          to label %86 unwind label %88
-
-86:                                               ; preds = %84
-  %87 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %85) ]
-  cleanupret from %85 unwind label %88
-
-88:                                               ; preds = %86, %84, %21
-  %89 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #4
-  cleanupret from %89 unwind label %90
-
-90:                                               ; preds = %72, %88, %20
-  %91 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %91) ]
-          to label %92 unwind label %93
-
-92:                                               ; preds = %90
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4 [ "funclet"(token %91) ]
-  cleanupret from %91 unwind label %93
-
-93:                                               ; preds = %92, %90
-  %94 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #4
-  cleanupret from %94 unwind label %95
-
-95:                                               ; preds = %74, %93, %17
-  %96 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %96) ]
-          to label %97 unwind label %106
-
-97:                                               ; preds = %95
-  %98 = call ptr @llvm.coro.free(token %11, ptr %19)
-  %99 = icmp ne ptr %98, null
-  br i1 %99, label %100, label %102
-
-100:                                              ; preds = %97
-  %101 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %98, i64 noundef %101) #4 [ "funclet"(token %96) ]
-  br label %102
-
-102:                                              ; preds = %97, %100
-  cleanupret from %96 unwind label %106
-
-103:                                              ; preds = %82
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %104 = getelementptr inbounds nuw %struct.task, ptr %2, i32 0, i32 0
-  %105 = load i8, ptr %104, align 1
-  ret i8 %105
-
-106:                                              ; preds = %82, %102, %95, %13, %1
-  %107 = cleanuppad within none []
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %107) ]
-  cleanupret from %107 unwind to caller
-
-108:                                              ; preds = %80
-  unreachable
-}
-
-declare dso_local i32 @__CxxFrameHandler3(...)
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.begin() #2
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #3
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.alloc(token) #4
-
-; Function Attrs: nobuiltin allocsize(0)
-declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
-
-; Function Attrs: nounwind memory(none)
-declare i64 @llvm.coro.size.i64() #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #4
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6
-
-; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #7
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 true
-}
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #8
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #9 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
-  %7 = load ptr, ptr %6, align 8
-  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
-  ret void
-}
-
-declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6
-
-; Function Attrs: nounwind willreturn memory(write)
-declare dso_local void @llvm.seh.try.begin() #10
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 false
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #9 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.end() #2
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #9 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %class.unique_ptr, ptr %3, i32 0, i32 0
-  %5 = load ptr, ptr %4, align 8
-  %6 = icmp eq ptr %5, null
-  br i1 %6, label %10, label %7
-
-7:                                                ; preds = %1
-  invoke void @llvm.seh.scope.begin()
-          to label %8 unwind label %11
-
-8:                                                ; preds = %7
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %11
-
-9:                                                ; preds = %8
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 4) #15
-  br label %10
-
-10:                                               ; preds = %9, %1
-  ret void
-
-11:                                               ; preds = %8, %7
-  %12 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %5, i64 noundef 4) #15 [ "funclet"(token %12) ]
-  cleanupret from %12 unwind to caller
-}
-
-; Function Attrs: nobuiltin nounwind
-declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #11
-
-; Function Attrs: nounwind memory(argmem: read)
-declare ptr @llvm.coro.free(token, ptr readonly captures(none)) #12
-
-; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
-define dso_local noundef i32 @main() #13 personality ptr @__CxxFrameHandler3 {
-  %1 = alloca %class.unique_ptr, align 8
-  %2 = alloca %class.unique_ptr, align 8
-  %3 = alloca %struct.task, align 1
-  invoke void @llvm.seh.scope.begin()
-          to label %4 unwind label %13
-
-4:                                                ; preds = %0
-  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2, ptr align 8 %1, i64 8, i1 false)
-  invoke void @llvm.seh.scope.begin()
-          to label %5 unwind label %10
-
-5:                                                ; preds = %4
-  invoke void @llvm.seh.scope.end()
-          to label %6 unwind label %10
-
-6:                                                ; preds = %5
-  %7 = invoke i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr noundef %2)
-          to label %8 unwind label %13
-
-8:                                                ; preds = %6
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %13
-
-9:                                                ; preds = %8
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
-  ret i32 0
-
-10:                                               ; preds = %5, %4
-  %11 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %11) ]
-          to label %12 unwind label %13
-
-12:                                               ; preds = %10
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4 [ "funclet"(token %11) ]
-  cleanupret from %11 unwind label %13
-
-13:                                               ; preds = %8, %6, %12, %10, %0
-  %14 = cleanuppad within none []
-  call void @"??1unique_ptr@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %14) ]
-  cleanupret from %14 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #2 = { nounwind memory(none) }
-attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #4 = { nounwind }
-attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
-attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
-attributes #8 = { nomerge nounwind }
-attributes #9 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
-attributes #10 = { nounwind willreturn memory(write) }
-attributes #11 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #12 = { nounwind memory(argmem: read) }
-attributes #13 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #14 = { allocsize(0) }
-attributes #15 = { builtin nounwind }
-
-!llvm.linker.options = !{!0, !1, !2}
-!llvm.module.flags = !{!3, !4, !5, !6, !7}
-!llvm.ident = !{!8}
-
-!0 = !{!"/DEFAULTLIB:libcmt.lib"}
-!1 = !{!"/DEFAULTLIB:oldnames.lib"}
-!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
-!3 = !{i32 1, !"wchar_size", i32 2}
-!4 = !{i32 2, !"eh-asynch", i32 1}
-!5 = !{i32 8, !"PIC Level", i32 2}
-!6 = !{i32 7, !"uwtable", i32 2}
-!7 = !{i32 1, !"MaxTLSAlign", i32 65536}
-!8 = !{!"clang version 21.0.0git (https://github.com/llvm/llvm-project.git e66c205bda33a91fbe2ba5b4a5d6b823e5c23e8a)"}

>From ffe458751dc5e03969891d19d9ff13140bc6e89f Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Thu, 31 Jul 2025 18:36:49 +0300
Subject: [PATCH 7/8] [Coroutines] reduced a test IR that introduces an
 unhandled edge-case not fixed at first

---
 .../pr148035_1_coroutine_w_2_std_unique.ll    | 931 ------------------
 ...035_not_implemented_terminator_for_pred.ll |  79 ++
 2 files changed, 79 insertions(+), 931 deletions(-)
 delete mode 100644 llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
 create mode 100644 llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll

diff --git a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll b/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
deleted file mode 100644
index 8758edb0b105d..0000000000000
--- a/llvm/test/Transforms/Coroutines/pr148035_1_coroutine_w_2_std_unique.ll
+++ /dev/null
@@ -1,931 +0,0 @@
-; This is a simple manipulation of the cppreference coroutine example, in llvm IR form, built with async exceptions flag.
-; the manipulation is that the coroutine function receives 2 arguments of std::unique_ptr
-; which are copied by value
-; crashed before fix because of the both validation mismatches:
-; "Unwind edges out of a funclet pad must have the same unwind dest"
-; and - "Instruction does not dominate all uses!"
-; RUN: opt < %s -passes=coro-split -S --debug | FileCheck %s
-; CHECK: define
-; ModuleID = 'C:\Dev\Projects\clang_asynch_exceptions_coroutines_bug\coroutine_with_2_unique_ptr_argument.cpp'
-source_filename = "C:\\Dev\\Projects\\clang_asynch_exceptions_coroutines_bug\\coroutine_with_2_unique_ptr_argument.cpp"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
-%struct.awaitable = type { i8 }
-%struct.task = type { i8 }
-%"class.std::unique_ptr" = type { %"class.std::_Compressed_pair" }
-%"class.std::_Compressed_pair" = type { ptr }
-%"struct.task::promise_type" = type { i8 }
-%"struct.std::suspend_never" = type { i8 }
-%"struct.std::_One_then_variadic_args_t" = type { i8 }
-%"struct.std::coroutine_handle" = type { ptr }
-%"struct.std::coroutine_handle.0" = type { ptr }
-%"struct.std::_Zero_then_variadic_args_t" = type { i8 }
-
-$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z" = comdat any
-
-$"?get_return_object at promise_type@task@@QEAA?AU2 at XZ" = comdat any
-
-$"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"?await_ready at suspend_never@std@@QEBA_NXZ" = comdat any
-
-$"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z" = comdat any
-
-$"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ" = comdat any
-
-$"?await_resume at suspend_never@std@@QEBAXXZ" = comdat any
-
-$"?return_void at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?unhandled_exception at promise_type@task@@QEAAXXZ" = comdat any
-
-$"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ" = comdat any
-
-$"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
-
-$"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ" = comdat any
-
-$"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ" = comdat any
-
-$"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
-
-$"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z" = comdat any
-
-$"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z" = comdat any
-
-$"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ" = comdat any
-
-$"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ" = comdat any
-
-$"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z" = comdat any
-
-$"??0?$coroutine_handle at X@std@@QEAA at XZ" = comdat any
-
-$"??R?$default_delete at H@std@@QEBAXPEAH at Z" = comdat any
-
-$"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z" = comdat any
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define dso_local i8 @"?switch_to_new_thread@@YA at XZ"() #0 {
-  %1 = alloca %struct.awaitable, align 1
-  %2 = getelementptr inbounds nuw %struct.awaitable, ptr %1, i32 0, i32 0
-  %3 = load i8, ptr %2, align 1
-  ret i8 %3
-}
-
-; Function Attrs: mustprogress noinline optnone presplitcoroutine sspstrong uwtable
-define dso_local i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr noundef %0, ptr noundef %1) #1 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca %struct.task, align 1
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca %"class.std::unique_ptr", align 8
-  %7 = alloca %"class.std::unique_ptr", align 8
-  %8 = alloca %"struct.task::promise_type", align 1
-  %9 = alloca %"struct.std::suspend_never", align 1
-  %10 = alloca %struct.awaitable, align 1
-  %11 = alloca %"struct.std::suspend_never", align 1
-  store ptr %1, ptr %4, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %12 unwind label %123
-
-12:                                               ; preds = %2
-  store ptr %0, ptr %5, align 8
-  invoke void @llvm.seh.scope.begin()
-          to label %13 unwind label %117
-
-13:                                               ; preds = %12
-  %14 = bitcast ptr %8 to ptr
-  %15 = call token @llvm.coro.id(i32 16, ptr %14, ptr null, ptr null)
-  %16 = call i1 @llvm.coro.alloc(token %15)
-  br i1 %16, label %17, label %21
-
-17:                                               ; preds = %13
-  %18 = call i64 @llvm.coro.size.i64()
-  %19 = invoke noalias noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef %18) #13
-          to label %20 unwind label %117
-
-20:                                               ; preds = %17
-  br label %21
-
-21:                                               ; preds = %20, %13
-  %22 = phi ptr [ null, %13 ], [ %19, %20 ]
-  %23 = call ptr @llvm.coro.begin(token %15, ptr %22)
-  invoke void @llvm.seh.scope.begin()
-          to label %24 unwind label %108
-
-24:                                               ; preds = %21
-  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
-  %25 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %26 unwind label %103
-
-26:                                               ; preds = %24
-  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
-  %27 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %1) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %28 unwind label %98
-
-28:                                               ; preds = %26
-  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
-  invoke void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%struct.task) align 1 %3)
-          to label %29 unwind label %96
-
-29:                                               ; preds = %28
-  invoke void @llvm.seh.scope.begin()
-          to label %30 unwind label %92
-
-30:                                               ; preds = %29
-  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #4
-  invoke void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %9)
-          to label %31 unwind label %50
-
-31:                                               ; preds = %30
-  %32 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %9) #4
-  br i1 %32, label %37, label %33
-
-33:                                               ; preds = %31
-  %34 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %9, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__init") #4
-  %35 = call i8 @llvm.coro.suspend(token %34, i1 false)
-  switch i8 %35, label %90 [
-    i8 0, label %37
-    i8 1, label %36
-  ]
-
-36:                                               ; preds = %33
-  br label %38
-
-37:                                               ; preds = %33, %31
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %9) #4
-  br label %38
-
-38:                                               ; preds = %37, %36
-  %39 = phi i32 [ 0, %37 ], [ 2, %36 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
-  switch i32 %39, label %79 [
-    i32 0, label %40
-  ]
-
-40:                                               ; preds = %38
-  invoke void @llvm.seh.try.begin()
-          to label %41 unwind label %57
-
-41:                                               ; preds = %40
-  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #4
-  %42 = call i8 @"?switch_to_new_thread@@YA at XZ"()
-  %43 = invoke noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10)
-          to label %44 unwind label %72
-
-44:                                               ; preds = %41
-  br i1 %43, label %52, label %45
-
-45:                                               ; preds = %44
-  %46 = call token @llvm.coro.save(ptr null)
-  invoke void @llvm.coro.await.suspend.void(ptr %10, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__await")
-          to label %47 unwind label %72
-
-47:                                               ; preds = %45
-  %48 = call i8 @llvm.coro.suspend(token %46, i1 false)
-  switch i8 %48, label %90 [
-    i8 0, label %52
-    i8 1, label %49
-  ]
-
-49:                                               ; preds = %47
-  br label %54
-
-50:                                               ; preds = %30
-  %51 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #4
-  cleanupret from %51 unwind label %92
-
-52:                                               ; preds = %47, %44
-  invoke void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %10)
-          to label %53 unwind label %72
-
-53:                                               ; preds = %52
-  br label %54
-
-54:                                               ; preds = %53, %49
-  %55 = phi i32 [ 0, %53 ], [ 2, %49 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
-  switch i32 %55, label %79 [
-    i32 0, label %56
-  ]
-
-56:                                               ; preds = %54
-  invoke void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8)
-          to label %71 unwind label %57
-
-57:                                               ; preds = %56, %72, %40
-  %58 = catchswitch within none [label %59] unwind label %92
-
-59:                                               ; preds = %57
-  %60 = catchpad within %58 [ptr null, i32 0, ptr null]
-  invoke void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %8) [ "funclet"(token %60) ]
-          to label %61 unwind label %92
-
-61:                                               ; preds = %59
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %60) ]
-          to label %62 unwind label %92
-
-62:                                               ; preds = %61
-  catchret from %60 to label %63
-
-63:                                               ; preds = %62
-  br label %64
-
-64:                                               ; preds = %63
-  br label %65
-
-65:                                               ; preds = %64, %71
-  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #4
-  call void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr dead_on_unwind writable sret(%"struct.std::suspend_never") align 1 %11) #4
-  %66 = call noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %11) #4
-  br i1 %66, label %74, label %67
-
-67:                                               ; preds = %65
-  %68 = call token @llvm.coro.save(ptr null)
-  call void @llvm.coro.await.suspend.void(ptr %11, ptr %23, ptr @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__final") #4
-  %69 = call i8 @llvm.coro.suspend(token %68, i1 true)
-  switch i8 %69, label %90 [
-    i8 0, label %74
-    i8 1, label %70
-  ]
-
-70:                                               ; preds = %67
-  br label %75
-
-71:                                               ; preds = %56
-  br label %65
-
-72:                                               ; preds = %52, %45, %41
-  %73 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
-  cleanupret from %73 unwind label %57
-
-74:                                               ; preds = %67, %65
-  call void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %11) #4
-  br label %75
-
-75:                                               ; preds = %74, %70
-  %76 = phi i32 [ 0, %74 ], [ 2, %70 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #4
-  switch i32 %76, label %79 [
-    i32 0, label %77
-  ]
-
-77:                                               ; preds = %75
-  invoke void @llvm.seh.scope.end()
-          to label %78 unwind label %92
-
-78:                                               ; preds = %77
-  br label %79
-
-79:                                               ; preds = %78, %75, %54, %38
-  %80 = phi i32 [ %39, %38 ], [ %55, %54 ], [ %76, %75 ], [ 0, %78 ]
-  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
-  invoke void @llvm.seh.scope.end()
-          to label %81 unwind label %98
-
-81:                                               ; preds = %79
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #4
-  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
-  invoke void @llvm.seh.scope.end()
-          to label %82 unwind label %103
-
-82:                                               ; preds = %81
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6) #4
-  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
-  invoke void @llvm.seh.scope.end()
-          to label %83 unwind label %108
-
-83:                                               ; preds = %82
-  %84 = call ptr @llvm.coro.free(token %15, ptr %23)
-  %85 = icmp ne ptr %84, null
-  br i1 %85, label %86, label %88
-
-86:                                               ; preds = %83
-  %87 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %84, i64 noundef %87) #4
-  br label %88
-
-88:                                               ; preds = %83, %86
-  switch i32 %80, label %125 [
-    i32 0, label %89
-    i32 2, label %90
-  ]
-
-89:                                               ; preds = %88
-  br label %90
-
-90:                                               ; preds = %89, %88, %67, %47, %33
-  %91 = call i1 @llvm.coro.end(ptr null, i1 false, token none)
-  invoke void @llvm.seh.scope.end()
-          to label %116 unwind label %117
-
-92:                                               ; preds = %77, %61, %59, %57, %50, %29
-  %93 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %93) ]
-          to label %94 unwind label %96
-
-94:                                               ; preds = %92
-  %95 = call i1 @llvm.coro.end(ptr null, i1 true, token none) [ "funclet"(token %93) ]
-  cleanupret from %93 unwind label %96
-
-96:                                               ; preds = %94, %92, %28
-  %97 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
-  cleanupret from %97 unwind label %98
-
-98:                                               ; preds = %79, %96, %26
-  %99 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %99) ]
-          to label %100 unwind label %101
-
-100:                                              ; preds = %98
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %7) #4 [ "funclet"(token %99) ]
-  cleanupret from %99 unwind label %101
-
-101:                                              ; preds = %100, %98
-  %102 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
-  cleanupret from %102 unwind label %103
-
-103:                                              ; preds = %81, %101, %24
-  %104 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %104) ]
-          to label %105 unwind label %106
-
-105:                                              ; preds = %103
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6) #4 [ "funclet"(token %104) ]
-  cleanupret from %104 unwind label %106
-
-106:                                              ; preds = %105, %103
-  %107 = cleanuppad within none []
-  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
-  cleanupret from %107 unwind label %108
-
-108:                                              ; preds = %82, %106, %21
-  %109 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %109) ]
-          to label %110 unwind label %117
-
-110:                                              ; preds = %108
-  %111 = call ptr @llvm.coro.free(token %15, ptr %23)
-  %112 = icmp ne ptr %111, null
-  br i1 %112, label %113, label %115
-
-113:                                              ; preds = %110
-  %114 = call i64 @llvm.coro.size.i64()
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %111, i64 noundef %114) #4 [ "funclet"(token %109) ]
-  br label %115
-
-115:                                              ; preds = %110, %113
-  cleanupret from %109 unwind label %117
-
-116:                                              ; preds = %90
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  invoke void @llvm.seh.scope.end()
-          to label %120 unwind label %123
-
-117:                                              ; preds = %90, %115, %108, %17, %12
-  %118 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %118) ]
-          to label %119 unwind label %123
-
-119:                                              ; preds = %117
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4 [ "funclet"(token %118) ]
-  cleanupret from %118 unwind label %123
-
-120:                                              ; preds = %116
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
-  %121 = getelementptr inbounds nuw %struct.task, ptr %3, i32 0, i32 0
-  %122 = load i8, ptr %121, align 1
-  ret i8 %122
-
-123:                                              ; preds = %116, %119, %117, %2
-  %124 = cleanuppad within none []
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %124) ]
-  cleanupret from %124 unwind to caller
-
-125:                                              ; preds = %88
-  unreachable
-}
-
-declare dso_local i32 @__CxxFrameHandler3(...)
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.begin() #2
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #3
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.alloc(token) #4
-
-; Function Attrs: nobuiltin allocsize(0)
-declare dso_local noundef nonnull ptr @"??2 at YAPEAX_K@Z"(i64 noundef) #5
-
-; Function Attrs: nounwind memory(none)
-declare i64 @llvm.coro.size.i64() #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #4
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA@$$QEAV01@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  %6 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %7, i32 0, i32 0
-  %9 = load ptr, ptr %3, align 8
-  %10 = call noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
-  store ptr %10, ptr %5, align 8
-  %11 = load ptr, ptr %3, align 8
-  %12 = call noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %11) #4
-  %13 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %6, i32 0, i32 0
-  %14 = load i8, ptr %13, align 1
-  %15 = call noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull align 8 dereferenceable(8) %8, i8 %14, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 8 dereferenceable(8) %5) #4
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?get_return_object at promise_type@task@@QEAA?AU2 at XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%struct.task) align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?initial_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef zeroext i1 @"?await_ready at suspend_never@std@@QEBA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 true
-}
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #7
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__init"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 comdat align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle.0") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %5, i32 0, i32 0
-  %7 = load ptr, ptr %6, align 8
-  call void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %1, ptr noundef %7) #4
-  ret void
-}
-
-declare void @llvm.coro.await.suspend.void(ptr, ptr, ptr)
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?await_resume at suspend_never@std@@QEBAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6
-
-; Function Attrs: nounwind willreturn memory(write)
-declare dso_local void @llvm.seh.try.begin() #9
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal noundef zeroext i1 @"?await_ready at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAA_NXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret i1 false
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__await"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11)
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_suspend at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXU?$coroutine_handle at X@std@@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 %1) #0 align 2 {
-  %3 = alloca %"struct.std::coroutine_handle", align 8
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  %6 = inttoptr i64 %1 to ptr
-  store ptr %6, ptr %5, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define internal void @"?await_resume at awaitable@?1??switch_to_new_thread@@YA at XZ@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?return_void at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?unhandled_exception at promise_type@task@@QEAAXXZ"(ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret void
-}
-
-; Function Attrs: nounwind memory(none)
-declare dso_local void @llvm.seh.scope.end() #2
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?final_suspend at promise_type@task@@QEAA?AUsuspend_never at std@@XZ"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr dead_on_unwind noalias writable sret(%"struct.std::suspend_never") align 1 %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  ret void
-}
-
-; Function Attrs: alwaysinline mustprogress
-define private void @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z.__await_suspend_wrapper__final"(ptr noundef nonnull %0, ptr noundef %1) #8 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca %"struct.std::coroutine_handle", align 8
-  %6 = alloca %"struct.std::coroutine_handle.0", align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %7 = load ptr, ptr %4, align 8
-  %8 = load ptr, ptr %3, align 8
-  call void @"?from_address@?$coroutine_handle at Upromise_type@task@@@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle.0") align 8 %6, ptr noundef %8) #4
-  call void @"??B?$coroutine_handle at Upromise_type@task@@@std@@QEBA?AU?$coroutine_handle at X@1 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr dead_on_unwind writable sret(%"struct.std::coroutine_handle") align 8 %5) #4
-  %9 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %5, i32 0, i32 0
-  %10 = load ptr, ptr %9, align 8
-  %11 = ptrtoint ptr %10 to i64
-  call void @"?await_suspend at suspend_never@std@@QEBAXU?$coroutine_handle at X@2@@Z"(ptr noundef nonnull align 1 dereferenceable(1) %7, i64 %11) #4
-  ret void
-}
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #4
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %4, i32 0, i32 0
-  %6 = load ptr, ptr %5, align 8
-  %7 = icmp ne ptr %6, null
-  br i1 %7, label %8, label %14
-
-8:                                                ; preds = %1
-  %9 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %10 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %9) #4
-  %11 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %11, i32 0, i32 0
-  %13 = load ptr, ptr %12, align 8
-  call void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef %13) #4
-  br label %14
-
-14:                                               ; preds = %8, %1
-  ret void
-}
-
-; Function Attrs: nobuiltin nounwind
-declare dso_local void @"??3 at YAXPEAX_K@Z"(ptr noundef, i64 noundef) #10
-
-; Function Attrs: nounwind memory(argmem: read)
-declare ptr @llvm.coro.free(token, ptr nocapture readonly) #11
-
-; Function Attrs: mustprogress noinline norecurse optnone sspstrong uwtable
-define dso_local noundef i32 @main() #12 personality ptr @__CxxFrameHandler3 {
-  %1 = alloca %"class.std::unique_ptr", align 8
-  %2 = alloca %"class.std::unique_ptr", align 8
-  %3 = alloca %struct.task, align 1
-  %4 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %5 unwind label %14
-
-5:                                                ; preds = %0
-  %6 = call noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4
-  invoke void @llvm.seh.scope.begin()
-          to label %7 unwind label %11
-
-7:                                                ; preds = %5
-  invoke void @llvm.seh.scope.end()
-          to label %8 unwind label %11
-
-8:                                                ; preds = %7
-  invoke void @llvm.seh.scope.end()
-          to label %9 unwind label %14
-
-9:                                                ; preds = %8
-  %10 = call i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr noundef %2, ptr noundef %1)
-  ret i32 0
-
-11:                                               ; preds = %7, %5
-  %12 = cleanuppad within none []
-  invoke void @llvm.seh.scope.end() [ "funclet"(token %12) ]
-          to label %13 unwind label %14
-
-13:                                               ; preds = %11
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %2) #4 [ "funclet"(token %12) ]
-  cleanupret from %12 unwind label %14
-
-14:                                               ; preds = %8, %13, %11, %0
-  %15 = cleanuppad within none []
-  call void @"??1?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %1) #4 [ "funclet"(token %15) ]
-  cleanupret from %15 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@$0A@@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
-  %7 = load i8, ptr %6, align 1
-  %8 = call noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull align 8 dereferenceable(8) %5, i8 %7) #4
-  ret ptr %4
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"?release@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAPEAHXZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  %3 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %4 = load ptr, ptr %2, align 8
-  store ptr null, ptr %3, align 8
-  %5 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %4, i32 0, i32 0
-  %6 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %5, i32 0, i32 0
-  %7 = call noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) #4
-  ret ptr %7
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?get_deleter@?$unique_ptr at HU?$default_delete at H@std@@@std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"class.std::unique_ptr", ptr %3, i32 0, i32 0
-  %5 = call noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %4) #4
-  ret ptr %5
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0U?$default_delete at H@std@@PEAH@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_One_then_variadic_args_t@1@$$QEAU?$default_delete at H@1@$$QEAPEAH at Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) unnamed_addr #0 comdat align 2 {
-  %5 = alloca %"struct.std::_One_then_variadic_args_t", align 1
-  %6 = alloca ptr, align 8
-  %7 = alloca ptr, align 8
-  %8 = alloca ptr, align 8
-  %9 = getelementptr inbounds nuw %"struct.std::_One_then_variadic_args_t", ptr %5, i32 0, i32 0
-  store i8 %1, ptr %9, align 1
-  store ptr %3, ptr %6, align 8
-  store ptr %2, ptr %7, align 8
-  store ptr %0, ptr %8, align 8
-  %10 = load ptr, ptr %8, align 8
-  %11 = load ptr, ptr %7, align 8
-  %12 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %10, i32 0, i32 0
-  %13 = load ptr, ptr %6, align 8
-  %14 = load ptr, ptr %13, align 8
-  store ptr %14, ptr %12, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$exchange at PEAH$$T at std@@YAPEAHAEAPEAH$$QEA$$T at Z"(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #0 comdat {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  %5 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = load ptr, ptr %6, align 8
-  store ptr %7, ptr %5, align 8
-  %8 = load ptr, ptr %3, align 8
-  %9 = load ptr, ptr %4, align 8
-  store ptr null, ptr %9, align 8
-  %10 = load ptr, ptr %5, align 8
-  ret ptr %10
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @"?_Get_first@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAAAEAU?$default_delete at H@2 at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at Upromise_type@task@@@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle.0", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"?from_address@?$coroutine_handle at X@std@@SA?AU12 at QEAX@Z"(ptr dead_on_unwind noalias writable sret(%"struct.std::coroutine_handle") align 8 %0, ptr noundef %1) #0 comdat align 2 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %0, ptr %3, align 8
-  store ptr %1, ptr %4, align 8
-  %5 = call noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %0, i32 0, i32 0
-  store ptr %6, ptr %7, align 8
-  ret void
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??0?$coroutine_handle at X@std@@QEAA at XZ"(ptr noundef nonnull returned align 8 dereferenceable(8) %0) unnamed_addr #0 comdat align 2 {
-  %2 = alloca ptr, align 8
-  store ptr %0, ptr %2, align 8
-  %3 = load ptr, ptr %2, align 8
-  %4 = getelementptr inbounds nuw %"struct.std::coroutine_handle", ptr %3, i32 0, i32 0
-  store ptr null, ptr %4, align 8
-  ret ptr %3
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local void @"??R?$default_delete at H@std@@QEBAXPEAH at Z"(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #0 comdat align 2 personality ptr @__CxxFrameHandler3 {
-  %3 = alloca ptr, align 8
-  %4 = alloca ptr, align 8
-  store ptr %1, ptr %3, align 8
-  store ptr %0, ptr %4, align 8
-  %5 = load ptr, ptr %4, align 8
-  %6 = load ptr, ptr %3, align 8
-  %7 = icmp eq ptr %6, null
-  br i1 %7, label %11, label %8
-
-8:                                                ; preds = %2
-  invoke void @llvm.seh.scope.begin()
-          to label %9 unwind label %12
-
-9:                                                ; preds = %8
-  invoke void @llvm.seh.scope.end()
-          to label %10 unwind label %12
-
-10:                                               ; preds = %9
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14
-  br label %11
-
-11:                                               ; preds = %10, %2
-  ret void
-
-12:                                               ; preds = %9, %8
-  %13 = cleanuppad within none []
-  call void @"??3 at YAXPEAX_K@Z"(ptr noundef %6, i64 noundef 4) #14 [ "funclet"(token %13) ]
-  cleanupret from %13 unwind to caller
-}
-
-; Function Attrs: mustprogress noinline nounwind optnone sspstrong uwtable
-define linkonce_odr dso_local noundef ptr @"??$?0$$V@?$_Compressed_pair at U?$default_delete at H@std@@PEAH$00 at std@@QEAA at U_Zero_then_variadic_args_t@1@@Z"(ptr noundef nonnull returned align 8 dereferenceable(8) %0, i8 %1) unnamed_addr #0 comdat align 2 {
-  %3 = alloca %"struct.std::_Zero_then_variadic_args_t", align 1
-  %4 = alloca ptr, align 8
-  %5 = getelementptr inbounds nuw %"struct.std::_Zero_then_variadic_args_t", ptr %3, i32 0, i32 0
-  store i8 %1, ptr %5, align 1
-  store ptr %0, ptr %4, align 8
-  %6 = load ptr, ptr %4, align 8
-  %7 = getelementptr inbounds nuw %"class.std::_Compressed_pair", ptr %6, i32 0, i32 0
-  store ptr null, ptr %7, align 8
-  ret ptr %6
-}
-
-attributes #0 = { mustprogress noinline nounwind optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #1 = { mustprogress noinline optnone presplitcoroutine sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #2 = { nounwind memory(none) }
-attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #4 = { nounwind }
-attributes #5 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
-attributes #7 = { nomerge nounwind }
-attributes #8 = { alwaysinline mustprogress "min-legal-vector-width"="0" }
-attributes #9 = { nounwind willreturn memory(write) }
-attributes #10 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #11 = { nounwind memory(argmem: read) }
-attributes #12 = { mustprogress noinline norecurse optnone sspstrong uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
-attributes #13 = { allocsize(0) }
-attributes #14 = { builtin nounwind }
-
-!llvm.linker.options = !{!0, !1, !2, !3, !4, !5, !6, !7}
-!llvm.module.flags = !{!8, !9, !10, !11, !12}
-!llvm.ident = !{!13}
-
-!0 = !{!"/DEFAULTLIB:libcmt.lib"}
-!1 = !{!"/DEFAULTLIB:oldnames.lib"}
-!2 = !{!"/FAILIFMISMATCH:\22_COROUTINE_ABI=2\22"}
-!3 = !{!"/FAILIFMISMATCH:\22_MSC_VER=1900\22"}
-!4 = !{!"/FAILIFMISMATCH:\22_ITERATOR_DEBUG_LEVEL=0\22"}
-!5 = !{!"/FAILIFMISMATCH:\22RuntimeLibrary=MT_StaticRelease\22"}
-!6 = !{!"/DEFAULTLIB:libcpmt.lib"}
-!7 = !{!"/FAILIFMISMATCH:\22_CRT_STDIO_ISO_WIDE_SPECIFIERS=0\22"}
-!8 = !{i32 1, !"wchar_size", i32 2}
-!9 = !{i32 2, !"eh-asynch", i32 1}
-!10 = !{i32 8, !"PIC Level", i32 2}
-!11 = !{i32 7, !"uwtable", i32 2}
-!12 = !{i32 1, !"MaxTLSAlign", i32 65536}
-!13 = !{!"clang version 20.1.6"}
diff --git a/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll b/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll
new file mode 100644
index 0000000000000..ed9193acf7ce2
--- /dev/null
+++ b/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll
@@ -0,0 +1,79 @@
+; In coro-split, this coroutine code reduced IR, produced using clang with async-exceptions
+; crashed after first phase of fix because the terminator cleanupret was not implemented on predecessor fixer at the time
+; RUN: opt < %s -passes='coro-split' -S
+; RUN: opt < %s -passes='default<Os>,coro-split' -S
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.38.33135"
+
+; Function Attrs: presplitcoroutine
+define i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr %0) #0 personality ptr null {
+  invoke void @llvm.seh.scope.begin()
+          to label %2 unwind label %15
+
+2:                                                ; preds = %1
+  %3 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
+  %4 = call ptr @llvm.coro.begin(token %3, ptr null)
+  %5 = call token @llvm.coro.save(ptr null)
+  %6 = call i8 @llvm.coro.suspend(token none, i1 false)
+  invoke void @llvm.seh.try.begin()
+          to label %7 unwind label %8
+
+7:                                                ; preds = %2
+  ret i8 0
+
+8:                                                ; preds = %2
+  %9 = catchswitch within none [label %10] unwind label %12
+
+10:                                               ; preds = %8
+  %11 = catchpad within %9 [ptr null, i32 0, ptr null]
+  ret i8 0
+
+12:                                               ; preds = %8
+  %13 = cleanuppad within none []
+  invoke void @llvm.seh.scope.end()
+          to label %14 unwind label %15
+
+14:                                               ; preds = %12
+  ret i8 0
+
+15:                                               ; preds = %12, %1
+  %16 = cleanuppad within none []
+  cleanupret from %16 unwind label %17
+
+17:                                               ; preds = %15
+  %18 = cleanuppad within none []
+  store i32 0, ptr %0, align 4
+  cleanupret from %18 unwind to caller
+}
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.begin() #1
+
+; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
+declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #2
+
+; Function Attrs: nounwind
+declare ptr @llvm.coro.begin(token, ptr writeonly) #3
+
+; Function Attrs: nomerge nounwind
+declare token @llvm.coro.save(ptr) #4
+
+; Function Attrs: nounwind
+declare i8 @llvm.coro.suspend(token, i1) #3
+
+; Function Attrs: nounwind willreturn memory(write)
+declare void @llvm.seh.try.begin() #5
+
+; Function Attrs: nounwind memory(none)
+declare void @llvm.seh.scope.end() #1
+
+attributes #0 = { presplitcoroutine }
+attributes #1 = { nounwind memory(none) }
+attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
+attributes #3 = { nounwind }
+attributes #4 = { nomerge nounwind }
+attributes #5 = { nounwind willreturn memory(write) }
+
+!llvm.module.flags = !{!0}
+
+!0 = !{i32 2, !"eh-asynch", i32 1}

>From c8b944c2308565ca5de5b94f2d484d5c6ca41608 Mon Sep 17 00:00:00 2001
From: tzuralon <15824496+tzuralon at users.noreply.github.com>
Date: Sun, 3 Aug 2025 08:35:38 +0300
Subject: [PATCH 8/8] [Coroutines] reduced the IR tests a bit more by reducing
 unneccesary declarations

---
 .../pr148035_inst_does_not_dominate.ll        | 31 ------------------
 .../pr148035_inst_does_not_dominate_2.ll      | 31 ------------------
 ...035_not_implemented_terminator_for_pred.ll | 28 ----------------
 ...48035_unwind_edges_not_having_same_dest.ll | 32 -------------------
 ...035_unwind_edges_not_having_same_dest_2.ll | 32 -------------------
 5 files changed, 154 deletions(-)

diff --git a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
index 931b0cd4d548b..64de2d2b10be0 100644
--- a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
+++ b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate.ll
@@ -2,8 +2,6 @@
 ; crashed before fix because of the validation mismatch of Instruction does not dominate all uses!
 ; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
 ; RUN: opt < %s -passes='default<Os>,coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
 
 ; Function Attrs: presplitcoroutine
 define i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr %0) #0 personality ptr null {
@@ -40,36 +38,7 @@ common.ret:                                       ; preds = %12, %10, %2
   cleanupret from %15 unwind to caller
 }
 
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.begin() #1
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #3
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #4
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #3
-
-; Function Attrs: nounwind willreturn memory(write)
-declare void @llvm.seh.try.begin() #5
-
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.end() #1
-
-; uselistorder directives
-uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
-
 attributes #0 = { presplitcoroutine }
-attributes #1 = { nounwind memory(none) }
-attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #3 = { nounwind }
-attributes #4 = { nomerge nounwind }
-attributes #5 = { nounwind willreturn memory(write) }
 
 !llvm.module.flags = !{!0}
 
diff --git a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
index 2248fcc65fcc4..d327f8853db5a 100644
--- a/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
+++ b/llvm/test/Transforms/Coroutines/pr148035_inst_does_not_dominate_2.ll
@@ -2,8 +2,6 @@
 ; crashed before fix because of the validation mismatch of Instruction does not dominate all uses!
 ; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
 ; RUN: opt < %s -passes='default<Os>,coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Instruction does not dominate all uses!"
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
 
 ; Function Attrs: presplitcoroutine
 define i8 @"?resuming_on_new_thread@@YA?AUtask@@Vunique_ptr@@@Z"(ptr %0) #0 personality ptr null {
@@ -40,36 +38,7 @@ common.ret:                                       ; preds = %12, %10, %2
   br label %common.ret
 }
 
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.begin() #1
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #3
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #4
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #3
-
-; Function Attrs: nounwind willreturn memory(write)
-declare void @llvm.seh.try.begin() #5
-
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.end() #1
-
-; uselistorder directives
-uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }
-
 attributes #0 = { presplitcoroutine }
-attributes #1 = { nounwind memory(none) }
-attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #3 = { nounwind }
-attributes #4 = { nomerge nounwind }
-attributes #5 = { nounwind willreturn memory(write) }
 
 !llvm.module.flags = !{!0}
 
diff --git a/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll b/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll
index ed9193acf7ce2..7b16b9c248a27 100644
--- a/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll
+++ b/llvm/test/Transforms/Coroutines/pr148035_not_implemented_terminator_for_pred.ll
@@ -2,8 +2,6 @@
 ; crashed after first phase of fix because the terminator cleanupret was not implemented on predecessor fixer at the time
 ; RUN: opt < %s -passes='coro-split' -S
 ; RUN: opt < %s -passes='default<Os>,coro-split' -S
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
 
 ; Function Attrs: presplitcoroutine
 define i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete at H@std@@@std@@0 at Z"(ptr %0) #0 personality ptr null {
@@ -46,33 +44,7 @@ define i8 @"?resuming_on_new_thread@@YA?AUtask@@V?$unique_ptr at HU?$default_delete
   cleanupret from %18 unwind to caller
 }
 
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.begin() #1
-
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr readonly captures(none), ptr) #2
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #3
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #4
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #3
-
-; Function Attrs: nounwind willreturn memory(write)
-declare void @llvm.seh.try.begin() #5
-
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.end() #1
-
 attributes #0 = { presplitcoroutine }
-attributes #1 = { nounwind memory(none) }
-attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #3 = { nounwind }
-attributes #4 = { nomerge nounwind }
-attributes #5 = { nounwind willreturn memory(write) }
 
 !llvm.module.flags = !{!0}
 
diff --git a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll
index 500126f77494a..997346f5e3d0c 100644
--- a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll
+++ b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest.ll
@@ -2,9 +2,6 @@
 ; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
 ; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Unwind edges out of a funclet pad must have the same unwind dest"
 
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
 ; Function Attrs: presplitcoroutine
 define i8 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"() #0 personality ptr null {
   %1 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
@@ -38,36 +35,7 @@ common.ret:                                       ; preds = %13, %7, %0
   br label %common.ret
 }
 
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #1
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #2
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #3
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #2
-
-; Function Attrs: nounwind willreturn memory(write)
-declare void @llvm.seh.try.begin() #4
-
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.end() #5
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #2
-
-; uselistorder directives
-uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 }
-
 attributes #0 = { presplitcoroutine }
-attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #2 = { nounwind }
-attributes #3 = { nomerge nounwind }
-attributes #4 = { nounwind willreturn memory(write) }
-attributes #5 = { nounwind memory(none) }
 
 !llvm.module.flags = !{!0}
 
diff --git a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll
index b2ba6a1409216..4b6163f45a53c 100644
--- a/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll
+++ b/llvm/test/Transforms/Coroutines/pr148035_unwind_edges_not_having_same_dest_2.ll
@@ -2,9 +2,6 @@
 ; crashed before fix because of the validation mismatch of Unwind edges out of a funclet pad must have the same unwind dest
 ; RUN: opt < %s -passes='coro-split' -S 2>&1 | FileCheck %s --implicit-check-not="Unwind edges out of a funclet pad must have the same unwind dest"
 
-target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-pc-windows-msvc19.38.33135"
-
 ; Function Attrs: presplitcoroutine
 define i1 @"?resuming_on_new_thread@@YA?AUtask@@AEAVjthread at std@@@Z"() #0 personality ptr null {
   %1 = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null)
@@ -39,36 +36,7 @@ common.ret:                                       ; preds = %11, %13, %7, %0
   br label %common.ret
 }
 
-; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
-declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #1
-
-; Function Attrs: nounwind
-declare ptr @llvm.coro.begin(token, ptr writeonly) #2
-
-; Function Attrs: nomerge nounwind
-declare token @llvm.coro.save(ptr) #3
-
-; Function Attrs: nounwind
-declare i8 @llvm.coro.suspend(token, i1) #2
-
-; Function Attrs: nounwind willreturn memory(write)
-declare void @llvm.seh.try.begin() #4
-
-; Function Attrs: nounwind memory(none)
-declare void @llvm.seh.scope.end() #5
-
-; Function Attrs: nounwind
-declare i1 @llvm.coro.end(ptr, i1, token) #2
-
-; uselistorder directives
-uselistorder ptr null, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 }
-
 attributes #0 = { presplitcoroutine }
-attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
-attributes #2 = { nounwind }
-attributes #3 = { nomerge nounwind }
-attributes #4 = { nounwind willreturn memory(write) }
-attributes #5 = { nounwind memory(none) }
 
 !llvm.module.flags = !{!0}
 



More information about the llvm-commits mailing list