; LLVM IR from sympiler/nasoq :: nasoq_driver/ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_7746384f (3SMPE)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl" }
%"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.format::SMP" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"struct.format::Description", ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double, ptr, ptr, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.format::Description" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"struct.format::CSC" = type { i64, i64, i64, i32, i8, i8, ptr, ptr, ptr }
%"struct.format::Dense" = type { i64, i64, i64, ptr }
%"struct.format::constraint" = type { i32, double }

@.str.130 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE = external hidden unnamed_addr constant [84 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, i64 noundef) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef, double noundef, double noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format10constraintC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #6 personality ptr @__gxx_personality_v0 {
  %6 = alloca i1, align 1
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::vector.65", align 8
  %22 = alloca %"class.std::vector.70", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i64, align 8
  %33 = alloca i1, align 1
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca i1, align 1
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca double, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %57 = load ptr, ptr %9, align 8, !tbaa !5
  %58 = icmp ne ptr %57, null
  br i1 %58, label %74, label %59

59:                                               ; preds = %5
  %60 = load ptr, ptr %11, align 8, !tbaa !5
  %61 = getelementptr inbounds %"struct.format::SMP", ptr %60, i32 0, i32 12
  store ptr null, ptr %61, align 8, !tbaa !9
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.format::SMP", ptr %62, i32 0, i32 11
  store ptr null, ptr %63, align 8, !tbaa !17
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.format::SMP", ptr %64, i32 0, i32 10
  store ptr null, ptr %65, align 8, !tbaa !18
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.format::SMP", ptr %66, i32 0, i32 8
  store ptr null, ptr %67, align 8, !tbaa !19
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.format::SMP", ptr %68, i32 0, i32 6
  store ptr null, ptr %69, align 8, !tbaa !20
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.format::SMP", ptr %70, i32 0, i32 7
  store ptr null, ptr %71, align 8, !tbaa !21
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %"struct.format::SMP", ptr %72, i32 0, i32 5
  store ptr null, ptr %73, align 8, !tbaa !22
  store i1 true, ptr %6, align 1
  br label %988

74:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #9
  store i8 0, ptr %12, align 1, !tbaa !23
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = icmp ne ptr %75, null
  br i1 %76, label %80, label %77

77:                                               ; preds = %74
  %78 = load ptr, ptr %9, align 8, !tbaa !5
  %79 = call noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef %78)
  store ptr %79, ptr %10, align 8, !tbaa !5
  store i8 1, ptr %12, align 1, !tbaa !23
  br label %80

80:                                               ; preds = %77, %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 0, ptr %13, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %81 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
  invoke void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %81)
          to label %82 unwind label %150

82:                                               ; preds = %80
  store ptr %81, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %83 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
  invoke void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %83)
          to label %84 unwind label %154

84:                                               ; preds = %82
  store ptr %83, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #9
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #9
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %85 = load ptr, ptr %9, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.format::CSC", ptr %85, i32 0, i32 1
  %87 = load i64, ptr %86, align 8, !tbaa !26
  %88 = trunc i64 %87 to i32
  store i32 %88, ptr %23, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %89 = load ptr, ptr %9, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.format::CSC", ptr %89, i32 0, i32 0
  %91 = load i64, ptr %90, align 8, !tbaa !28
  %92 = trunc i64 %91 to i32
  store i32 %92, ptr %24, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %93 = load i32, ptr %23, align 4, !tbaa !25
  %94 = sext i32 %93 to i64
  %95 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %94, i64 4)
  %96 = extractvalue { i64, i1 } %95, 1
  %97 = extractvalue { i64, i1 } %95, 0
  %98 = select i1 %96, i64 -1, i64 %97
  %99 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %98) #10
          to label %100 unwind label %158

100:                                              ; preds = %84
  call void @llvm.memset.p0.i64(ptr align 4 %99, i8 0, i64 %98, i1 false)
  store ptr %99, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %101 = load i32, ptr %23, align 4, !tbaa !25
  %102 = sext i32 %101 to i64
  %103 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %102, i64 4)
  %104 = extractvalue { i64, i1 } %103, 1
  %105 = extractvalue { i64, i1 } %103, 0
  %106 = select i1 %104, i64 -1, i64 %105
  %107 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %106) #10
          to label %108 unwind label %162

108:                                              ; preds = %100
  call void @llvm.memset.p0.i64(ptr align 4 %107, i8 0, i64 %106, i1 false)
  store ptr %107, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  %110 = icmp ne ptr %109, null
  store i1 false, ptr %33, align 1
  br i1 %110, label %111, label %115

111:                                              ; preds = %108
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.format::Dense", ptr %112, i32 0, i32 3
  %114 = load ptr, ptr %113, align 8, !tbaa !29
  br label %124

115:                                              ; preds = %108
  %116 = load i32, ptr %24, align 4, !tbaa !25
  %117 = sext i32 %116 to i64
  %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 8)
  %119 = extractvalue { i64, i1 } %118, 1
  %120 = extractvalue { i64, i1 } %118, 0
  %121 = select i1 %119, i64 -1, i64 %120
  %122 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %121) #10
          to label %123 unwind label %166

123:                                              ; preds = %115
  store ptr %122, ptr %31, align 8
  store i64 %121, ptr %32, align 8
  store i1 true, ptr %33, align 1
  br label %124

124:                                              ; preds = %123, %111
  %125 = phi ptr [ %114, %111 ], [ %122, %123 ]
  store ptr %125, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  %127 = icmp ne ptr %126, null
  store i1 false, ptr %37, align 1
  br i1 %127, label %128, label %132

128:                                              ; preds = %124
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.format::Dense", ptr %129, i32 0, i32 3
  %131 = load ptr, ptr %130, align 8, !tbaa !29
  br label %141

132:                                              ; preds = %124
  %133 = load i32, ptr %24, align 4, !tbaa !25
  %134 = sext i32 %133 to i64
  %135 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %134, i64 8)
  %136 = extractvalue { i64, i1 } %135, 1
  %137 = extractvalue { i64, i1 } %135, 0
  %138 = select i1 %136, i64 -1, i64 %137
  %139 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %138) #10
          to label %140 unwind label %170

140:                                              ; preds = %132
  store ptr %139, ptr %35, align 8
  store i64 %138, ptr %36, align 8
  store i1 true, ptr %37, align 1
  br label %141

141:                                              ; preds = %140, %128
  %142 = phi ptr [ %131, %128 ], [ %139, %140 ]
  store ptr %142, ptr %34, align 8, !tbaa !5
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %178, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %30, align 8, !tbaa !5
  %147 = load i32, ptr %24, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  store double -1.000000e+20, ptr %38, align 8, !tbaa !31
  %148 = invoke noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef %146, i32 noundef %147, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %149 unwind label %174

149:                                              ; preds = %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %178

150:                                              ; preds = %80
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %18, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %81, i64 noundef 56) #11
  br label %987

154:                                              ; preds = %82
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %18, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %83, i64 noundef 56) #11
  br label %986

158:                                              ; preds = %84
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %18, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %19, align 4
  br label %985

162:                                              ; preds = %100
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %18, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %19, align 4
  br label %984

166:                                              ; preds = %115
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %18, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %19, align 4
  br label %983

170:                                              ; preds = %880, %740, %730, %713, %684, %531, %521, %504, %207, %195, %190, %132
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %18, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %19, align 4
  br label %982

174:                                              ; preds = %145
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %18, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %982

178:                                              ; preds = %149, %141
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = icmp ne ptr %179, null
  br i1 %180, label %190, label %181

181:                                              ; preds = %178
  %182 = load ptr, ptr %30, align 8, !tbaa !5
  %183 = load i32, ptr %24, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  store double 1.000000e+20, ptr %39, align 8, !tbaa !31
  %184 = invoke noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef %182, i32 noundef %183, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %185 unwind label %186

185:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %190

186:                                              ; preds = %181
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %18, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %982

190:                                              ; preds = %185, %178
  %191 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %192 unwind label %170

192:                                              ; preds = %190
  %193 = load i32, ptr %24, align 4, !tbaa !25
  %194 = sext i32 %193 to i64
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %191, i64 noundef %194, i64 noundef 1, i64 noundef 1)
          to label %195 unwind label %238

195:                                              ; preds = %192
  %196 = load ptr, ptr %11, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.format::SMP", ptr %196, i32 0, i32 10
  store ptr %191, ptr %197, align 8, !tbaa !18
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.format::SMP", ptr %198, i32 0, i32 10
  %200 = load ptr, ptr %199, align 8, !tbaa !18
  %201 = getelementptr inbounds %"struct.format::Dense", ptr %200, i32 0, i32 3
  %202 = load ptr, ptr %201, align 8, !tbaa !29
  store ptr %202, ptr %27, align 8, !tbaa !5
  %203 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %204 unwind label %170

204:                                              ; preds = %195
  %205 = load i32, ptr %24, align 4, !tbaa !25
  %206 = sext i32 %205 to i64
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %203, i64 noundef %206, i64 noundef 1, i64 noundef 1)
          to label %207 unwind label %242

207:                                              ; preds = %204
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.format::SMP", ptr %208, i32 0, i32 11
  store ptr %203, ptr %209, align 8, !tbaa !17
  %210 = load ptr, ptr %11, align 8, !tbaa !5
  %211 = getelementptr inbounds %"struct.format::SMP", ptr %210, i32 0, i32 11
  %212 = load ptr, ptr %211, align 8, !tbaa !17
  %213 = getelementptr inbounds %"struct.format::Dense", ptr %212, i32 0, i32 3
  %214 = load ptr, ptr %213, align 8, !tbaa !29
  store ptr %214, ptr %28, align 8, !tbaa !5
  %215 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 32) #10
          to label %216 unwind label %170

216:                                              ; preds = %207
  %217 = load i32, ptr %24, align 4, !tbaa !25
  %218 = sext i32 %217 to i64
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %215, i64 noundef %218, i64 noundef 1, i64 noundef 1)
          to label %219 unwind label %246

219:                                              ; preds = %216
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.format::SMP", ptr %220, i32 0, i32 12
  store ptr %215, ptr %221, align 8, !tbaa !9
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.format::SMP", ptr %222, i32 0, i32 12
  %224 = load ptr, ptr %223, align 8, !tbaa !9
  %225 = getelementptr inbounds %"struct.format::Dense", ptr %224, i32 0, i32 3
  %226 = load ptr, ptr %225, align 8, !tbaa !29
  store ptr %226, ptr %29, align 8, !tbaa !5
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load ptr, ptr %11, align 8, !tbaa !5
  %229 = getelementptr inbounds %"struct.format::SMP", ptr %228, i32 0, i32 8
  store ptr %227, ptr %229, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  store i32 0, ptr %40, align 4, !tbaa !25
  br label %230

230:                                              ; preds = %477, %219
  %231 = load i32, ptr %40, align 4, !tbaa !25
  %232 = sext i32 %231 to i64
  %233 = load ptr, ptr %9, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.format::CSC", ptr %233, i32 0, i32 0
  %235 = load i64, ptr %234, align 8, !tbaa !28
  %236 = icmp ult i64 %232, %235
  br i1 %236, label %250, label %237

237:                                              ; preds = %230
  store i32 2, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %481

238:                                              ; preds = %192
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %18, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %191, i64 noundef 32) #11
  br label %982

242:                                              ; preds = %204
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %18, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %203, i64 noundef 32) #11
  br label %982

246:                                              ; preds = %216
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %18, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %215, i64 noundef 32) #11
  br label %982

250:                                              ; preds = %230
  %251 = load ptr, ptr %30, align 8, !tbaa !5
  %252 = load i32, ptr %40, align 4, !tbaa !25
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %251, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !31
  %256 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %255, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %257 unwind label %299

257:                                              ; preds = %250
  br i1 %256, label %258, label %266

258:                                              ; preds = %257
  %259 = load ptr, ptr %34, align 8, !tbaa !5
  %260 = load i32, ptr %40, align 4, !tbaa !25
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %259, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !31
  %264 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %263, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %265 unwind label %299

265:                                              ; preds = %258
  br i1 %264, label %298, label %266

266:                                              ; preds = %265, %257
  %267 = load ptr, ptr %30, align 8, !tbaa !5
  %268 = load i32, ptr %40, align 4, !tbaa !25
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %267, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !31
  %272 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %271, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %273 unwind label %299

273:                                              ; preds = %266
  br i1 %272, label %274, label %282

274:                                              ; preds = %273
  %275 = load ptr, ptr %34, align 8, !tbaa !5
  %276 = load i32, ptr %40, align 4, !tbaa !25
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %275, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !31
  %280 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %279, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %281 unwind label %299

281:                                              ; preds = %274
  br i1 %280, label %298, label %282

282:                                              ; preds = %281, %273
  %283 = load ptr, ptr %30, align 8, !tbaa !5
  %284 = load i32, ptr %40, align 4, !tbaa !25
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %283, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !31
  %288 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %287, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %289 unwind label %299

289:                                              ; preds = %282
  br i1 %288, label %290, label %303

290:                                              ; preds = %289
  %291 = load ptr, ptr %34, align 8, !tbaa !5
  %292 = load i32, ptr %40, align 4, !tbaa !25
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !31
  %296 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %295, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %297 unwind label %299

297:                                              ; preds = %290
  br i1 %296, label %298, label %303

298:                                              ; preds = %297, %281, %265
  br label %477

299:                                              ; preds = %316, %303, %290, %282, %274, %266, %258, %250
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %18, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %19, align 4
  br label %480

303:                                              ; preds = %297, %289
  %304 = load ptr, ptr %30, align 8, !tbaa !5
  %305 = load i32, ptr %40, align 4, !tbaa !25
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %304, i64 %306
  %308 = load double, ptr %307, align 8, !tbaa !31
  %309 = load ptr, ptr %34, align 8, !tbaa !5
  %310 = load i32, ptr %40, align 4, !tbaa !25
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %309, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !31
  %314 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %308, double noundef %313, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %315 unwind label %299

315:                                              ; preds = %303
  br i1 %314, label %316, label %383

316:                                              ; preds = %315
  %317 = load ptr, ptr %30, align 8, !tbaa !5
  %318 = load i32, ptr %40, align 4, !tbaa !25
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %317, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !31
  %322 = load ptr, ptr %27, align 8, !tbaa !5
  %323 = load i32, ptr %13, align 4, !tbaa !25
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  store double %321, ptr %325, align 8, !tbaa !31
  %326 = load i32, ptr %13, align 4, !tbaa !25
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %13, align 4, !tbaa !25
  %328 = load ptr, ptr %10, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.format::CSC", ptr %328, i32 0, i32 6
  %330 = load ptr, ptr %329, align 8, !tbaa !32
  %331 = load i32, ptr %40, align 4, !tbaa !25
  %332 = add nsw i32 %331, 1
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds i32, ptr %330, i64 %333
  %335 = load i32, ptr %334, align 4, !tbaa !25
  %336 = load ptr, ptr %10, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.format::CSC", ptr %336, i32 0, i32 6
  %338 = load ptr, ptr %337, align 8, !tbaa !32
  %339 = load i32, ptr %40, align 4, !tbaa !25
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds i32, ptr %338, i64 %340
  %342 = load i32, ptr %341, align 4, !tbaa !25
  %343 = sub nsw i32 %335, %342
  %344 = load i32, ptr %14, align 4, !tbaa !25
  %345 = add nsw i32 %344, %343
  store i32 %345, ptr %14, align 4, !tbaa !25
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %346 unwind label %299

346:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.format::CSC", ptr %347, i32 0, i32 6
  %349 = load ptr, ptr %348, align 8, !tbaa !32
  %350 = load i32, ptr %40, align 4, !tbaa !25
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %349, i64 %351
  %353 = load i32, ptr %352, align 4, !tbaa !25
  store i32 %353, ptr %42, align 4, !tbaa !25
  br label %354

354:                                              ; preds = %379, %346
  %355 = load i32, ptr %42, align 4, !tbaa !25
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.format::CSC", ptr %356, i32 0, i32 6
  %358 = load ptr, ptr %357, align 8, !tbaa !32
  %359 = load i32, ptr %40, align 4, !tbaa !25
  %360 = add nsw i32 %359, 1
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds i32, ptr %358, i64 %361
  %363 = load i32, ptr %362, align 4, !tbaa !25
  %364 = icmp slt i32 %355, %363
  br i1 %364, label %366, label %365

365:                                              ; preds = %354
  store i32 5, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %382

366:                                              ; preds = %354
  %367 = load ptr, ptr %25, align 8, !tbaa !5
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = getelementptr inbounds %"struct.format::CSC", ptr %368, i32 0, i32 7
  %370 = load ptr, ptr %369, align 8, !tbaa !33
  %371 = load i32, ptr %42, align 4, !tbaa !25
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %370, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !25
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds i32, ptr %367, i64 %375
  %377 = load i32, ptr %376, align 4, !tbaa !25
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %376, align 4, !tbaa !25
  br label %379

379:                                              ; preds = %366
  %380 = load i32, ptr %42, align 4, !tbaa !25
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %42, align 4, !tbaa !25
  br label %354, !llvm.loop !34

382:                                              ; preds = %365
  br label %476

383:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %384 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
          to label %385 unwind label %450

385:                                              ; preds = %383
  invoke void @_ZN6format10constraintC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %384)
          to label %386 unwind label %454

386:                                              ; preds = %385
  store ptr %384, ptr %43, align 8, !tbaa !5
  %387 = load i32, ptr %40, align 4, !tbaa !25
  %388 = load ptr, ptr %43, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.format::constraint", ptr %388, i32 0, i32 0
  store i32 %387, ptr %389, align 8, !tbaa !36
  %390 = load ptr, ptr %30, align 8, !tbaa !5
  %391 = load i32, ptr %40, align 4, !tbaa !25
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds double, ptr %390, i64 %392
  %394 = load double, ptr %393, align 8, !tbaa !31
  %395 = load ptr, ptr %28, align 8, !tbaa !5
  %396 = load i32, ptr %15, align 4, !tbaa !25
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  store double %394, ptr %398, align 8, !tbaa !31
  %399 = load ptr, ptr %34, align 8, !tbaa !5
  %400 = load i32, ptr %40, align 4, !tbaa !25
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds double, ptr %399, i64 %401
  %403 = load double, ptr %402, align 8, !tbaa !31
  %404 = load ptr, ptr %29, align 8, !tbaa !5
  %405 = load i32, ptr %15, align 4, !tbaa !25
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %404, i64 %406
  store double %403, ptr %407, align 8, !tbaa !31
  %408 = load i32, ptr %15, align 4, !tbaa !25
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr %15, align 4, !tbaa !25
  %410 = load ptr, ptr %10, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.format::CSC", ptr %410, i32 0, i32 6
  %412 = load ptr, ptr %411, align 8, !tbaa !32
  %413 = load i32, ptr %40, align 4, !tbaa !25
  %414 = add nsw i32 %413, 1
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %412, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !25
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.format::CSC", ptr %418, i32 0, i32 6
  %420 = load ptr, ptr %419, align 8, !tbaa !32
  %421 = load i32, ptr %40, align 4, !tbaa !25
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %420, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !25
  %425 = sub nsw i32 %417, %424
  %426 = load i32, ptr %16, align 4, !tbaa !25
  %427 = add nsw i32 %426, %425
  store i32 %427, ptr %16, align 4, !tbaa !25
  %428 = load ptr, ptr %43, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.format::constraint", ptr %428, i32 0, i32 1
  store double 1.000000e+00, ptr %429, align 8, !tbaa !38
  invoke void @_ZNSt6vectorIPN6format10constraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %430 unwind label %450

430:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = getelementptr inbounds %"struct.format::CSC", ptr %431, i32 0, i32 6
  %433 = load ptr, ptr %432, align 8, !tbaa !32
  %434 = load i32, ptr %40, align 4, !tbaa !25
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds i32, ptr %433, i64 %435
  %437 = load i32, ptr %436, align 4, !tbaa !25
  store i32 %437, ptr %44, align 4, !tbaa !25
  br label %438

438:                                              ; preds = %471, %430
  %439 = load i32, ptr %44, align 4, !tbaa !25
  %440 = load ptr, ptr %10, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.format::CSC", ptr %440, i32 0, i32 6
  %442 = load ptr, ptr %441, align 8, !tbaa !32
  %443 = load i32, ptr %40, align 4, !tbaa !25
  %444 = add nsw i32 %443, 1
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %442, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !25
  %448 = icmp slt i32 %439, %447
  br i1 %448, label %458, label %449

449:                                              ; preds = %438
  store i32 8, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %474

450:                                              ; preds = %386, %383
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %18, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %19, align 4
  br label %475

454:                                              ; preds = %385
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %18, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %19, align 4
  call void @_ZdlPvm(ptr noundef %384, i64 noundef 16) #11
  br label %475

458:                                              ; preds = %438
  %459 = load ptr, ptr %26, align 8, !tbaa !5
  %460 = load ptr, ptr %10, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.format::CSC", ptr %460, i32 0, i32 7
  %462 = load ptr, ptr %461, align 8, !tbaa !33
  %463 = load i32, ptr %44, align 4, !tbaa !25
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i32, ptr %462, i64 %464
  %466 = load i32, ptr %465, align 4, !tbaa !25
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds i32, ptr %459, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !25
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %468, align 4, !tbaa !25
  br label %471

471:                                              ; preds = %458
  %472 = load i32, ptr %44, align 4, !tbaa !25
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr %44, align 4, !tbaa !25
  br label %438, !llvm.loop !39

474:                                              ; preds = %449
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %476

475:                                              ; preds = %454, %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %480

476:                                              ; preds = %474, %382
  br label %477

477:                                              ; preds = %476, %298
  %478 = load i32, ptr %40, align 4, !tbaa !25
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %40, align 4, !tbaa !25
  br label %230, !llvm.loop !40

480:                                              ; preds = %475, %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %982

481:                                              ; preds = %237
  %482 = load i32, ptr %15, align 4, !tbaa !25
  %483 = sext i32 %482 to i64
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.format::CSC", ptr %484, i32 0, i32 0
  %486 = load i64, ptr %485, align 8, !tbaa !28
  %487 = icmp ule i64 %483, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %481
  br label %491

489:                                              ; preds = %481
  call void @__assert_fail(ptr noundef @.str.133, ptr noundef @.str.130, i32 noundef 498, ptr noundef @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #12
  unreachable

490:                                              ; No predecessors!
  br label %491

491:                                              ; preds = %490, %488
  %492 = load i32, ptr %13, align 4, !tbaa !25
  %493 = sext i32 %492 to i64
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.format::CSC", ptr %494, i32 0, i32 0
  %496 = load i64, ptr %495, align 8, !tbaa !28
  %497 = icmp ule i64 %493, %496
  br i1 %497, label %498, label %499

498:                                              ; preds = %491
  br label %501

499:                                              ; preds = %491
  call void @__assert_fail(ptr noundef @.str.134, ptr noundef @.str.130, i32 noundef 499, ptr noundef @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #12
  unreachable

500:                                              ; No predecessors!
  br label %501

501:                                              ; preds = %500, %498
  %502 = load i32, ptr %13, align 4, !tbaa !25
  %503 = icmp sgt i32 %502, 0
  br i1 %503, label %504, label %693

504:                                              ; preds = %501
  %505 = load i32, ptr %23, align 4, !tbaa !25
  %506 = sext i32 %505 to i64
  %507 = load ptr, ptr %17, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.format::CSC", ptr %507, i32 0, i32 0
  store i64 %506, ptr %508, align 8, !tbaa !28
  %509 = load i32, ptr %13, align 4, !tbaa !25
  %510 = sext i32 %509 to i64
  %511 = load ptr, ptr %17, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.format::CSC", ptr %511, i32 0, i32 1
  store i64 %510, ptr %512, align 8, !tbaa !26
  %513 = load i32, ptr %13, align 4, !tbaa !25
  %514 = add nsw i32 %513, 1
  %515 = sext i32 %514 to i64
  %516 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %515, i64 4)
  %517 = extractvalue { i64, i1 } %516, 1
  %518 = extractvalue { i64, i1 } %516, 0
  %519 = select i1 %517, i64 -1, i64 %518
  %520 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %519) #10
          to label %521 unwind label %170

521:                                              ; preds = %504
  %522 = load ptr, ptr %17, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.format::CSC", ptr %522, i32 0, i32 6
  store ptr %520, ptr %523, align 8, !tbaa !32
  %524 = load i32, ptr %14, align 4, !tbaa !25
  %525 = sext i32 %524 to i64
  %526 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %525, i64 4)
  %527 = extractvalue { i64, i1 } %526, 1
  %528 = extractvalue { i64, i1 } %526, 0
  %529 = select i1 %527, i64 -1, i64 %528
  %530 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %529) #10
          to label %531 unwind label %170

531:                                              ; preds = %521
  %532 = load ptr, ptr %17, align 8, !tbaa !5
  %533 = getelementptr inbounds %"struct.format::CSC", ptr %532, i32 0, i32 7
  store ptr %530, ptr %533, align 8, !tbaa !33
  %534 = load i32, ptr %14, align 4, !tbaa !25
  %535 = sext i32 %534 to i64
  %536 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %535, i64 8)
  %537 = extractvalue { i64, i1 } %536, 1
  %538 = extractvalue { i64, i1 } %536, 0
  %539 = select i1 %537, i64 -1, i64 %538
  %540 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %539) #10
          to label %541 unwind label %170

541:                                              ; preds = %531
  %542 = load ptr, ptr %17, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.format::CSC", ptr %542, i32 0, i32 8
  store ptr %540, ptr %543, align 8, !tbaa !41
  %544 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  %545 = load i32, ptr %13, align 4, !tbaa !25
  %546 = sext i32 %545 to i64
  %547 = icmp eq i64 %544, %546
  br i1 %547, label %548, label %549

548:                                              ; preds = %541
  br label %551

549:                                              ; preds = %541
  call void @__assert_fail(ptr noundef @.str.135, ptr noundef @.str.130, i32 noundef 508, ptr noundef @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #12
  unreachable

550:                                              ; No predecessors!
  br label %551

551:                                              ; preds = %550, %548
  %552 = load ptr, ptr %17, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.format::CSC", ptr %552, i32 0, i32 6
  %554 = load ptr, ptr %553, align 8, !tbaa !32
  %555 = getelementptr inbounds i32, ptr %554, i64 0
  store i32 0, ptr %555, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  store i32 0, ptr %45, align 4, !tbaa !25
  br label %556

556:                                              ; preds = %658, %551
  %557 = load i32, ptr %45, align 4, !tbaa !25
  %558 = sext i32 %557 to i64
  %559 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  %560 = icmp ult i64 %558, %559
  br i1 %560, label %562, label %561

561:                                              ; preds = %556
  store i32 11, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %661

562:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %563 = load i32, ptr %45, align 4, !tbaa !25
  %564 = sext i32 %563 to i64
  %565 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %564) #9
  %566 = load i32, ptr %565, align 4, !tbaa !25
  store i32 %566, ptr %46, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.format::CSC", ptr %567, i32 0, i32 6
  %569 = load ptr, ptr %568, align 8, !tbaa !32
  %570 = load i32, ptr %46, align 4, !tbaa !25
  %571 = add nsw i32 %570, 1
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds i32, ptr %569, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !25
  %575 = load ptr, ptr %10, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.format::CSC", ptr %575, i32 0, i32 6
  %577 = load ptr, ptr %576, align 8, !tbaa !32
  %578 = load i32, ptr %46, align 4, !tbaa !25
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !25
  %582 = sub nsw i32 %574, %581
  store i32 %582, ptr %47, align 4, !tbaa !25
  %583 = load ptr, ptr %17, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.format::CSC", ptr %583, i32 0, i32 6
  %585 = load ptr, ptr %584, align 8, !tbaa !32
  %586 = load i32, ptr %45, align 4, !tbaa !25
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds i32, ptr %585, i64 %587
  %589 = load i32, ptr %588, align 4, !tbaa !25
  %590 = load i32, ptr %47, align 4, !tbaa !25
  %591 = add nsw i32 %589, %590
  %592 = load ptr, ptr %17, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.format::CSC", ptr %592, i32 0, i32 6
  %594 = load ptr, ptr %593, align 8, !tbaa !32
  %595 = load i32, ptr %45, align 4, !tbaa !25
  %596 = add nsw i32 %595, 1
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds i32, ptr %594, i64 %597
  store i32 %591, ptr %598, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %599 = load ptr, ptr %17, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.format::CSC", ptr %599, i32 0, i32 6
  %601 = load ptr, ptr %600, align 8, !tbaa !32
  %602 = load i32, ptr %45, align 4, !tbaa !25
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds i32, ptr %601, i64 %603
  %605 = load i32, ptr %604, align 4, !tbaa !25
  store i32 %605, ptr %48, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.format::CSC", ptr %606, i32 0, i32 6
  %608 = load ptr, ptr %607, align 8, !tbaa !32
  %609 = load i32, ptr %46, align 4, !tbaa !25
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %608, i64 %610
  %612 = load i32, ptr %611, align 4, !tbaa !25
  store i32 %612, ptr %49, align 4, !tbaa !25
  br label %613

613:                                              ; preds = %652, %562
  %614 = load i32, ptr %48, align 4, !tbaa !25
  %615 = load ptr, ptr %17, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.format::CSC", ptr %615, i32 0, i32 6
  %617 = load ptr, ptr %616, align 8, !tbaa !32
  %618 = load i32, ptr %45, align 4, !tbaa !25
  %619 = add nsw i32 %618, 1
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds i32, ptr %617, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !25
  %623 = icmp slt i32 %614, %622
  br i1 %623, label %625, label %624

624:                                              ; preds = %613
  store i32 14, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %657

625:                                              ; preds = %613
  %626 = load ptr, ptr %10, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.format::CSC", ptr %626, i32 0, i32 7
  %628 = load ptr, ptr %627, align 8, !tbaa !33
  %629 = load i32, ptr %49, align 4, !tbaa !25
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds i32, ptr %628, i64 %630
  %632 = load i32, ptr %631, align 4, !tbaa !25
  %633 = load ptr, ptr %17, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.format::CSC", ptr %633, i32 0, i32 7
  %635 = load ptr, ptr %634, align 8, !tbaa !33
  %636 = load i32, ptr %48, align 4, !tbaa !25
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i32, ptr %635, i64 %637
  store i32 %632, ptr %638, align 4, !tbaa !25
  %639 = load ptr, ptr %10, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.format::CSC", ptr %639, i32 0, i32 8
  %641 = load ptr, ptr %640, align 8, !tbaa !41
  %642 = load i32, ptr %49, align 4, !tbaa !25
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !31
  %646 = load ptr, ptr %17, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.format::CSC", ptr %646, i32 0, i32 8
  %648 = load ptr, ptr %647, align 8, !tbaa !41
  %649 = load i32, ptr %48, align 4, !tbaa !25
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  store double %645, ptr %651, align 8, !tbaa !31
  br label %652

652:                                              ; preds = %625
  %653 = load i32, ptr %48, align 4, !tbaa !25
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %48, align 4, !tbaa !25
  %655 = load i32, ptr %49, align 4, !tbaa !25
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %49, align 4, !tbaa !25
  br label %613, !llvm.loop !42

657:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %658

658:                                              ; preds = %657
  %659 = load i32, ptr %45, align 4, !tbaa !25
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr %45, align 4, !tbaa !25
  br label %556, !llvm.loop !43

661:                                              ; preds = %561
  %662 = load i32, ptr %13, align 4, !tbaa !25
  %663 = sext i32 %662 to i64
  %664 = load ptr, ptr %11, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.format::SMP", ptr %664, i32 0, i32 10
  %666 = load ptr, ptr %665, align 8, !tbaa !18
  %667 = getelementptr inbounds %"struct.format::Dense", ptr %666, i32 0, i32 0
  store i64 %663, ptr %667, align 8, !tbaa !44
  %668 = load i32, ptr %14, align 4, !tbaa !25
  %669 = sext i32 %668 to i64
  %670 = load ptr, ptr %17, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.format::CSC", ptr %670, i32 0, i32 2
  store i64 %669, ptr %671, align 8, !tbaa !45
  %672 = load ptr, ptr %17, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.format::CSC", ptr %672, i32 0, i32 6
  %674 = load ptr, ptr %673, align 8, !tbaa !32
  %675 = load i32, ptr %13, align 4, !tbaa !25
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds i32, ptr %674, i64 %676
  %678 = load i32, ptr %677, align 4, !tbaa !25
  %679 = load i32, ptr %14, align 4, !tbaa !25
  %680 = icmp eq i32 %678, %679
  br i1 %680, label %681, label %682

681:                                              ; preds = %661
  br label %684

682:                                              ; preds = %661
  call void @__assert_fail(ptr noundef @.str.136, ptr noundef @.str.130, i32 noundef 522, ptr noundef @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #12
  unreachable

683:                                              ; No predecessors!
  br label %684

684:                                              ; preds = %683, %681
  %685 = load ptr, ptr %17, align 8, !tbaa !5
  %686 = load ptr, ptr %11, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.format::SMP", ptr %686, i32 0, i32 7
  store ptr %685, ptr %687, align 8, !tbaa !21
  %688 = load ptr, ptr %17, align 8, !tbaa !5
  %689 = invoke noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef %688)
          to label %690 unwind label %170

690:                                              ; preds = %684
  %691 = load ptr, ptr %11, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.format::SMP", ptr %691, i32 0, i32 5
  store ptr %689, ptr %692, align 8, !tbaa !22
  br label %710

693:                                              ; preds = %501
  %694 = load ptr, ptr %11, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.format::SMP", ptr %694, i32 0, i32 10
  %696 = load ptr, ptr %695, align 8, !tbaa !18
  %697 = icmp eq ptr %696, null
  br i1 %697, label %699, label %698

698:                                              ; preds = %693
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %696) #9
  call void @_ZdlPvm(ptr noundef %696, i64 noundef 32) #11
  br label %699

699:                                              ; preds = %698, %693
  %700 = load ptr, ptr %17, align 8, !tbaa !5
  %701 = icmp eq ptr %700, null
  br i1 %701, label %703, label %702

702:                                              ; preds = %699
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %700) #9
  call void @_ZdlPvm(ptr noundef %700, i64 noundef 56) #11
  br label %703

703:                                              ; preds = %702, %699
  %704 = load ptr, ptr %11, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.format::SMP", ptr %704, i32 0, i32 5
  store ptr null, ptr %705, align 8, !tbaa !22
  %706 = load ptr, ptr %11, align 8, !tbaa !5
  %707 = getelementptr inbounds %"struct.format::SMP", ptr %706, i32 0, i32 7
  store ptr null, ptr %707, align 8, !tbaa !21
  %708 = load ptr, ptr %11, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.format::SMP", ptr %708, i32 0, i32 10
  store ptr null, ptr %709, align 8, !tbaa !18
  br label %710

710:                                              ; preds = %703, %690
  %711 = load i32, ptr %15, align 4, !tbaa !25
  %712 = icmp sgt i32 %711, 0
  br i1 %712, label %713, label %906

713:                                              ; preds = %710
  %714 = load i32, ptr %23, align 4, !tbaa !25
  %715 = sext i32 %714 to i64
  %716 = load ptr, ptr %20, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.format::CSC", ptr %716, i32 0, i32 0
  store i64 %715, ptr %717, align 8, !tbaa !28
  %718 = load i32, ptr %15, align 4, !tbaa !25
  %719 = sext i32 %718 to i64
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = getelementptr inbounds %"struct.format::CSC", ptr %720, i32 0, i32 1
  store i64 %719, ptr %721, align 8, !tbaa !26
  %722 = load i32, ptr %15, align 4, !tbaa !25
  %723 = add nsw i32 %722, 1
  %724 = sext i32 %723 to i64
  %725 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %724, i64 4)
  %726 = extractvalue { i64, i1 } %725, 1
  %727 = extractvalue { i64, i1 } %725, 0
  %728 = select i1 %726, i64 -1, i64 %727
  %729 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %728) #10
          to label %730 unwind label %170

730:                                              ; preds = %713
  %731 = load ptr, ptr %20, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.format::CSC", ptr %731, i32 0, i32 6
  store ptr %729, ptr %732, align 8, !tbaa !32
  %733 = load i32, ptr %16, align 4, !tbaa !25
  %734 = sext i32 %733 to i64
  %735 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %734, i64 4)
  %736 = extractvalue { i64, i1 } %735, 1
  %737 = extractvalue { i64, i1 } %735, 0
  %738 = select i1 %736, i64 -1, i64 %737
  %739 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %738) #10
          to label %740 unwind label %170

740:                                              ; preds = %730
  %741 = load ptr, ptr %20, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.format::CSC", ptr %741, i32 0, i32 7
  store ptr %739, ptr %742, align 8, !tbaa !33
  %743 = load i32, ptr %16, align 4, !tbaa !25
  %744 = sext i32 %743 to i64
  %745 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %744, i64 8)
  %746 = extractvalue { i64, i1 } %745, 1
  %747 = extractvalue { i64, i1 } %745, 0
  %748 = select i1 %746, i64 -1, i64 %747
  %749 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %748) #10
          to label %750 unwind label %170

750:                                              ; preds = %740
  %751 = load ptr, ptr %20, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.format::CSC", ptr %751, i32 0, i32 8
  store ptr %749, ptr %752, align 8, !tbaa !41
  %753 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  %754 = load i32, ptr %15, align 4, !tbaa !25
  %755 = sext i32 %754 to i64
  %756 = icmp eq i64 %753, %755
  br i1 %756, label %757, label %758

757:                                              ; preds = %750
  br label %760

758:                                              ; preds = %750
  call void @__assert_fail(ptr noundef @.str.132, ptr noundef @.str.130, i32 noundef 539, ptr noundef @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #12
  unreachable

759:                                              ; No predecessors!
  br label %760

760:                                              ; preds = %759, %757
  %761 = load ptr, ptr %20, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.format::CSC", ptr %761, i32 0, i32 6
  %763 = load ptr, ptr %762, align 8, !tbaa !32
  %764 = getelementptr inbounds i32, ptr %763, i64 0
  store i32 0, ptr %764, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  store i32 0, ptr %50, align 4, !tbaa !25
  br label %765

765:                                              ; preds = %877, %760
  %766 = load i32, ptr %50, align 4, !tbaa !25
  %767 = sext i32 %766 to i64
  %768 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  %769 = icmp ult i64 %767, %768
  br i1 %769, label %771, label %770

770:                                              ; preds = %765
  store i32 17, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %880

771:                                              ; preds = %765
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %772 = load i32, ptr %50, align 4, !tbaa !25
  %773 = sext i32 %772 to i64
  %774 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %773) #9
  %775 = load ptr, ptr %774, align 8, !tbaa !5
  %776 = getelementptr inbounds %"struct.format::constraint", ptr %775, i32 0, i32 0
  %777 = load i32, ptr %776, align 8, !tbaa !36
  store i32 %777, ptr %51, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %778 = load i32, ptr %50, align 4, !tbaa !25
  %779 = sext i32 %778 to i64
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %779) #9
  %781 = load ptr, ptr %780, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.format::constraint", ptr %781, i32 0, i32 1
  %783 = load double, ptr %782, align 8, !tbaa !38
  store double %783, ptr %52, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %784 = load ptr, ptr %10, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.format::CSC", ptr %784, i32 0, i32 6
  %786 = load ptr, ptr %785, align 8, !tbaa !32
  %787 = load i32, ptr %51, align 4, !tbaa !25
  %788 = add nsw i32 %787, 1
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds i32, ptr %786, i64 %789
  %791 = load i32, ptr %790, align 4, !tbaa !25
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.format::CSC", ptr %792, i32 0, i32 6
  %794 = load ptr, ptr %793, align 8, !tbaa !32
  %795 = load i32, ptr %51, align 4, !tbaa !25
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds i32, ptr %794, i64 %796
  %798 = load i32, ptr %797, align 4, !tbaa !25
  %799 = sub nsw i32 %791, %798
  store i32 %799, ptr %53, align 4, !tbaa !25
  %800 = load ptr, ptr %20, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.format::CSC", ptr %800, i32 0, i32 6
  %802 = load ptr, ptr %801, align 8, !tbaa !32
  %803 = load i32, ptr %50, align 4, !tbaa !25
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i32, ptr %802, i64 %804
  %806 = load i32, ptr %805, align 4, !tbaa !25
  %807 = load i32, ptr %53, align 4, !tbaa !25
  %808 = add nsw i32 %806, %807
  %809 = load ptr, ptr %20, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.format::CSC", ptr %809, i32 0, i32 6
  %811 = load ptr, ptr %810, align 8, !tbaa !32
  %812 = load i32, ptr %50, align 4, !tbaa !25
  %813 = add nsw i32 %812, 1
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds i32, ptr %811, i64 %814
  store i32 %808, ptr %815, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %816 = load ptr, ptr %20, align 8, !tbaa !5
  %817 = getelementptr inbounds %"struct.format::CSC", ptr %816, i32 0, i32 6
  %818 = load ptr, ptr %817, align 8, !tbaa !32
  %819 = load i32, ptr %50, align 4, !tbaa !25
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %818, i64 %820
  %822 = load i32, ptr %821, align 4, !tbaa !25
  store i32 %822, ptr %54, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.format::CSC", ptr %823, i32 0, i32 6
  %825 = load ptr, ptr %824, align 8, !tbaa !32
  %826 = load i32, ptr %51, align 4, !tbaa !25
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds i32, ptr %825, i64 %827
  %829 = load i32, ptr %828, align 4, !tbaa !25
  store i32 %829, ptr %55, align 4, !tbaa !25
  br label %830

830:                                              ; preds = %871, %771
  %831 = load i32, ptr %54, align 4, !tbaa !25
  %832 = load ptr, ptr %20, align 8, !tbaa !5
  %833 = getelementptr inbounds %"struct.format::CSC", ptr %832, i32 0, i32 6
  %834 = load ptr, ptr %833, align 8, !tbaa !32
  %835 = load i32, ptr %50, align 4, !tbaa !25
  %836 = add nsw i32 %835, 1
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i32, ptr %834, i64 %837
  %839 = load i32, ptr %838, align 4, !tbaa !25
  %840 = icmp slt i32 %831, %839
  br i1 %840, label %842, label %841

841:                                              ; preds = %830
  store i32 20, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %876

842:                                              ; preds = %830
  %843 = load ptr, ptr %10, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.format::CSC", ptr %843, i32 0, i32 7
  %845 = load ptr, ptr %844, align 8, !tbaa !33
  %846 = load i32, ptr %55, align 4, !tbaa !25
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i32, ptr %845, i64 %847
  %849 = load i32, ptr %848, align 4, !tbaa !25
  %850 = load ptr, ptr %20, align 8, !tbaa !5
  %851 = getelementptr inbounds %"struct.format::CSC", ptr %850, i32 0, i32 7
  %852 = load ptr, ptr %851, align 8, !tbaa !33
  %853 = load i32, ptr %54, align 4, !tbaa !25
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i32, ptr %852, i64 %854
  store i32 %849, ptr %855, align 4, !tbaa !25
  %856 = load double, ptr %52, align 8, !tbaa !31
  %857 = load ptr, ptr %10, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.format::CSC", ptr %857, i32 0, i32 8
  %859 = load ptr, ptr %858, align 8, !tbaa !41
  %860 = load i32, ptr %55, align 4, !tbaa !25
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %859, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !31
  %864 = fmul double %856, %863
  %865 = load ptr, ptr %20, align 8, !tbaa !5
  %866 = getelementptr inbounds %"struct.format::CSC", ptr %865, i32 0, i32 8
  %867 = load ptr, ptr %866, align 8, !tbaa !41
  %868 = load i32, ptr %54, align 4, !tbaa !25
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  store double %864, ptr %870, align 8, !tbaa !31
  br label %871

871:                                              ; preds = %842
  %872 = load i32, ptr %54, align 4, !tbaa !25
  %873 = add nsw i32 %872, 1
  store i32 %873, ptr %54, align 4, !tbaa !25
  %874 = load i32, ptr %55, align 4, !tbaa !25
  %875 = add nsw i32 %874, 1
  store i32 %875, ptr %55, align 4, !tbaa !25
  br label %830, !llvm.loop !46

876:                                              ; preds = %841
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %877

877:                                              ; preds = %876
  %878 = load i32, ptr %50, align 4, !tbaa !25
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %50, align 4, !tbaa !25
  br label %765, !llvm.loop !47

880:                                              ; preds = %770
  %881 = load ptr, ptr %20, align 8, !tbaa !5
  %882 = getelementptr inbounds %"struct.format::CSC", ptr %881, i32 0, i32 6
  %883 = load ptr, ptr %882, align 8, !tbaa !32
  %884 = load i32, ptr %15, align 4, !tbaa !25
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds i32, ptr %883, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !25
  %888 = sext i32 %887 to i64
  %889 = load ptr, ptr %20, align 8, !tbaa !5
  %890 = getelementptr inbounds %"struct.format::CSC", ptr %889, i32 0, i32 2
  store i64 %888, ptr %890, align 8, !tbaa !45
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = invoke noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef %891)
          to label %893 unwind label %170

893:                                              ; preds = %880
  %894 = load ptr, ptr %11, align 8, !tbaa !5
  %895 = getelementptr inbounds %"struct.format::SMP", ptr %894, i32 0, i32 6
  store ptr %892, ptr %895, align 8, !tbaa !20
  %896 = load i32, ptr %15, align 4, !tbaa !25
  %897 = sext i32 %896 to i64
  %898 = load ptr, ptr %11, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.format::SMP", ptr %898, i32 0, i32 12
  %900 = load ptr, ptr %899, align 8, !tbaa !9
  %901 = getelementptr inbounds %"struct.format::Dense", ptr %900, i32 0, i32 0
  store i64 %897, ptr %901, align 8, !tbaa !44
  %902 = load ptr, ptr %11, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.format::SMP", ptr %902, i32 0, i32 11
  %904 = load ptr, ptr %903, align 8, !tbaa !17
  %905 = getelementptr inbounds %"struct.format::Dense", ptr %904, i32 0, i32 0
  store i64 %897, ptr %905, align 8, !tbaa !44
  br label %931

906:                                              ; preds = %710
  %907 = load ptr, ptr %11, align 8, !tbaa !5
  %908 = getelementptr inbounds %"struct.format::SMP", ptr %907, i32 0, i32 11
  %909 = load ptr, ptr %908, align 8, !tbaa !17
  %910 = icmp eq ptr %909, null
  br i1 %910, label %912, label %911

911:                                              ; preds = %906
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %909) #9
  call void @_ZdlPvm(ptr noundef %909, i64 noundef 32) #11
  br label %912

912:                                              ; preds = %911, %906
  %913 = load ptr, ptr %11, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.format::SMP", ptr %913, i32 0, i32 12
  %915 = load ptr, ptr %914, align 8, !tbaa !9
  %916 = icmp eq ptr %915, null
  br i1 %916, label %918, label %917

917:                                              ; preds = %912
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %915) #9
  call void @_ZdlPvm(ptr noundef %915, i64 noundef 32) #11
  br label %918

918:                                              ; preds = %917, %912
  %919 = load ptr, ptr %20, align 8, !tbaa !5
  %920 = icmp eq ptr %919, null
  br i1 %920, label %922, label %921

921:                                              ; preds = %918
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %919) #9
  call void @_ZdlPvm(ptr noundef %919, i64 noundef 56) #11
  br label %922

922:                                              ; preds = %921, %918
  %923 = load ptr, ptr %11, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.format::SMP", ptr %923, i32 0, i32 6
  store ptr null, ptr %924, align 8, !tbaa !20
  %925 = load ptr, ptr %11, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.format::SMP", ptr %925, i32 0, i32 8
  store ptr null, ptr %926, align 8, !tbaa !19
  %927 = load ptr, ptr %11, align 8, !tbaa !5
  %928 = getelementptr inbounds %"struct.format::SMP", ptr %927, i32 0, i32 12
  store ptr null, ptr %928, align 8, !tbaa !9
  %929 = load ptr, ptr %11, align 8, !tbaa !5
  %930 = getelementptr inbounds %"struct.format::SMP", ptr %929, i32 0, i32 11
  store ptr null, ptr %930, align 8, !tbaa !17
  br label %931

931:                                              ; preds = %922, %893
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i32 0, ptr %56, align 4, !tbaa !25
  br label %932

932:                                              ; preds = %946, %931
  %933 = load i32, ptr %56, align 4, !tbaa !25
  %934 = sext i32 %933 to i64
  %935 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  %936 = icmp ult i64 %934, %935
  br i1 %936, label %938, label %937

937:                                              ; preds = %932
  store i32 23, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %949

938:                                              ; preds = %932
  %939 = load i32, ptr %56, align 4, !tbaa !25
  %940 = sext i32 %939 to i64
  %941 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %940) #9
  %942 = load ptr, ptr %941, align 8, !tbaa !5
  %943 = icmp eq ptr %942, null
  br i1 %943, label %945, label %944

944:                                              ; preds = %938
  call void @_ZdlPvm(ptr noundef %942, i64 noundef 16) #11
  br label %945

945:                                              ; preds = %944, %938
  br label %946

946:                                              ; preds = %945
  %947 = load i32, ptr %56, align 4, !tbaa !25
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr %56, align 4, !tbaa !25
  br label %932, !llvm.loop !48

949:                                              ; preds = %937
  %950 = load ptr, ptr %7, align 8, !tbaa !5
  %951 = icmp ne ptr %950, null
  br i1 %951, label %957, label %952

952:                                              ; preds = %949
  %953 = load ptr, ptr %30, align 8, !tbaa !5
  %954 = icmp eq ptr %953, null
  br i1 %954, label %956, label %955

955:                                              ; preds = %952
  call void @_ZdaPv(ptr noundef %953) #11
  br label %956

956:                                              ; preds = %955, %952
  br label %957

957:                                              ; preds = %956, %949
  %958 = load ptr, ptr %8, align 8, !tbaa !5
  %959 = icmp ne ptr %958, null
  br i1 %959, label %965, label %960

960:                                              ; preds = %957
  %961 = load ptr, ptr %34, align 8, !tbaa !5
  %962 = icmp eq ptr %961, null
  br i1 %962, label %964, label %963

963:                                              ; preds = %960
  call void @_ZdaPv(ptr noundef %961) #11
  br label %964

964:                                              ; preds = %963, %960
  br label %965

965:                                              ; preds = %964, %957
  %966 = load ptr, ptr %26, align 8, !tbaa !5
  %967 = icmp eq ptr %966, null
  br i1 %967, label %969, label %968

968:                                              ; preds = %965
  call void @_ZdaPv(ptr noundef %966) #11
  br label %969

969:                                              ; preds = %968, %965
  %970 = load ptr, ptr %25, align 8, !tbaa !5
  %971 = icmp eq ptr %970, null
  br i1 %971, label %973, label %972

972:                                              ; preds = %969
  call void @_ZdaPv(ptr noundef %970) #11
  br label %973

973:                                              ; preds = %972, %969
  %974 = load i8, ptr %12, align 1, !tbaa !23, !range !49, !noundef !50
  %975 = trunc i8 %974 to i1
  br i1 %975, label %976, label %981

976:                                              ; preds = %973
  %977 = load ptr, ptr %10, align 8, !tbaa !5
  %978 = icmp eq ptr %977, null
  br i1 %978, label %980, label %979

979:                                              ; preds = %976
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %977) #9
  call void @_ZdlPvm(ptr noundef %977, i64 noundef 56) #11
  br label %980

980:                                              ; preds = %979, %976
  br label %981

981:                                              ; preds = %980, %973
  store i1 true, ptr %6, align 1
  store i32 1, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #9
  br label %988

982:                                              ; preds = %480, %246, %242, %238, %186, %174, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %983

983:                                              ; preds = %982, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %984

984:                                              ; preds = %983, %162
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %985

985:                                              ; preds = %984, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #9
  br label %986

986:                                              ; preds = %985, %154
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %987

987:                                              ; preds = %986, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #9
  br label %990

988:                                              ; preds = %981, %59
  %989 = load i1, ptr %6, align 1
  ret i1 %989

990:                                              ; preds = %987
  %991 = load ptr, ptr %18, align 8
  %992 = load i32, ptr %19, align 4
  %993 = insertvalue { ptr, i32 } poison, ptr %991, 0
  %994 = insertvalue { ptr, i32 } %993, i32 %992, 1
  resume { ptr, i32 } %994
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 #6 = { mustprogress 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 #7 = { mustprogress nounwind 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 #8 = { inlinehint mustprogress 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 392}
!10 = !{!"_ZTSN6format3SMPE", !11, i64 0, !12, i64 8, !12, i64 40, !15, i64 72, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !16, i64 400, !6, i64 408, !6, i64 416, !16, i64 424}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSN6format11DescriptionE", !12, i64 0, !12, i64 32, !12, i64 64, !12, i64 96, !12, i64 128, !12, i64 160, !12, i64 192, !12, i64 224}
!16 = !{!"double", !7, i64 0}
!17 = !{!10, !6, i64 384}
!18 = !{!10, !6, i64 376}
!19 = !{!10, !6, i64 360}
!20 = !{!10, !6, i64 344}
!21 = !{!10, !6, i64 352}
!22 = !{!10, !6, i64 336}
!23 = !{!24, !24, i64 0}
!24 = !{!"bool", !7, i64 0}
!25 = !{!11, !11, i64 0}
!26 = !{!27, !14, i64 8}
!27 = !{!"_ZTSN6format3CSCE", !14, i64 0, !14, i64 8, !14, i64 16, !11, i64 24, !24, i64 28, !24, i64 29, !6, i64 32, !6, i64 40, !6, i64 48}
!28 = !{!27, !14, i64 0}
!29 = !{!30, !6, i64 24}
!30 = !{!"_ZTSN6format5DenseE", !14, i64 0, !14, i64 8, !14, i64 16, !6, i64 24}
!31 = !{!16, !16, i64 0}
!32 = !{!27, !6, i64 32}
!33 = !{!27, !6, i64 40}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !11, i64 0}
!37 = !{!"_ZTSN6format10constraintE", !11, i64 0, !16, i64 8}
!38 = !{!37, !16, i64 8}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}
!41 = !{!27, !6, i64 48}
!42 = distinct !{!42, !35}
!43 = distinct !{!43, !35}
!44 = !{!30, !14, i64 0}
!45 = !{!27, !14, i64 16}
!46 = distinct !{!46, !35}
!47 = distinct !{!47, !35}
!48 = distinct !{!48, !35}
!49 = !{i8 0, i8 2}
!50 = !{}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl" }
%"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<format::constraint *, std::allocator<format::constraint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.130 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE = external hidden unnamed_addr constant [84 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, i64 noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef, double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format10constraintC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE(ptr noundef readonly %0, ptr noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef %4) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::vector.65", align 8
  %7 = alloca %"class.std::vector.70", align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %12, label %15

12:                                               ; preds = %5
  %13 = getelementptr inbounds i8, ptr %4, i64 376
  %14 = getelementptr inbounds i8, ptr %4, i64 336
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %14, i8 0, i64 32, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, i8 0, i64 24, i1 false)
  br label %485

15:                                               ; preds = %5
  %.not253 = icmp ne ptr %3, null
  br i1 %.not253, label %18, label %16

16:                                               ; preds = %15
  %17 = tail call noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef nonnull %2)
  br label %18

18:                                               ; preds = %16, %15
  %.0214 = phi ptr [ %3, %15 ], [ %17, %16 ]
  %19 = tail call noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #8
  tail call void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19)
  %20 = tail call noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #8
  tail call void @_ZN6format3CSCC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %21 = getelementptr inbounds i8, ptr %2, i64 8
  %22 = load i64, ptr %21, align 8, !tbaa !5
  %23 = load i64, ptr %2, align 8, !tbaa !13
  %24 = trunc i64 %23 to i32
  %sext = shl i64 %22, 32
  %25 = ashr exact i64 %sext, 32
  %26 = icmp ugt i64 %25, 4611686018427387903
  %27 = ashr exact i64 %sext, 30
  %28 = select i1 %26, i64 -1, i64 %27
  %29 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %28) #8
          to label %30 unwind label %54

30:                                               ; preds = %18
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %29, i8 0, i64 %28, i1 false)
  %31 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %28) #8
          to label %32 unwind label %56

32:                                               ; preds = %30
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %31, i8 0, i64 %28, i1 false)
  %.not254 = icmp ne ptr %0, null
  br i1 %.not254, label %33, label %36

33:                                               ; preds = %32
  %34 = getelementptr inbounds i8, ptr %0, i64 24
  %35 = load ptr, ptr %34, align 8, !tbaa !14
  br label %40

36:                                               ; preds = %32
  %sext255 = shl i64 %23, 32
  %37 = ashr exact i64 %sext255, 29
  %.inv = icmp sgt i64 %sext255, -1
  %38 = select i1 %.inv, i64 %37, i64 -1
  %39 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %38) #8
          to label %40 unwind label %58

40:                                               ; preds = %36, %33
  %41 = phi ptr [ %35, %33 ], [ %39, %36 ]
  %.not256 = icmp ne ptr %1, null
  br i1 %.not256, label %42, label %45

42:                                               ; preds = %40
  %43 = getelementptr inbounds i8, ptr %1, i64 24
  %44 = load ptr, ptr %43, align 8, !tbaa !14
  br label %49

45:                                               ; preds = %40
  %sext257 = shl i64 %23, 32
  %46 = ashr exact i64 %sext257, 29
  %.inv258 = icmp sgt i64 %sext257, -1
  %47 = select i1 %.inv258, i64 %46, i64 -1
  %48 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %47) #8
          to label %49 unwind label %60

49:                                               ; preds = %45, %42
  %50 = phi ptr [ %44, %42 ], [ %48, %45 ]
  br i1 %.not254, label %64, label %51

51:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  store double -1.000000e+20, ptr %8, align 8, !tbaa !16
  %52 = invoke noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef %41, i32 noundef %24, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %53 unwind label %62

53:                                               ; preds = %51
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %64

54:                                               ; preds = %18
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %484

56:                                               ; preds = %30
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %484

58:                                               ; preds = %36
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %484

60:                                               ; preds = %._crit_edge314, %389, %382, %376, %362, %304, %297, %291, %80, %74, %70, %45
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %484

62:                                               ; preds = %51
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %484

64:                                               ; preds = %53, %49
  br i1 %.not256, label %70, label %65

65:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  store double 1.000000e+20, ptr %9, align 8, !tbaa !16
  %66 = invoke noundef ptr @_ZSt6fill_nIPdidET_S1_T0_RKT1_(ptr noundef %41, i32 noundef %24, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %67 unwind label %68

67:                                               ; preds = %65
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %70

68:                                               ; preds = %65
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %484

70:                                               ; preds = %67, %64
  %71 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #8
          to label %72 unwind label %60

72:                                               ; preds = %70
  %sext259 = shl i64 %23, 32
  %73 = ashr exact i64 %sext259, 32
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %71, i64 noundef %73, i64 noundef 1, i64 noundef 1)
          to label %74 unwind label %95

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %4, i64 376
  store ptr %71, ptr %75, align 8, !tbaa !18
  %76 = getelementptr inbounds i8, ptr %71, i64 24
  %77 = load ptr, ptr %76, align 8, !tbaa !14
  %78 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #8
          to label %79 unwind label %60

79:                                               ; preds = %74
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %78, i64 noundef %73, i64 noundef 1, i64 noundef 1)
          to label %80 unwind label %97

80:                                               ; preds = %79
  %81 = getelementptr inbounds i8, ptr %4, i64 384
  store ptr %78, ptr %81, align 8, !tbaa !23
  %82 = getelementptr inbounds i8, ptr %78, i64 24
  %83 = load ptr, ptr %82, align 8, !tbaa !14
  %84 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #8
          to label %85 unwind label %60

85:                                               ; preds = %80
  invoke void @_ZN6format5DenseC2Emmm(ptr noundef nonnull align 8 dereferenceable(32) %84, i64 noundef %73, i64 noundef 1, i64 noundef 1)
          to label %86 unwind label %99

86:                                               ; preds = %85
  %87 = getelementptr inbounds i8, ptr %4, i64 392
  store ptr %84, ptr %87, align 8, !tbaa !24
  %88 = getelementptr inbounds i8, ptr %84, i64 24
  %89 = load ptr, ptr %88, align 8, !tbaa !14
  %90 = getelementptr inbounds i8, ptr %4, i64 360
  store ptr %20, ptr %90, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store i32 0, ptr %10, align 4, !tbaa !26
  %91 = load i64, ptr %2, align 8, !tbaa !13
  %.not319 = icmp eq i64 %91, 0
  br i1 %.not319, label %._crit_edge294, label %.lr.ph293

.lr.ph293:                                        ; preds = %86
  %92 = getelementptr inbounds i8, ptr %.0214, i64 32
  %93 = getelementptr inbounds i8, ptr %.0214, i64 40
  br label %101

._crit_edge294:                                   ; preds = %.loopexit273, %86
  %.0227.lcssa = phi i32 [ 0, %86 ], [ %.1228, %.loopexit273 ]
  %.0225.lcssa = phi i32 [ 0, %86 ], [ %.1226, %.loopexit273 ]
  %.0220.lcssa = phi i32 [ 0, %86 ], [ %.1221, %.loopexit273 ]
  %.0219.lcssa = phi i32 [ 0, %86 ], [ %.1, %.loopexit273 ]
  %.lcssa = phi i64 [ 0, %86 ], [ %282, %.loopexit273 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  %94 = sext i32 %.0225.lcssa to i64
  %.not260 = icmp ult i64 %.lcssa, %94
  br i1 %.not260, label %285, label %286

95:                                               ; preds = %72
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %71, i64 noundef 32) #10
  br label %484

97:                                               ; preds = %79
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %78, i64 noundef 32) #10
  br label %484

99:                                               ; preds = %85
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %84, i64 noundef 32) #10
  br label %484

101:                                              ; preds = %.lr.ph293, %.loopexit273
  %102 = phi i64 [ 0, %.lr.ph293 ], [ %281, %.loopexit273 ]
  %.0219291 = phi i32 [ 0, %.lr.ph293 ], [ %.1, %.loopexit273 ]
  %.0220290 = phi i32 [ 0, %.lr.ph293 ], [ %.1221, %.loopexit273 ]
  %.0225289 = phi i32 [ 0, %.lr.ph293 ], [ %.1226, %.loopexit273 ]
  %.0227288 = phi i32 [ 0, %.lr.ph293 ], [ %.1228, %.loopexit273 ]
  %103 = getelementptr inbounds double, ptr %41, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !16
  %105 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %104, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %106 unwind label %142

106:                                              ; preds = %101
  br i1 %105, label %107, label %114

107:                                              ; preds = %106
  %108 = load i32, ptr %10, align 4, !tbaa !26
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds double, ptr %50, i64 %109
  %111 = load double, ptr %110, align 8, !tbaa !16
  %112 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %111, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %113 unwind label %142

113:                                              ; preds = %107
  br i1 %112, label %.loopexit273, label %114

114:                                              ; preds = %113, %106
  %115 = load i32, ptr %10, align 4, !tbaa !26
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %41, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !16
  %119 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %118, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %120 unwind label %142

120:                                              ; preds = %114
  br i1 %119, label %121, label %128

121:                                              ; preds = %120
  %122 = load i32, ptr %10, align 4, !tbaa !26
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %50, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !16
  %126 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %125, double noundef 1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %127 unwind label %142

127:                                              ; preds = %121
  br i1 %126, label %.loopexit273, label %128

128:                                              ; preds = %127, %120
  %129 = load i32, ptr %10, align 4, !tbaa !26
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds double, ptr %41, i64 %130
  %132 = load double, ptr %131, align 8, !tbaa !16
  %133 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %132, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %134 unwind label %142

134:                                              ; preds = %128
  br i1 %133, label %135, label %144

135:                                              ; preds = %134
  %136 = load i32, ptr %10, align 4, !tbaa !26
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds double, ptr %50, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !16
  %140 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %139, double noundef -1.000000e+20, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %141 unwind label %142

141:                                              ; preds = %135
  br i1 %140, label %.loopexit273, label %144

142:                                              ; preds = %153, %144, %135, %128, %121, %114, %107, %101
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %284

144:                                              ; preds = %141, %134
  %145 = load i32, ptr %10, align 4, !tbaa !26
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds double, ptr %41, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !16
  %149 = getelementptr inbounds double, ptr %50, i64 %146
  %150 = load double, ptr %149, align 8, !tbaa !16
  %151 = invoke noundef zeroext i1 @_ZN6format8is_equalIdEEbT_S1_d(double noundef %148, double noundef %150, double noundef 0x3EB0C6F7A0B5ED8D)
          to label %152 unwind label %142

152:                                              ; preds = %144
  br i1 %151, label %153, label %212

153:                                              ; preds = %152
  %154 = load i32, ptr %10, align 4, !tbaa !26
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %41, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !16
  %158 = sext i32 %.0219291 to i64
  %159 = getelementptr inbounds double, ptr %77, i64 %158
  store double %157, ptr %159, align 8, !tbaa !16
  %160 = add nsw i32 %.0219291, 1
  %161 = load ptr, ptr %92, align 8, !tbaa !27
  %162 = getelementptr i32, ptr %161, i64 %155
  %163 = getelementptr i8, ptr %162, i64 4
  %164 = load i32, ptr %163, align 4, !tbaa !26
  %165 = load i32, ptr %162, align 4, !tbaa !26
  %166 = add i32 %164, %.0220290
  %167 = sub i32 %166, %165
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %168 unwind label %142

168:                                              ; preds = %153
  %169 = load ptr, ptr %92, align 8, !tbaa !27
  %170 = load i32, ptr %10, align 4, !tbaa !26
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %169, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !26
  %174 = getelementptr i8, ptr %172, i64 4
  %175 = load i32, ptr %174, align 4, !tbaa !26
  %176 = icmp slt i32 %173, %175
  br i1 %176, label %.lr.ph287, label %.loopexit273

.lr.ph287:                                        ; preds = %168
  %177 = load ptr, ptr %93, align 8, !tbaa !28
  %178 = sext i32 %173 to i64
  %179 = sext i32 %175 to i64
  %180 = sub nsw i64 %179, %178
  %xtraiter356 = and i64 %180, 3
  %lcmp.mod357.not = icmp eq i64 %xtraiter356, 0
  br i1 %lcmp.mod357.not, label %.prol.loopexit355, label %.prol.preheader354

.prol.preheader354:                               ; preds = %.lr.ph287, %.prol.preheader354
  %indvars.iv325.prol = phi i64 [ %indvars.iv.next326.prol, %.prol.preheader354 ], [ %178, %.lr.ph287 ]
  %prol.iter358 = phi i64 [ %prol.iter358.next, %.prol.preheader354 ], [ 0, %.lr.ph287 ]
  %181 = getelementptr inbounds i32, ptr %177, i64 %indvars.iv325.prol
  %182 = load i32, ptr %181, align 4, !tbaa !26
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds i32, ptr %29, i64 %183
  %185 = load i32, ptr %184, align 4, !tbaa !26
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr %184, align 4, !tbaa !26
  %indvars.iv.next326.prol = add nsw i64 %indvars.iv325.prol, 1
  %prol.iter358.next = add i64 %prol.iter358, 1
  %prol.iter358.cmp.not = icmp eq i64 %prol.iter358.next, %xtraiter356
  br i1 %prol.iter358.cmp.not, label %.prol.loopexit355, label %.prol.preheader354, !llvm.loop !29

.prol.loopexit355:                                ; preds = %.prol.preheader354, %.lr.ph287
  %indvars.iv325.unr = phi i64 [ %178, %.lr.ph287 ], [ %indvars.iv.next326.prol, %.prol.preheader354 ]
  %187 = sub nsw i64 %178, %179
  %188 = icmp ugt i64 %187, -4
  br i1 %188, label %.loopexit273, label %.lr.ph287.new

.lr.ph287.new:                                    ; preds = %.prol.loopexit355
  %invariant.gep364 = getelementptr i8, ptr %177, i64 4
  %invariant.gep366 = getelementptr i8, ptr %177, i64 8
  %invariant.gep368 = getelementptr i8, ptr %177, i64 12
  br label %189

189:                                              ; preds = %189, %.lr.ph287.new
  %indvars.iv325 = phi i64 [ %indvars.iv325.unr, %.lr.ph287.new ], [ %indvars.iv.next326.3, %189 ]
  %190 = getelementptr inbounds i32, ptr %177, i64 %indvars.iv325
  %191 = load i32, ptr %190, align 4, !tbaa !26
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %29, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !26
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr %193, align 4, !tbaa !26
  %gep365 = getelementptr i32, ptr %invariant.gep364, i64 %indvars.iv325
  %196 = load i32, ptr %gep365, align 4, !tbaa !26
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i32, ptr %29, i64 %197
  %199 = load i32, ptr %198, align 4, !tbaa !26
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %198, align 4, !tbaa !26
  %gep367 = getelementptr i32, ptr %invariant.gep366, i64 %indvars.iv325
  %201 = load i32, ptr %gep367, align 4, !tbaa !26
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds i32, ptr %29, i64 %202
  %204 = load i32, ptr %203, align 4, !tbaa !26
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %203, align 4, !tbaa !26
  %gep369 = getelementptr i32, ptr %invariant.gep368, i64 %indvars.iv325
  %206 = load i32, ptr %gep369, align 4, !tbaa !26
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds i32, ptr %29, i64 %207
  %209 = load i32, ptr %208, align 4, !tbaa !26
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %208, align 4, !tbaa !26
  %indvars.iv.next326.3 = add nsw i64 %indvars.iv325, 4
  %211 = icmp slt i64 %indvars.iv.next326.3, %179
  br i1 %211, label %189, label %.loopexit273, !llvm.loop !31

212:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %213 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #8
          to label %214 unwind label %254

214:                                              ; preds = %212
  call void @_ZN6format10constraintC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213)
  store ptr %213, ptr %11, align 8, !tbaa !33
  %215 = load i32, ptr %10, align 4, !tbaa !26
  store i32 %215, ptr %213, align 8, !tbaa !34
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds double, ptr %41, i64 %216
  %218 = load double, ptr %217, align 8, !tbaa !16
  %219 = sext i32 %.0225289 to i64
  %220 = getelementptr inbounds double, ptr %83, i64 %219
  store double %218, ptr %220, align 8, !tbaa !16
  %221 = getelementptr inbounds double, ptr %50, i64 %216
  %222 = load double, ptr %221, align 8, !tbaa !16
  %223 = getelementptr inbounds double, ptr %89, i64 %219
  store double %222, ptr %223, align 8, !tbaa !16
  %224 = add nsw i32 %.0225289, 1
  %225 = load ptr, ptr %92, align 8, !tbaa !27
  %226 = getelementptr i32, ptr %225, i64 %216
  %227 = getelementptr i8, ptr %226, i64 4
  %228 = load i32, ptr %227, align 4, !tbaa !26
  %229 = load i32, ptr %226, align 4, !tbaa !26
  %230 = add i32 %228, %.0227288
  %231 = sub i32 %230, %229
  %232 = getelementptr inbounds i8, ptr %213, i64 8
  store double 1.000000e+00, ptr %232, align 8, !tbaa !36
  invoke void @_ZNSt6vectorIPN6format10constraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %233 unwind label %254

233:                                              ; preds = %214
  %234 = load ptr, ptr %92, align 8, !tbaa !27
  %235 = load i32, ptr %10, align 4, !tbaa !26
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i32, ptr %234, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !26
  %239 = getelementptr i8, ptr %237, i64 4
  %240 = load i32, ptr %239, align 4, !tbaa !26
  %241 = icmp slt i32 %238, %240
  br i1 %241, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %233
  %242 = load ptr, ptr %93, align 8, !tbaa !28
  %243 = sext i32 %238 to i64
  %244 = sext i32 %240 to i64
  %245 = sub nsw i64 %244, %243
  %xtraiter = and i64 %245, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.preheader

.prol.preheader:                                  ; preds = %.lr.ph, %.prol.preheader
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.prol.preheader ], [ %243, %.lr.ph ]
  %prol.iter = phi i64 [ %prol.iter.next, %.prol.preheader ], [ 0, %.lr.ph ]
  %246 = getelementptr inbounds i32, ptr %242, i64 %indvars.iv.prol
  %247 = load i32, ptr %246, align 4, !tbaa !26
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds i32, ptr %31, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !26
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %249, align 4, !tbaa !26
  %indvars.iv.next.prol = add nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.prol.loopexit, label %.prol.preheader, !llvm.loop !37

.prol.loopexit:                                   ; preds = %.prol.preheader, %.lr.ph
  %indvars.iv.unr = phi i64 [ %243, %.lr.ph ], [ %indvars.iv.next.prol, %.prol.preheader ]
  %252 = sub nsw i64 %243, %244
  %253 = icmp ugt i64 %252, -4
  br i1 %253, label %._crit_edge, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.prol.loopexit
  %invariant.gep = getelementptr i8, ptr %242, i64 4
  %invariant.gep360 = getelementptr i8, ptr %242, i64 8
  %invariant.gep362 = getelementptr i8, ptr %242, i64 12
  br label %256

._crit_edge:                                      ; preds = %.prol.loopexit, %256, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %.loopexit273

254:                                              ; preds = %214, %212
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %284

256:                                              ; preds = %256, %.lr.ph.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.new ], [ %indvars.iv.next.3, %256 ]
  %257 = getelementptr inbounds i32, ptr %242, i64 %indvars.iv
  %258 = load i32, ptr %257, align 4, !tbaa !26
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds i32, ptr %31, i64 %259
  %261 = load i32, ptr %260, align 4, !tbaa !26
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %260, align 4, !tbaa !26
  %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv
  %263 = load i32, ptr %gep, align 4, !tbaa !26
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %31, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !26
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr %265, align 4, !tbaa !26
  %gep361 = getelementptr i32, ptr %invariant.gep360, i64 %indvars.iv
  %268 = load i32, ptr %gep361, align 4, !tbaa !26
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds i32, ptr %31, i64 %269
  %271 = load i32, ptr %270, align 4, !tbaa !26
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %270, align 4, !tbaa !26
  %gep363 = getelementptr i32, ptr %invariant.gep362, i64 %indvars.iv
  %273 = load i32, ptr %gep363, align 4, !tbaa !26
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %31, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !26
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %275, align 4, !tbaa !26
  %indvars.iv.next.3 = add nsw i64 %indvars.iv, 4
  %278 = icmp slt i64 %indvars.iv.next.3, %244
  br i1 %278, label %256, label %._crit_edge, !llvm.loop !38

.loopexit273:                                     ; preds = %.prol.loopexit355, %189, %168, %._crit_edge, %113, %127, %141
  %.1228 = phi i32 [ %.0227288, %113 ], [ %.0227288, %127 ], [ %.0227288, %141 ], [ %231, %._crit_edge ], [ %.0227288, %168 ], [ %.0227288, %189 ], [ %.0227288, %.prol.loopexit355 ]
  %.1226 = phi i32 [ %.0225289, %113 ], [ %.0225289, %127 ], [ %.0225289, %141 ], [ %224, %._crit_edge ], [ %.0225289, %168 ], [ %.0225289, %189 ], [ %.0225289, %.prol.loopexit355 ]
  %.1221 = phi i32 [ %.0220290, %113 ], [ %.0220290, %127 ], [ %.0220290, %141 ], [ %.0220290, %._crit_edge ], [ %167, %168 ], [ %167, %189 ], [ %167, %.prol.loopexit355 ]
  %.1 = phi i32 [ %.0219291, %113 ], [ %.0219291, %127 ], [ %.0219291, %141 ], [ %.0219291, %._crit_edge ], [ %160, %168 ], [ %160, %189 ], [ %160, %.prol.loopexit355 ]
  %279 = load i32, ptr %10, align 4, !tbaa !26
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %10, align 4, !tbaa !26
  %281 = sext i32 %280 to i64
  %282 = load i64, ptr %2, align 8, !tbaa !13
  %283 = icmp ugt i64 %282, %281
  br i1 %283, label %101, label %._crit_edge294, !llvm.loop !39

284:                                              ; preds = %254, %142
  %.pn = phi { ptr, i32 } [ %143, %142 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  br label %484

285:                                              ; preds = %._crit_edge294
  call void @__assert_fail(ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.130, i32 noundef 498, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #11
  unreachable

286:                                              ; preds = %._crit_edge294
  %287 = sext i32 %.0219.lcssa to i64
  %.not261 = icmp ult i64 %.lcssa, %287
  br i1 %.not261, label %288, label %289

288:                                              ; preds = %286
  call void @__assert_fail(ptr noundef nonnull @.str.134, ptr noundef nonnull @.str.130, i32 noundef 499, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #11
  unreachable

289:                                              ; preds = %286
  %290 = icmp sgt i32 %.0219.lcssa, 0
  br i1 %290, label %291, label %367

291:                                              ; preds = %289
  store i64 %25, ptr %19, align 8, !tbaa !13
  %292 = getelementptr inbounds i8, ptr %19, i64 8
  store i64 %287, ptr %292, align 8, !tbaa !5
  %293 = add nuw nsw i32 %.0219.lcssa, 1
  %294 = zext nneg i32 %293 to i64
  %295 = shl nuw nsw i64 %294, 2
  %296 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %295) #8
          to label %297 unwind label %60

297:                                              ; preds = %291
  %298 = getelementptr inbounds i8, ptr %19, i64 32
  store ptr %296, ptr %298, align 8, !tbaa !27
  %299 = sext i32 %.0220.lcssa to i64
  %300 = icmp slt i32 %.0220.lcssa, 0
  %301 = shl nsw i64 %299, 2
  %302 = select i1 %300, i64 -1, i64 %301
  %303 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %302) #8
          to label %304 unwind label %60

304:                                              ; preds = %297
  %305 = getelementptr inbounds i8, ptr %19, i64 40
  store ptr %303, ptr %305, align 8, !tbaa !28
  %306 = shl nsw i64 %299, 3
  %307 = select i1 %300, i64 -1, i64 %306
  %308 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %307) #8
          to label %309 unwind label %60

309:                                              ; preds = %304
  %310 = getelementptr inbounds i8, ptr %19, i64 48
  store ptr %308, ptr %310, align 8, !tbaa !40
  %311 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %312 = icmp eq i64 %311, %287
  br i1 %312, label %314, label %313

313:                                              ; preds = %309
  call void @__assert_fail(ptr noundef nonnull @.str.135, ptr noundef nonnull @.str.130, i32 noundef 508, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #11
  unreachable

314:                                              ; preds = %309
  %315 = load ptr, ptr %298, align 8, !tbaa !27
  store i32 0, ptr %315, align 4, !tbaa !26
  %316 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %.not320 = icmp eq i64 %316, 0
  br i1 %.not320, label %._crit_edge306, label %.lr.ph305

.lr.ph305:                                        ; preds = %314
  %317 = getelementptr inbounds i8, ptr %.0214, i64 32
  %318 = getelementptr inbounds i8, ptr %.0214, i64 40
  %319 = getelementptr inbounds i8, ptr %.0214, i64 48
  br label %328

.loopexit272:                                     ; preds = %351, %328
  %320 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %321 = icmp ugt i64 %320, %indvars.iv.next336
  br i1 %321, label %328, label %._crit_edge306, !llvm.loop !41

._crit_edge306:                                   ; preds = %.loopexit272, %314
  %322 = load ptr, ptr %75, align 8, !tbaa !18
  store i64 %287, ptr %322, align 8, !tbaa !42
  %323 = getelementptr inbounds i8, ptr %19, i64 16
  store i64 %299, ptr %323, align 8, !tbaa !43
  %324 = load ptr, ptr %298, align 8, !tbaa !27
  %325 = getelementptr inbounds i32, ptr %324, i64 %287
  %326 = load i32, ptr %325, align 4, !tbaa !26
  %327 = icmp eq i32 %326, %.0220.lcssa
  br i1 %327, label %362, label %361

328:                                              ; preds = %.lr.ph305, %.loopexit272
  %indvars.iv335 = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next336, %.loopexit272 ]
  %329 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %indvars.iv335) #9
  %330 = load i32, ptr %329, align 4, !tbaa !26
  %331 = load ptr, ptr %317, align 8, !tbaa !27
  %332 = sext i32 %330 to i64
  %333 = getelementptr i32, ptr %331, i64 %332
  %334 = getelementptr i8, ptr %333, i64 4
  %335 = load i32, ptr %334, align 4, !tbaa !26
  %336 = load i32, ptr %333, align 4, !tbaa !26
  %337 = sub i32 %335, %336
  %338 = load ptr, ptr %298, align 8, !tbaa !27
  %339 = getelementptr inbounds i32, ptr %338, i64 %indvars.iv335
  %340 = load i32, ptr %339, align 4, !tbaa !26
  %341 = add nsw i32 %337, %340
  %indvars.iv.next336 = add nuw nsw i64 %indvars.iv335, 1
  %342 = getelementptr inbounds i32, ptr %338, i64 %indvars.iv.next336
  store i32 %341, ptr %342, align 4, !tbaa !26
  %343 = icmp sgt i32 %337, 0
  br i1 %343, label %.lr.ph302, label %.loopexit272

.lr.ph302:                                        ; preds = %328
  %344 = load i32, ptr %333, align 4, !tbaa !26
  %345 = load ptr, ptr %318, align 8, !tbaa !28
  %346 = load ptr, ptr %305, align 8, !tbaa !28
  %347 = load ptr, ptr %319, align 8, !tbaa !40
  %348 = load ptr, ptr %310, align 8, !tbaa !40
  %349 = sext i32 %344 to i64
  %350 = sext i32 %340 to i64
  br label %351

351:                                              ; preds = %.lr.ph302, %351
  %indvars.iv330 = phi i64 [ %350, %.lr.ph302 ], [ %indvars.iv.next331, %351 ]
  %indvars.iv328 = phi i64 [ %349, %.lr.ph302 ], [ %indvars.iv.next329, %351 ]
  %352 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv328
  %353 = load i32, ptr %352, align 4, !tbaa !26
  %354 = getelementptr inbounds i32, ptr %346, i64 %indvars.iv330
  store i32 %353, ptr %354, align 4, !tbaa !26
  %355 = getelementptr inbounds double, ptr %347, i64 %indvars.iv328
  %356 = load double, ptr %355, align 8, !tbaa !16
  %357 = getelementptr inbounds double, ptr %348, i64 %indvars.iv330
  store double %356, ptr %357, align 8, !tbaa !16
  %indvars.iv.next331 = add nsw i64 %indvars.iv330, 1
  %indvars.iv.next329 = add nsw i64 %indvars.iv328, 1
  %358 = load i32, ptr %342, align 4, !tbaa !26
  %359 = sext i32 %358 to i64
  %360 = icmp slt i64 %indvars.iv.next331, %359
  br i1 %360, label %351, label %.loopexit272, !llvm.loop !44

361:                                              ; preds = %._crit_edge306
  call void @__assert_fail(ptr noundef nonnull @.str.136, ptr noundef nonnull @.str.130, i32 noundef 522, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #11
  unreachable

362:                                              ; preds = %._crit_edge306
  %363 = getelementptr inbounds i8, ptr %4, i64 352
  store ptr %19, ptr %363, align 8, !tbaa !45
  %364 = invoke noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef nonnull %19)
          to label %365 unwind label %60

365:                                              ; preds = %362
  %366 = getelementptr inbounds i8, ptr %4, i64 336
  store ptr %364, ptr %366, align 8, !tbaa !46
  br label %374

367:                                              ; preds = %289
  %368 = load ptr, ptr %75, align 8, !tbaa !18
  %369 = icmp eq ptr %368, null
  br i1 %369, label %371, label %370

370:                                              ; preds = %367
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %368) #9
  call void @_ZdlPvm(ptr noundef nonnull %368, i64 noundef 32) #10
  br label %371

371:                                              ; preds = %367, %370
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #9
  call void @_ZdlPvm(ptr noundef nonnull %19, i64 noundef 56) #10
  %372 = getelementptr inbounds i8, ptr %4, i64 336
  store ptr null, ptr %372, align 8, !tbaa !46
  %373 = getelementptr inbounds i8, ptr %4, i64 352
  store ptr null, ptr %373, align 8, !tbaa !45
  store ptr null, ptr %75, align 8, !tbaa !18
  br label %374

374:                                              ; preds = %371, %365
  %375 = icmp sgt i32 %.0225.lcssa, 0
  br i1 %375, label %376, label %456

376:                                              ; preds = %374
  store i64 %25, ptr %20, align 8, !tbaa !13
  %377 = getelementptr inbounds i8, ptr %20, i64 8
  store i64 %94, ptr %377, align 8, !tbaa !5
  %378 = add nuw nsw i32 %.0225.lcssa, 1
  %379 = zext nneg i32 %378 to i64
  %380 = shl nuw nsw i64 %379, 2
  %381 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %380) #8
          to label %382 unwind label %60

382:                                              ; preds = %376
  %383 = getelementptr inbounds i8, ptr %20, i64 32
  store ptr %381, ptr %383, align 8, !tbaa !27
  %384 = sext i32 %.0227.lcssa to i64
  %385 = icmp slt i32 %.0227.lcssa, 0
  %386 = shl nsw i64 %384, 2
  %387 = select i1 %385, i64 -1, i64 %386
  %388 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %387) #8
          to label %389 unwind label %60

389:                                              ; preds = %382
  %390 = getelementptr inbounds i8, ptr %20, i64 40
  store ptr %388, ptr %390, align 8, !tbaa !28
  %391 = shl nsw i64 %384, 3
  %392 = select i1 %385, i64 -1, i64 %391
  %393 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %392) #8
          to label %394 unwind label %60

394:                                              ; preds = %389
  %395 = getelementptr inbounds i8, ptr %20, i64 48
  store ptr %393, ptr %395, align 8, !tbaa !40
  %396 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %397 = icmp eq i64 %396, %94
  br i1 %397, label %399, label %398

398:                                              ; preds = %394
  call void @__assert_fail(ptr noundef nonnull @.str.132, ptr noundef nonnull @.str.130, i32 noundef 539, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN6format31find_smp_inequalities_by_boundsEPNS_5DenseES1_PNS_3CSCES3_PNS_3SMPE) #11
  unreachable

399:                                              ; preds = %394
  %400 = load ptr, ptr %383, align 8, !tbaa !27
  store i32 0, ptr %400, align 4, !tbaa !26
  %401 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not321 = icmp eq i64 %401, 0
  br i1 %.not321, label %._crit_edge314, label %.lr.ph313

.lr.ph313:                                        ; preds = %399
  %402 = getelementptr inbounds i8, ptr %.0214, i64 32
  %403 = getelementptr inbounds i8, ptr %.0214, i64 40
  %404 = getelementptr inbounds i8, ptr %.0214, i64 48
  br label %413

.loopexit:                                        ; preds = %441, %413
  %405 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %406 = icmp ugt i64 %405, %indvars.iv.next346
  br i1 %406, label %413, label %._crit_edge314, !llvm.loop !47

._crit_edge314:                                   ; preds = %.loopexit, %399
  %407 = load ptr, ptr %383, align 8, !tbaa !27
  %408 = getelementptr inbounds i32, ptr %407, i64 %94
  %409 = load i32, ptr %408, align 4, !tbaa !26
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i8, ptr %20, i64 16
  store i64 %410, ptr %411, align 8, !tbaa !43
  %412 = invoke noundef ptr @_ZN7sym_lib17transpose_generalEPN6format3CSCE(ptr noundef nonnull %20)
          to label %452 unwind label %60

413:                                              ; preds = %.lr.ph313, %.loopexit
  %indvars.iv345 = phi i64 [ 0, %.lr.ph313 ], [ %indvars.iv.next346, %.loopexit ]
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv345) #9
  %415 = load ptr, ptr %414, align 8, !tbaa !33
  %416 = load i32, ptr %415, align 8, !tbaa !34
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv345) #9
  %418 = load ptr, ptr %417, align 8, !tbaa !33
  %419 = getelementptr inbounds i8, ptr %418, i64 8
  %420 = load double, ptr %419, align 8, !tbaa !36
  %421 = load ptr, ptr %402, align 8, !tbaa !27
  %422 = sext i32 %416 to i64
  %423 = getelementptr i32, ptr %421, i64 %422
  %424 = getelementptr i8, ptr %423, i64 4
  %425 = load i32, ptr %424, align 4, !tbaa !26
  %426 = load i32, ptr %423, align 4, !tbaa !26
  %427 = sub i32 %425, %426
  %428 = load ptr, ptr %383, align 8, !tbaa !27
  %429 = getelementptr inbounds i32, ptr %428, i64 %indvars.iv345
  %430 = load i32, ptr %429, align 4, !tbaa !26
  %431 = add nsw i32 %427, %430
  %indvars.iv.next346 = add nuw nsw i64 %indvars.iv345, 1
  %432 = getelementptr inbounds i32, ptr %428, i64 %indvars.iv.next346
  store i32 %431, ptr %432, align 4, !tbaa !26
  %433 = icmp sgt i32 %427, 0
  br i1 %433, label %.lr.ph310, label %.loopexit

.lr.ph310:                                        ; preds = %413
  %434 = load i32, ptr %423, align 4, !tbaa !26
  %435 = load ptr, ptr %403, align 8, !tbaa !28
  %436 = load ptr, ptr %390, align 8, !tbaa !28
  %437 = load ptr, ptr %404, align 8, !tbaa !40
  %438 = load ptr, ptr %395, align 8, !tbaa !40
  %439 = sext i32 %434 to i64
  %440 = sext i32 %430 to i64
  br label %441

441:                                              ; preds = %.lr.ph310, %441
  %indvars.iv340 = phi i64 [ %440, %.lr.ph310 ], [ %indvars.iv.next341, %441 ]
  %indvars.iv338 = phi i64 [ %439, %.lr.ph310 ], [ %indvars.iv.next339, %441 ]
  %442 = getelementptr inbounds i32, ptr %435, i64 %indvars.iv338
  %443 = load i32, ptr %442, align 4, !tbaa !26
  %444 = getelementptr inbounds i32, ptr %436, i64 %indvars.iv340
  store i32 %443, ptr %444, align 4, !tbaa !26
  %445 = getelementptr inbounds double, ptr %437, i64 %indvars.iv338
  %446 = load double, ptr %445, align 8, !tbaa !16
  %447 = fmul double %420, %446
  %448 = getelementptr inbounds double, ptr %438, i64 %indvars.iv340
  store double %447, ptr %448, align 8, !tbaa !16
  %indvars.iv.next341 = add nsw i64 %indvars.iv340, 1
  %indvars.iv.next339 = add nsw i64 %indvars.iv338, 1
  %449 = load i32, ptr %432, align 4, !tbaa !26
  %450 = sext i32 %449 to i64
  %451 = icmp slt i64 %indvars.iv.next341, %450
  br i1 %451, label %441, label %.loopexit, !llvm.loop !48

452:                                              ; preds = %._crit_edge314
  %453 = getelementptr inbounds i8, ptr %4, i64 344
  store ptr %412, ptr %453, align 8, !tbaa !49
  %454 = load ptr, ptr %87, align 8, !tbaa !24
  store i64 %94, ptr %454, align 8, !tbaa !42
  %455 = load ptr, ptr %81, align 8, !tbaa !23
  store i64 %94, ptr %455, align 8, !tbaa !42
  br label %466

456:                                              ; preds = %374
  %457 = load ptr, ptr %81, align 8, !tbaa !23
  %458 = icmp eq ptr %457, null
  br i1 %458, label %460, label %459

459:                                              ; preds = %456
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %457) #9
  call void @_ZdlPvm(ptr noundef nonnull %457, i64 noundef 32) #10
  br label %460

460:                                              ; preds = %459, %456
  %461 = load ptr, ptr %87, align 8, !tbaa !24
  %462 = icmp eq ptr %461, null
  br i1 %462, label %464, label %463

463:                                              ; preds = %460
  call void @_ZN6format5DenseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %461) #9
  call void @_ZdlPvm(ptr noundef nonnull %461, i64 noundef 32) #10
  br label %464

464:                                              ; preds = %460, %463
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #9
  call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef 56) #10
  %465 = getelementptr inbounds i8, ptr %4, i64 344
  store ptr null, ptr %465, align 8, !tbaa !49
  store ptr null, ptr %90, align 8, !tbaa !25
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %81, i8 0, i64 16, i1 false)
  br label %466

466:                                              ; preds = %464, %452
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %467 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not322 = icmp eq i64 %467, 0
  br i1 %.not322, label %._crit_edge318, label %.lr.ph317

._crit_edge318:                                   ; preds = %473, %466
  %468 = icmp eq ptr %41, null
  %or.cond = select i1 %.not254, i1 true, i1 %468
  br i1 %or.cond, label %477, label %476

.lr.ph317:                                        ; preds = %466, %473
  %indvars.iv348 = phi i64 [ %indvars.iv.next349, %473 ], [ 0, %466 ]
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6format10constraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv348) #9
  %470 = load ptr, ptr %469, align 8, !tbaa !33
  %471 = icmp eq ptr %470, null
  br i1 %471, label %473, label %472

472:                                              ; preds = %.lr.ph317
  call void @_ZdlPvm(ptr noundef nonnull %470, i64 noundef 16) #10
  br label %473

473:                                              ; preds = %.lr.ph317, %472
  %indvars.iv.next349 = add nuw nsw i64 %indvars.iv348, 1
  %474 = call noundef i64 @_ZNKSt6vectorIPN6format10constraintESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %475 = icmp ugt i64 %474, %indvars.iv.next349
  br i1 %475, label %.lr.ph317, label %._crit_edge318, !llvm.loop !50

476:                                              ; preds = %._crit_edge318
  call void @_ZdaPv(ptr noundef nonnull %41) #10
  br label %477

477:                                              ; preds = %476, %._crit_edge318
  %478 = icmp eq ptr %50, null
  %or.cond267 = select i1 %.not256, i1 true, i1 %478
  br i1 %or.cond267, label %480, label %479

479:                                              ; preds = %477
  call void @_ZdaPv(ptr noundef nonnull %50) #10
  br label %480

480:                                              ; preds = %477, %479
  call void @_ZdaPv(ptr noundef nonnull %31) #10
  call void @_ZdaPv(ptr noundef nonnull %29) #10
  %481 = icmp eq ptr %.0214, null
  %or.cond268 = or i1 %.not253, %481
  br i1 %or.cond268, label %483, label %482

482:                                              ; preds = %480
  call void @_ZN6format3CSCD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.0214) #9
  call void @_ZdlPvm(ptr noundef nonnull %.0214, i64 noundef 56) #10
  br label %483

483:                                              ; preds = %482, %480
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  br label %485

484:                                              ; preds = %56, %60, %62, %68, %95, %97, %99, %284, %58, %54
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %55, %54 ], [ %57, %56 ], [ %59, %58 ], [ %.pn, %284 ], [ %61, %60 ], [ %100, %99 ], [ %98, %97 ], [ %96, %95 ], [ %69, %68 ], [ %63, %62 ]
  call void @_ZNSt6vectorIPN6format10constraintESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  resume { ptr, i32 } %.pn.pn.pn.pn.pn

485:                                              ; preds = %483, %12
  ret i1 true
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { mustprogress 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 #6 = { mustprogress nounwind 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 #7 = { inlinehint mustprogress 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 #8 = { builtin allocsize(0) }
attributes #9 = { nounwind }
attributes #10 = { builtin nounwind }
attributes #11 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"_ZTSN6format3CSCE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !11, i64 28, !11, i64 29, !12, i64 32, !12, i64 40, !12, i64 48}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!6, !7, i64 0}
!14 = !{!15, !12, i64 24}
!15 = !{!"_ZTSN6format5DenseE", !7, i64 0, !7, i64 8, !7, i64 16, !12, i64 24}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !8, i64 0}
!18 = !{!19, !12, i64 376}
!19 = !{!"_ZTSN6format3SMPE", !10, i64 0, !20, i64 8, !20, i64 40, !22, i64 72, !12, i64 328, !12, i64 336, !12, i64 344, !12, i64 352, !12, i64 360, !12, i64 368, !12, i64 376, !12, i64 384, !12, i64 392, !17, i64 400, !12, i64 408, !12, i64 416, !17, i64 424}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !7, i64 8, !8, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!22 = !{!"_ZTSN6format11DescriptionE", !20, i64 0, !20, i64 32, !20, i64 64, !20, i64 96, !20, i64 128, !20, i64 160, !20, i64 192, !20, i64 224}
!23 = !{!19, !12, i64 384}
!24 = !{!19, !12, i64 392}
!25 = !{!19, !12, i64 360}
!26 = !{!10, !10, i64 0}
!27 = !{!6, !12, i64 32}
!28 = !{!6, !12, i64 40}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!12, !12, i64 0}
!34 = !{!35, !10, i64 0}
!35 = !{!"_ZTSN6format10constraintE", !10, i64 0, !17, i64 8}
!36 = !{!35, !17, i64 8}
!37 = distinct !{!37, !30}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}
!40 = !{!6, !12, i64 48}
!41 = distinct !{!41, !32}
!42 = !{!15, !7, i64 0}
!43 = !{!6, !7, i64 16}
!44 = distinct !{!44, !32}
!45 = !{!19, !12, i64 352}
!46 = !{!19, !12, i64 336}
!47 = distinct !{!47, !32}
!48 = distinct !{!48, !32}
!49 = !{!19, !12, i64 344}
!50 = distinct !{!50, !32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass