; LLVM IR from kthohr/gcem :: tests (factorial)

; 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::__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] }
%"class.std::allocator" = type { i8 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { i8 }

@GCEM_TEST_NUMBER = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::allocator", align 1
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon, align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca x86_fp80, align 16
  %11 = alloca x86_fp80, align 16
  %12 = alloca x86_fp80, align 16
  %13 = alloca i8, align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca x86_fp80, align 16
  %19 = alloca x86_fp80, align 16
  %20 = alloca x86_fp80, align 16
  %21 = alloca i8, align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca x86_fp80, align 16
  %27 = alloca x86_fp80, align 16
  %28 = alloca x86_fp80, align 16
  %29 = alloca i8, align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca x86_fp80, align 16
  %35 = alloca x86_fp80, align 16
  %36 = alloca x86_fp80, align 16
  %37 = alloca i8, align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca x86_fp80, align 16
  %43 = alloca x86_fp80, align 16
  %44 = alloca x86_fp80, align 16
  %45 = alloca i8, align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca x86_fp80, align 16
  %51 = alloca x86_fp80, align 16
  %52 = alloca x86_fp80, align 16
  %53 = alloca i8, align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator", align 1
  %58 = alloca i64, align 8
  %59 = alloca x86_fp80, align 16
  %60 = alloca x86_fp80, align 16
  %61 = alloca i8, align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator", align 1
  %66 = alloca i64, align 8
  %67 = alloca x86_fp80, align 16
  %68 = alloca x86_fp80, align 16
  %69 = alloca i8, align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::allocator", align 1
  %74 = alloca i64, align 8
  %75 = alloca x86_fp80, align 16
  %76 = alloca x86_fp80, align 16
  %77 = alloca i8, align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::allocator", align 1
  %82 = alloca i64, align 8
  %83 = alloca x86_fp80, align 16
  %84 = alloca x86_fp80, align 16
  %85 = alloca i8, align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::__cxx11::basic_string", align 8
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca i64, align 8
  %91 = alloca x86_fp80, align 16
  %92 = alloca x86_fp80, align 16
  %93 = alloca i8, align 1
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::__cxx11::basic_string", align 8
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca i64, align 8
  %99 = alloca x86_fp80, align 16
  %100 = alloca x86_fp80, align 16
  %101 = alloca i8, align 1
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::__cxx11::basic_string", align 8
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.std::allocator", align 1
  %106 = alloca i64, align 8
  %107 = alloca x86_fp80, align 16
  %108 = alloca x86_fp80, align 16
  %109 = alloca i8, align 1
  %110 = alloca %"class.std::__cxx11::basic_string", align 8
  %111 = alloca %"class.std::__cxx11::basic_string", align 8
  %112 = alloca %"class.std::__cxx11::basic_string", align 8
  %113 = alloca %"class.std::allocator", align 1
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %114 unwind label %140

114:                                              ; preds = %0
  invoke void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %2)
          to label %115 unwind label %144

115:                                              ; preds = %114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  call void @"_ZNSt8functionIFeeEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  %116 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %118 unwind label %149

118:                                              ; preds = %115
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #6
  %119 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4000C666666666666666) #6
  store x86_fp80 %119, ptr %10, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #6
  %120 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4000C666666666666666)
          to label %121 unwind label %153

121:                                              ; preds = %118
  store x86_fp80 %120, ptr %11, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #6
  %122 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %123 = load x86_fp80, ptr %11, align 16, !tbaa !9
  %124 = fsub x86_fp80 %122, %123
  %125 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %124)
          to label %126 unwind label %157

126:                                              ; preds = %121
  %127 = load x86_fp80, ptr %11, align 16, !tbaa !9
  %128 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %127)
          to label %129 unwind label %157

129:                                              ; preds = %126
  %130 = fadd x86_fp80 0xK3FFF8000000000000000, %128
  %131 = fdiv x86_fp80 %125, %130
  store x86_fp80 %131, ptr %12, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  store i8 0, ptr %13, align 1, !tbaa !11
  %132 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %133 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %132)
          to label %134 unwind label %161

134:                                              ; preds = %129
  br i1 %133, label %135, label %165

135:                                              ; preds = %134
  %136 = load x86_fp80, ptr %11, align 16, !tbaa !9
  %137 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %136)
          to label %138 unwind label %161

138:                                              ; preds = %135
  br i1 %137, label %139, label %165

139:                                              ; preds = %138
  store i8 1, ptr %13, align 1, !tbaa !11
  br label %194

140:                                              ; preds = %0
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %4, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %5, align 4
  br label %148

144:                                              ; preds = %114
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %4, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  br label %148

148:                                              ; preds = %144, %140
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #6
  br label %1291

149:                                              ; preds = %115
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %4, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  br label %234

153:                                              ; preds = %118
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %4, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %5, align 4
  br label %233

157:                                              ; preds = %126, %121
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %4, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %5, align 4
  br label %232

161:                                              ; preds = %197, %182, %169, %165, %135, %129
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %4, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %5, align 4
  br label %231

165:                                              ; preds = %138, %134
  %166 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %167 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %166)
          to label %168 unwind label %161

168:                                              ; preds = %165
  br i1 %167, label %178, label %169

169:                                              ; preds = %168
  %170 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %171 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %170)
          to label %172 unwind label %161

172:                                              ; preds = %169
  br i1 %171, label %173, label %178

173:                                              ; preds = %172
  %174 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %175 = load x86_fp80, ptr %11, align 16, !tbaa !9
  %176 = fcmp oeq x86_fp80 %174, %175
  br i1 %176, label %177, label %178

177:                                              ; preds = %173
  store i8 1, ptr %13, align 1, !tbaa !11
  br label %193

178:                                              ; preds = %173, %172, %168
  %179 = load x86_fp80, ptr %12, align 16, !tbaa !9
  %180 = fcmp olt x86_fp80 %179, 0xK3FF8A3D70A3D70A3D800
  br i1 %180, label %181, label %182

181:                                              ; preds = %178
  store i8 1, ptr %13, align 1, !tbaa !11
  br label %192

182:                                              ; preds = %178
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %183 unwind label %161

183:                                              ; preds = %182
  %184 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %185 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %186 = load x86_fp80, ptr %11, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %14, i32 noundef %184, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %185, x86_fp80 noundef %186, x86_fp80 noundef 0xK4000C666666666666666)
          to label %187 unwind label %188

187:                                              ; preds = %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %192

188:                                              ; preds = %183
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %4, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %231

192:                                              ; preds = %187, %181
  br label %193

193:                                              ; preds = %192, %177
  br label %194

194:                                              ; preds = %193, %139
  %195 = load i8, ptr %13, align 1, !tbaa !11, !range !13, !noundef !14
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %206

197:                                              ; preds = %194
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %198 unwind label %161

198:                                              ; preds = %197
  %199 = load x86_fp80, ptr %10, align 16, !tbaa !9
  %200 = load x86_fp80, ptr %12, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %15, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %199, x86_fp80 noundef %200, x86_fp80 noundef 0xK4000C666666666666666)
          to label %201 unwind label %202

201:                                              ; preds = %198
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %206

202:                                              ; preds = %198
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %4, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %231

206:                                              ; preds = %201, %194
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #6
  %207 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %208 = add nsw i32 %207, 1
  store i32 %208, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %209 unwind label %235

209:                                              ; preds = %206
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #6
  %210 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4001E000000000000000) #6
  store x86_fp80 %210, ptr %18, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #6
  %211 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4001E000000000000000)
          to label %212 unwind label %239

212:                                              ; preds = %209
  store x86_fp80 %211, ptr %19, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #6
  %213 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %214 = load x86_fp80, ptr %19, align 16, !tbaa !9
  %215 = fsub x86_fp80 %213, %214
  %216 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %215)
          to label %217 unwind label %243

217:                                              ; preds = %212
  %218 = load x86_fp80, ptr %19, align 16, !tbaa !9
  %219 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %218)
          to label %220 unwind label %243

220:                                              ; preds = %217
  %221 = fadd x86_fp80 0xK3FFF8000000000000000, %219
  %222 = fdiv x86_fp80 %216, %221
  store x86_fp80 %222, ptr %20, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  store i8 0, ptr %21, align 1, !tbaa !11
  %223 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %224 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %223)
          to label %225 unwind label %247

225:                                              ; preds = %220
  br i1 %224, label %226, label %251

226:                                              ; preds = %225
  %227 = load x86_fp80, ptr %19, align 16, !tbaa !9
  %228 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %227)
          to label %229 unwind label %247

229:                                              ; preds = %226
  br i1 %228, label %230, label %251

230:                                              ; preds = %229
  store i8 1, ptr %21, align 1, !tbaa !11
  br label %280

231:                                              ; preds = %202, %188, %161
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %232

232:                                              ; preds = %231, %157
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #6
  br label %233

233:                                              ; preds = %232, %153
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %234

234:                                              ; preds = %233, %149
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #6
  br label %1290

235:                                              ; preds = %206
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %4, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %320

239:                                              ; preds = %209
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %4, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %5, align 4
  br label %319

243:                                              ; preds = %217, %212
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %4, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %5, align 4
  br label %318

247:                                              ; preds = %283, %268, %255, %251, %226, %220
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %4, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %5, align 4
  br label %317

251:                                              ; preds = %229, %225
  %252 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %253 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %252)
          to label %254 unwind label %247

254:                                              ; preds = %251
  br i1 %253, label %264, label %255

255:                                              ; preds = %254
  %256 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %257 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %256)
          to label %258 unwind label %247

258:                                              ; preds = %255
  br i1 %257, label %259, label %264

259:                                              ; preds = %258
  %260 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %261 = load x86_fp80, ptr %19, align 16, !tbaa !9
  %262 = fcmp oeq x86_fp80 %260, %261
  br i1 %262, label %263, label %264

263:                                              ; preds = %259
  store i8 1, ptr %21, align 1, !tbaa !11
  br label %279

264:                                              ; preds = %259, %258, %254
  %265 = load x86_fp80, ptr %20, align 16, !tbaa !9
  %266 = fcmp olt x86_fp80 %265, 0xK3FF8A3D70A3D70A3D800
  br i1 %266, label %267, label %268

267:                                              ; preds = %264
  store i8 1, ptr %21, align 1, !tbaa !11
  br label %278

268:                                              ; preds = %264
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %269 unwind label %247

269:                                              ; preds = %268
  %270 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %271 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %272 = load x86_fp80, ptr %19, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %22, i32 noundef %270, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %271, x86_fp80 noundef %272, x86_fp80 noundef 0xK4001E000000000000000)
          to label %273 unwind label %274

273:                                              ; preds = %269
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %278

274:                                              ; preds = %269
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %4, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %317

278:                                              ; preds = %273, %267
  br label %279

279:                                              ; preds = %278, %263
  br label %280

280:                                              ; preds = %279, %230
  %281 = load i8, ptr %21, align 1, !tbaa !11, !range !13, !noundef !14
  %282 = trunc i8 %281 to i1
  br i1 %282, label %283, label %292

283:                                              ; preds = %280
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %284 unwind label %247

284:                                              ; preds = %283
  %285 = load x86_fp80, ptr %18, align 16, !tbaa !9
  %286 = load x86_fp80, ptr %20, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %23, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %285, x86_fp80 noundef %286, x86_fp80 noundef 0xK4001E000000000000000)
          to label %287 unwind label %288

287:                                              ; preds = %284
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %292

288:                                              ; preds = %284
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %4, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %317

292:                                              ; preds = %287, %280
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  %293 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %295 unwind label %321

295:                                              ; preds = %292
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #6
  %296 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002A000000000000000) #6
  store x86_fp80 %296, ptr %26, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #6
  %297 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002A000000000000000)
          to label %298 unwind label %325

298:                                              ; preds = %295
  store x86_fp80 %297, ptr %27, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #6
  %299 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %300 = load x86_fp80, ptr %27, align 16, !tbaa !9
  %301 = fsub x86_fp80 %299, %300
  %302 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %301)
          to label %303 unwind label %329

303:                                              ; preds = %298
  %304 = load x86_fp80, ptr %27, align 16, !tbaa !9
  %305 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %304)
          to label %306 unwind label %329

306:                                              ; preds = %303
  %307 = fadd x86_fp80 0xK3FFF8000000000000000, %305
  %308 = fdiv x86_fp80 %302, %307
  store x86_fp80 %308, ptr %28, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  store i8 0, ptr %29, align 1, !tbaa !11
  %309 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %310 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %309)
          to label %311 unwind label %333

311:                                              ; preds = %306
  br i1 %310, label %312, label %337

312:                                              ; preds = %311
  %313 = load x86_fp80, ptr %27, align 16, !tbaa !9
  %314 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %313)
          to label %315 unwind label %333

315:                                              ; preds = %312
  br i1 %314, label %316, label %337

316:                                              ; preds = %315
  store i8 1, ptr %29, align 1, !tbaa !11
  br label %366

317:                                              ; preds = %288, %274, %247
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  br label %318

318:                                              ; preds = %317, %243
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  br label %319

319:                                              ; preds = %318, %239
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %320

320:                                              ; preds = %319, %235
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %1290

321:                                              ; preds = %292
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %4, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %406

325:                                              ; preds = %295
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %4, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %5, align 4
  br label %405

329:                                              ; preds = %303, %298
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %4, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %5, align 4
  br label %404

333:                                              ; preds = %369, %354, %341, %337, %312, %306
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %4, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %5, align 4
  br label %403

337:                                              ; preds = %315, %311
  %338 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %339 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %338)
          to label %340 unwind label %333

340:                                              ; preds = %337
  br i1 %339, label %350, label %341

341:                                              ; preds = %340
  %342 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %343 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %342)
          to label %344 unwind label %333

344:                                              ; preds = %341
  br i1 %343, label %345, label %350

345:                                              ; preds = %344
  %346 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %347 = load x86_fp80, ptr %27, align 16, !tbaa !9
  %348 = fcmp oeq x86_fp80 %346, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %345
  store i8 1, ptr %29, align 1, !tbaa !11
  br label %365

350:                                              ; preds = %345, %344, %340
  %351 = load x86_fp80, ptr %28, align 16, !tbaa !9
  %352 = fcmp olt x86_fp80 %351, 0xK3FF8A3D70A3D70A3D800
  br i1 %352, label %353, label %354

353:                                              ; preds = %350
  store i8 1, ptr %29, align 1, !tbaa !11
  br label %364

354:                                              ; preds = %350
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %355 unwind label %333

355:                                              ; preds = %354
  %356 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %357 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %358 = load x86_fp80, ptr %27, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %30, i32 noundef %356, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %357, x86_fp80 noundef %358, x86_fp80 noundef 0xK4002A000000000000000)
          to label %359 unwind label %360

359:                                              ; preds = %355
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %364

360:                                              ; preds = %355
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %4, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %403

364:                                              ; preds = %359, %353
  br label %365

365:                                              ; preds = %364, %349
  br label %366

366:                                              ; preds = %365, %316
  %367 = load i8, ptr %29, align 1, !tbaa !11, !range !13, !noundef !14
  %368 = trunc i8 %367 to i1
  br i1 %368, label %369, label %378

369:                                              ; preds = %366
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %370 unwind label %333

370:                                              ; preds = %369
  %371 = load x86_fp80, ptr %26, align 16, !tbaa !9
  %372 = load x86_fp80, ptr %28, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %31, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %371, x86_fp80 noundef %372, x86_fp80 noundef 0xK4002A000000000000000)
          to label %373 unwind label %374

373:                                              ; preds = %370
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %378

374:                                              ; preds = %370
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %4, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %403

378:                                              ; preds = %373, %366
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #6
  %379 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %381 unwind label %407

381:                                              ; preds = %378
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #6
  %382 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002C000000000000000) #6
  store x86_fp80 %382, ptr %34, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #6
  %383 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002C000000000000000)
          to label %384 unwind label %411

384:                                              ; preds = %381
  store x86_fp80 %383, ptr %35, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #6
  %385 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %386 = load x86_fp80, ptr %35, align 16, !tbaa !9
  %387 = fsub x86_fp80 %385, %386
  %388 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %387)
          to label %389 unwind label %415

389:                                              ; preds = %384
  %390 = load x86_fp80, ptr %35, align 16, !tbaa !9
  %391 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %390)
          to label %392 unwind label %415

392:                                              ; preds = %389
  %393 = fadd x86_fp80 0xK3FFF8000000000000000, %391
  %394 = fdiv x86_fp80 %388, %393
  store x86_fp80 %394, ptr %36, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  store i8 0, ptr %37, align 1, !tbaa !11
  %395 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %396 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %395)
          to label %397 unwind label %419

397:                                              ; preds = %392
  br i1 %396, label %398, label %423

398:                                              ; preds = %397
  %399 = load x86_fp80, ptr %35, align 16, !tbaa !9
  %400 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %399)
          to label %401 unwind label %419

401:                                              ; preds = %398
  br i1 %400, label %402, label %423

402:                                              ; preds = %401
  store i8 1, ptr %37, align 1, !tbaa !11
  br label %452

403:                                              ; preds = %374, %360, %333
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  br label %404

404:                                              ; preds = %403, %329
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  br label %405

405:                                              ; preds = %404, %325
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %406

406:                                              ; preds = %405, %321
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #6
  br label %1290

407:                                              ; preds = %378
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %4, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  br label %492

411:                                              ; preds = %381
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %4, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %5, align 4
  br label %491

415:                                              ; preds = %389, %384
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %4, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %5, align 4
  br label %490

419:                                              ; preds = %455, %440, %427, %423, %398, %392
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %4, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %5, align 4
  br label %489

423:                                              ; preds = %401, %397
  %424 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %425 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %424)
          to label %426 unwind label %419

426:                                              ; preds = %423
  br i1 %425, label %436, label %427

427:                                              ; preds = %426
  %428 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %429 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %428)
          to label %430 unwind label %419

430:                                              ; preds = %427
  br i1 %429, label %431, label %436

431:                                              ; preds = %430
  %432 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %433 = load x86_fp80, ptr %35, align 16, !tbaa !9
  %434 = fcmp oeq x86_fp80 %432, %433
  br i1 %434, label %435, label %436

435:                                              ; preds = %431
  store i8 1, ptr %37, align 1, !tbaa !11
  br label %451

436:                                              ; preds = %431, %430, %426
  %437 = load x86_fp80, ptr %36, align 16, !tbaa !9
  %438 = fcmp olt x86_fp80 %437, 0xK3FF8A3D70A3D70A3D800
  br i1 %438, label %439, label %440

439:                                              ; preds = %436
  store i8 1, ptr %37, align 1, !tbaa !11
  br label %450

440:                                              ; preds = %436
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %441 unwind label %419

441:                                              ; preds = %440
  %442 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %443 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %444 = load x86_fp80, ptr %35, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %38, i32 noundef %442, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %443, x86_fp80 noundef %444, x86_fp80 noundef 0xK4002C000000000000000)
          to label %445 unwind label %446

445:                                              ; preds = %441
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %450

446:                                              ; preds = %441
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %4, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %489

450:                                              ; preds = %445, %439
  br label %451

451:                                              ; preds = %450, %435
  br label %452

452:                                              ; preds = %451, %402
  %453 = load i8, ptr %37, align 1, !tbaa !11, !range !13, !noundef !14
  %454 = trunc i8 %453 to i1
  br i1 %454, label %455, label %464

455:                                              ; preds = %452
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %456 unwind label %419

456:                                              ; preds = %455
  %457 = load x86_fp80, ptr %34, align 16, !tbaa !9
  %458 = load x86_fp80, ptr %36, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %39, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %457, x86_fp80 noundef %458, x86_fp80 noundef 0xK4002C000000000000000)
          to label %459 unwind label %460

459:                                              ; preds = %456
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %464

460:                                              ; preds = %456
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %4, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %489

464:                                              ; preds = %459, %452
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  %465 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %467 unwind label %493

467:                                              ; preds = %464
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #6
  %468 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002E000000000000000) #6
  store x86_fp80 %468, ptr %42, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #6
  %469 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002E000000000000000)
          to label %470 unwind label %497

470:                                              ; preds = %467
  store x86_fp80 %469, ptr %43, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  %471 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %472 = load x86_fp80, ptr %43, align 16, !tbaa !9
  %473 = fsub x86_fp80 %471, %472
  %474 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %473)
          to label %475 unwind label %501

475:                                              ; preds = %470
  %476 = load x86_fp80, ptr %43, align 16, !tbaa !9
  %477 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %476)
          to label %478 unwind label %501

478:                                              ; preds = %475
  %479 = fadd x86_fp80 0xK3FFF8000000000000000, %477
  %480 = fdiv x86_fp80 %474, %479
  store x86_fp80 %480, ptr %44, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  store i8 0, ptr %45, align 1, !tbaa !11
  %481 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %482 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %481)
          to label %483 unwind label %505

483:                                              ; preds = %478
  br i1 %482, label %484, label %509

484:                                              ; preds = %483
  %485 = load x86_fp80, ptr %43, align 16, !tbaa !9
  %486 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %485)
          to label %487 unwind label %505

487:                                              ; preds = %484
  br i1 %486, label %488, label %509

488:                                              ; preds = %487
  store i8 1, ptr %45, align 1, !tbaa !11
  br label %538

489:                                              ; preds = %460, %446, %419
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  br label %490

490:                                              ; preds = %489, %415
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #6
  br label %491

491:                                              ; preds = %490, %411
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %492

492:                                              ; preds = %491, %407
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  br label %1290

493:                                              ; preds = %464
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %4, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %578

497:                                              ; preds = %467
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %4, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %5, align 4
  br label %577

501:                                              ; preds = %475, %470
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %4, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %5, align 4
  br label %576

505:                                              ; preds = %541, %526, %513, %509, %484, %478
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %4, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %5, align 4
  br label %575

509:                                              ; preds = %487, %483
  %510 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %511 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %510)
          to label %512 unwind label %505

512:                                              ; preds = %509
  br i1 %511, label %522, label %513

513:                                              ; preds = %512
  %514 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %515 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %514)
          to label %516 unwind label %505

516:                                              ; preds = %513
  br i1 %515, label %517, label %522

517:                                              ; preds = %516
  %518 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %519 = load x86_fp80, ptr %43, align 16, !tbaa !9
  %520 = fcmp oeq x86_fp80 %518, %519
  br i1 %520, label %521, label %522

521:                                              ; preds = %517
  store i8 1, ptr %45, align 1, !tbaa !11
  br label %537

522:                                              ; preds = %517, %516, %512
  %523 = load x86_fp80, ptr %44, align 16, !tbaa !9
  %524 = fcmp olt x86_fp80 %523, 0xK3FF8A3D70A3D70A3D800
  br i1 %524, label %525, label %526

525:                                              ; preds = %522
  store i8 1, ptr %45, align 1, !tbaa !11
  br label %536

526:                                              ; preds = %522
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %527 unwind label %505

527:                                              ; preds = %526
  %528 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %529 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %530 = load x86_fp80, ptr %43, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %46, i32 noundef %528, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %529, x86_fp80 noundef %530, x86_fp80 noundef 0xK4002E000000000000000)
          to label %531 unwind label %532

531:                                              ; preds = %527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %536

532:                                              ; preds = %527
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %4, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %575

536:                                              ; preds = %531, %525
  br label %537

537:                                              ; preds = %536, %521
  br label %538

538:                                              ; preds = %537, %488
  %539 = load i8, ptr %45, align 1, !tbaa !11, !range !13, !noundef !14
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %550

541:                                              ; preds = %538
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %542 unwind label %505

542:                                              ; preds = %541
  %543 = load x86_fp80, ptr %42, align 16, !tbaa !9
  %544 = load x86_fp80, ptr %44, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %47, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %543, x86_fp80 noundef %544, x86_fp80 noundef 0xK4002E000000000000000)
          to label %545 unwind label %546

545:                                              ; preds = %542
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %550

546:                                              ; preds = %542
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %4, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %575

550:                                              ; preds = %545, %538
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  %551 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %553 unwind label %579

553:                                              ; preds = %550
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #6
  %554 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002F000000000000000) #6
  store x86_fp80 %554, ptr %50, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #6
  %555 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002F000000000000000)
          to label %556 unwind label %583

556:                                              ; preds = %553
  store x86_fp80 %555, ptr %51, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  %557 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %558 = load x86_fp80, ptr %51, align 16, !tbaa !9
  %559 = fsub x86_fp80 %557, %558
  %560 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %559)
          to label %561 unwind label %587

561:                                              ; preds = %556
  %562 = load x86_fp80, ptr %51, align 16, !tbaa !9
  %563 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %562)
          to label %564 unwind label %587

564:                                              ; preds = %561
  %565 = fadd x86_fp80 0xK3FFF8000000000000000, %563
  %566 = fdiv x86_fp80 %560, %565
  store x86_fp80 %566, ptr %52, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  store i8 0, ptr %53, align 1, !tbaa !11
  %567 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %568 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %567)
          to label %569 unwind label %591

569:                                              ; preds = %564
  br i1 %568, label %570, label %595

570:                                              ; preds = %569
  %571 = load x86_fp80, ptr %51, align 16, !tbaa !9
  %572 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %571)
          to label %573 unwind label %591

573:                                              ; preds = %570
  br i1 %572, label %574, label %595

574:                                              ; preds = %573
  store i8 1, ptr %53, align 1, !tbaa !11
  br label %624

575:                                              ; preds = %546, %532, %505
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %576

576:                                              ; preds = %575, %501
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  br label %577

577:                                              ; preds = %576, %497
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %578

578:                                              ; preds = %577, %493
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  br label %1290

579:                                              ; preds = %550
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %4, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  br label %666

583:                                              ; preds = %553
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %4, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %5, align 4
  br label %665

587:                                              ; preds = %561, %556
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %4, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %5, align 4
  br label %664

591:                                              ; preds = %627, %612, %599, %595, %570, %564
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %4, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %5, align 4
  br label %663

595:                                              ; preds = %573, %569
  %596 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %597 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %596)
          to label %598 unwind label %591

598:                                              ; preds = %595
  br i1 %597, label %608, label %599

599:                                              ; preds = %598
  %600 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %601 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %600)
          to label %602 unwind label %591

602:                                              ; preds = %599
  br i1 %601, label %603, label %608

603:                                              ; preds = %602
  %604 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %605 = load x86_fp80, ptr %51, align 16, !tbaa !9
  %606 = fcmp oeq x86_fp80 %604, %605
  br i1 %606, label %607, label %608

607:                                              ; preds = %603
  store i8 1, ptr %53, align 1, !tbaa !11
  br label %623

608:                                              ; preds = %603, %602, %598
  %609 = load x86_fp80, ptr %52, align 16, !tbaa !9
  %610 = fcmp olt x86_fp80 %609, 0xK3FF8A3D70A3D70A3D800
  br i1 %610, label %611, label %612

611:                                              ; preds = %608
  store i8 1, ptr %53, align 1, !tbaa !11
  br label %622

612:                                              ; preds = %608
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %613 unwind label %591

613:                                              ; preds = %612
  %614 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %615 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %616 = load x86_fp80, ptr %51, align 16, !tbaa !9
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %54, i32 noundef %614, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %615, x86_fp80 noundef %616, x86_fp80 noundef 0xK4002F000000000000000)
          to label %617 unwind label %618

617:                                              ; preds = %613
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %622

618:                                              ; preds = %613
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %4, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %663

622:                                              ; preds = %617, %611
  br label %623

623:                                              ; preds = %622, %607
  br label %624

624:                                              ; preds = %623, %574
  %625 = load i8, ptr %53, align 1, !tbaa !11, !range !13, !noundef !14
  %626 = trunc i8 %625 to i1
  br i1 %626, label %627, label %636

627:                                              ; preds = %624
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %628 unwind label %591

628:                                              ; preds = %627
  %629 = load x86_fp80, ptr %50, align 16, !tbaa !9
  %630 = load x86_fp80, ptr %52, align 16, !tbaa !9
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %55, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %629, x86_fp80 noundef %630, x86_fp80 noundef 0xK4002F000000000000000)
          to label %631 unwind label %632

631:                                              ; preds = %628
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %636

632:                                              ; preds = %628
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %4, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %663

636:                                              ; preds = %631, %624
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  %637 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %639 unwind label %667

639:                                              ; preds = %636
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  %640 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 5) #6
  store i64 %640, ptr %58, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  %641 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4001A000000000000000)
          to label %642 unwind label %671

642:                                              ; preds = %639
  store x86_fp80 %641, ptr %59, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #6
  %643 = load i64, ptr %58, align 8, !tbaa !15
  %644 = sitofp i64 %643 to x86_fp80
  %645 = load x86_fp80, ptr %59, align 16, !tbaa !9
  %646 = fsub x86_fp80 %644, %645
  %647 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %646)
          to label %648 unwind label %675

648:                                              ; preds = %642
  %649 = load x86_fp80, ptr %59, align 16, !tbaa !9
  %650 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %649)
          to label %651 unwind label %675

651:                                              ; preds = %648
  %652 = fadd x86_fp80 0xK3FFF8000000000000000, %650
  %653 = fdiv x86_fp80 %647, %652
  store x86_fp80 %653, ptr %60, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #6
  store i8 0, ptr %61, align 1, !tbaa !11
  %654 = load i64, ptr %58, align 8, !tbaa !15
  %655 = sitofp i64 %654 to x86_fp80
  %656 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %655)
          to label %657 unwind label %679

657:                                              ; preds = %651
  br i1 %656, label %658, label %683

658:                                              ; preds = %657
  %659 = load x86_fp80, ptr %59, align 16, !tbaa !9
  %660 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %659)
          to label %661 unwind label %679

661:                                              ; preds = %658
  br i1 %660, label %662, label %683

662:                                              ; preds = %661
  store i8 1, ptr %61, align 1, !tbaa !11
  br label %715

663:                                              ; preds = %632, %618, %591
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  br label %664

664:                                              ; preds = %663, %587
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  br label %665

665:                                              ; preds = %664, %583
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %666

666:                                              ; preds = %665, %579
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  br label %1290

667:                                              ; preds = %636
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %4, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #6
  br label %757

671:                                              ; preds = %639
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %4, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %5, align 4
  br label %756

675:                                              ; preds = %648, %642
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %4, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %5, align 4
  br label %755

679:                                              ; preds = %718, %703, %688, %683, %658, %651
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %4, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %5, align 4
  br label %754

683:                                              ; preds = %661, %657
  %684 = load i64, ptr %58, align 8, !tbaa !15
  %685 = sitofp i64 %684 to x86_fp80
  %686 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %685)
          to label %687 unwind label %679

687:                                              ; preds = %683
  br i1 %686, label %699, label %688

688:                                              ; preds = %687
  %689 = load i64, ptr %58, align 8, !tbaa !15
  %690 = sitofp i64 %689 to x86_fp80
  %691 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %690)
          to label %692 unwind label %679

692:                                              ; preds = %688
  br i1 %691, label %693, label %699

693:                                              ; preds = %692
  %694 = load i64, ptr %58, align 8, !tbaa !15
  %695 = sitofp i64 %694 to x86_fp80
  %696 = load x86_fp80, ptr %59, align 16, !tbaa !9
  %697 = fcmp oeq x86_fp80 %695, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %693
  store i8 1, ptr %61, align 1, !tbaa !11
  br label %714

699:                                              ; preds = %693, %692, %687
  %700 = load x86_fp80, ptr %60, align 16, !tbaa !9
  %701 = fcmp olt x86_fp80 %700, 0xK3FF8A3D70A3D70A3D800
  br i1 %701, label %702, label %703

702:                                              ; preds = %699
  store i8 1, ptr %61, align 1, !tbaa !11
  br label %713

703:                                              ; preds = %699
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %704 unwind label %679

704:                                              ; preds = %703
  %705 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %706 = load i64, ptr %58, align 8, !tbaa !15
  %707 = load x86_fp80, ptr %59, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %62, i32 noundef %705, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %706, x86_fp80 noundef %707, i64 noundef 5)
          to label %708 unwind label %709

708:                                              ; preds = %704
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %713

709:                                              ; preds = %704
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %4, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %754

713:                                              ; preds = %708, %702
  br label %714

714:                                              ; preds = %713, %698
  br label %715

715:                                              ; preds = %714, %662
  %716 = load i8, ptr %61, align 1, !tbaa !11, !range !13, !noundef !14
  %717 = trunc i8 %716 to i1
  br i1 %717, label %718, label %727

718:                                              ; preds = %715
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %719 unwind label %679

719:                                              ; preds = %718
  %720 = load i64, ptr %58, align 8, !tbaa !15
  %721 = load x86_fp80, ptr %60, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %63, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %720, x86_fp80 noundef %721, i64 noundef 5)
          to label %722 unwind label %723

722:                                              ; preds = %719
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %727

723:                                              ; preds = %719
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %4, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %754

727:                                              ; preds = %722, %715
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  %728 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %729 = add nsw i32 %728, 1
  store i32 %729, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %730 unwind label %758

730:                                              ; preds = %727
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #6
  %731 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 9) #6
  store i64 %731, ptr %66, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  %732 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK40029000000000000000)
          to label %733 unwind label %762

733:                                              ; preds = %730
  store x86_fp80 %732, ptr %67, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #6
  %734 = load i64, ptr %66, align 8, !tbaa !15
  %735 = sitofp i64 %734 to x86_fp80
  %736 = load x86_fp80, ptr %67, align 16, !tbaa !9
  %737 = fsub x86_fp80 %735, %736
  %738 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %737)
          to label %739 unwind label %766

739:                                              ; preds = %733
  %740 = load x86_fp80, ptr %67, align 16, !tbaa !9
  %741 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %740)
          to label %742 unwind label %766

742:                                              ; preds = %739
  %743 = fadd x86_fp80 0xK3FFF8000000000000000, %741
  %744 = fdiv x86_fp80 %738, %743
  store x86_fp80 %744, ptr %68, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #6
  store i8 0, ptr %69, align 1, !tbaa !11
  %745 = load i64, ptr %66, align 8, !tbaa !15
  %746 = sitofp i64 %745 to x86_fp80
  %747 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %746)
          to label %748 unwind label %770

748:                                              ; preds = %742
  br i1 %747, label %749, label %774

749:                                              ; preds = %748
  %750 = load x86_fp80, ptr %67, align 16, !tbaa !9
  %751 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %750)
          to label %752 unwind label %770

752:                                              ; preds = %749
  br i1 %751, label %753, label %774

753:                                              ; preds = %752
  store i8 1, ptr %69, align 1, !tbaa !11
  br label %806

754:                                              ; preds = %723, %709, %679
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  br label %755

755:                                              ; preds = %754, %675
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #6
  br label %756

756:                                              ; preds = %755, %671
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  br label %757

757:                                              ; preds = %756, %667
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  br label %1290

758:                                              ; preds = %727
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %4, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  br label %848

762:                                              ; preds = %730
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %4, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %5, align 4
  br label %847

766:                                              ; preds = %739, %733
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %4, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %5, align 4
  br label %846

770:                                              ; preds = %809, %794, %779, %774, %749, %742
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %4, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %5, align 4
  br label %845

774:                                              ; preds = %752, %748
  %775 = load i64, ptr %66, align 8, !tbaa !15
  %776 = sitofp i64 %775 to x86_fp80
  %777 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %776)
          to label %778 unwind label %770

778:                                              ; preds = %774
  br i1 %777, label %790, label %779

779:                                              ; preds = %778
  %780 = load i64, ptr %66, align 8, !tbaa !15
  %781 = sitofp i64 %780 to x86_fp80
  %782 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %781)
          to label %783 unwind label %770

783:                                              ; preds = %779
  br i1 %782, label %784, label %790

784:                                              ; preds = %783
  %785 = load i64, ptr %66, align 8, !tbaa !15
  %786 = sitofp i64 %785 to x86_fp80
  %787 = load x86_fp80, ptr %67, align 16, !tbaa !9
  %788 = fcmp oeq x86_fp80 %786, %787
  br i1 %788, label %789, label %790

789:                                              ; preds = %784
  store i8 1, ptr %69, align 1, !tbaa !11
  br label %805

790:                                              ; preds = %784, %783, %778
  %791 = load x86_fp80, ptr %68, align 16, !tbaa !9
  %792 = fcmp olt x86_fp80 %791, 0xK3FF8A3D70A3D70A3D800
  br i1 %792, label %793, label %794

793:                                              ; preds = %790
  store i8 1, ptr %69, align 1, !tbaa !11
  br label %804

794:                                              ; preds = %790
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %795 unwind label %770

795:                                              ; preds = %794
  %796 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %797 = load i64, ptr %66, align 8, !tbaa !15
  %798 = load x86_fp80, ptr %67, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %70, i32 noundef %796, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %797, x86_fp80 noundef %798, i64 noundef 9)
          to label %799 unwind label %800

799:                                              ; preds = %795
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  br label %804

800:                                              ; preds = %795
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %4, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  br label %845

804:                                              ; preds = %799, %793
  br label %805

805:                                              ; preds = %804, %789
  br label %806

806:                                              ; preds = %805, %753
  %807 = load i8, ptr %69, align 1, !tbaa !11, !range !13, !noundef !14
  %808 = trunc i8 %807 to i1
  br i1 %808, label %809, label %818

809:                                              ; preds = %806
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %810 unwind label %770

810:                                              ; preds = %809
  %811 = load i64, ptr %66, align 8, !tbaa !15
  %812 = load x86_fp80, ptr %68, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %71, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %811, x86_fp80 noundef %812, i64 noundef 9)
          to label %813 unwind label %814

813:                                              ; preds = %810
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %818

814:                                              ; preds = %810
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %4, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %845

818:                                              ; preds = %813, %806
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #6
  %819 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %820 = add nsw i32 %819, 1
  store i32 %820, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %821 unwind label %849

821:                                              ; preds = %818
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #6
  %822 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 11) #6
  store i64 %822, ptr %74, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #6
  %823 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002B000000000000000)
          to label %824 unwind label %853

824:                                              ; preds = %821
  store x86_fp80 %823, ptr %75, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #6
  %825 = load i64, ptr %74, align 8, !tbaa !15
  %826 = sitofp i64 %825 to x86_fp80
  %827 = load x86_fp80, ptr %75, align 16, !tbaa !9
  %828 = fsub x86_fp80 %826, %827
  %829 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %828)
          to label %830 unwind label %857

830:                                              ; preds = %824
  %831 = load x86_fp80, ptr %75, align 16, !tbaa !9
  %832 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %831)
          to label %833 unwind label %857

833:                                              ; preds = %830
  %834 = fadd x86_fp80 0xK3FFF8000000000000000, %832
  %835 = fdiv x86_fp80 %829, %834
  store x86_fp80 %835, ptr %76, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #6
  store i8 0, ptr %77, align 1, !tbaa !11
  %836 = load i64, ptr %74, align 8, !tbaa !15
  %837 = sitofp i64 %836 to x86_fp80
  %838 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %837)
          to label %839 unwind label %861

839:                                              ; preds = %833
  br i1 %838, label %840, label %865

840:                                              ; preds = %839
  %841 = load x86_fp80, ptr %75, align 16, !tbaa !9
  %842 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %841)
          to label %843 unwind label %861

843:                                              ; preds = %840
  br i1 %842, label %844, label %865

844:                                              ; preds = %843
  store i8 1, ptr %77, align 1, !tbaa !11
  br label %897

845:                                              ; preds = %814, %800, %770
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #6
  br label %846

846:                                              ; preds = %845, %766
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #6
  br label %847

847:                                              ; preds = %846, %762
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #6
  br label %848

848:                                              ; preds = %847, %758
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #6
  br label %1290

849:                                              ; preds = %818
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %4, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  br label %939

853:                                              ; preds = %821
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %4, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %5, align 4
  br label %938

857:                                              ; preds = %830, %824
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %4, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %5, align 4
  br label %937

861:                                              ; preds = %900, %885, %870, %865, %840, %833
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %4, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %5, align 4
  br label %936

865:                                              ; preds = %843, %839
  %866 = load i64, ptr %74, align 8, !tbaa !15
  %867 = sitofp i64 %866 to x86_fp80
  %868 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %867)
          to label %869 unwind label %861

869:                                              ; preds = %865
  br i1 %868, label %881, label %870

870:                                              ; preds = %869
  %871 = load i64, ptr %74, align 8, !tbaa !15
  %872 = sitofp i64 %871 to x86_fp80
  %873 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %872)
          to label %874 unwind label %861

874:                                              ; preds = %870
  br i1 %873, label %875, label %881

875:                                              ; preds = %874
  %876 = load i64, ptr %74, align 8, !tbaa !15
  %877 = sitofp i64 %876 to x86_fp80
  %878 = load x86_fp80, ptr %75, align 16, !tbaa !9
  %879 = fcmp oeq x86_fp80 %877, %878
  br i1 %879, label %880, label %881

880:                                              ; preds = %875
  store i8 1, ptr %77, align 1, !tbaa !11
  br label %896

881:                                              ; preds = %875, %874, %869
  %882 = load x86_fp80, ptr %76, align 16, !tbaa !9
  %883 = fcmp olt x86_fp80 %882, 0xK3FF8A3D70A3D70A3D800
  br i1 %883, label %884, label %885

884:                                              ; preds = %881
  store i8 1, ptr %77, align 1, !tbaa !11
  br label %895

885:                                              ; preds = %881
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %72)
          to label %886 unwind label %861

886:                                              ; preds = %885
  %887 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %888 = load i64, ptr %74, align 8, !tbaa !15
  %889 = load x86_fp80, ptr %75, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %78, i32 noundef %887, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %888, x86_fp80 noundef %889, i64 noundef 11)
          to label %890 unwind label %891

890:                                              ; preds = %886
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %895

891:                                              ; preds = %886
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %4, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %936

895:                                              ; preds = %890, %884
  br label %896

896:                                              ; preds = %895, %880
  br label %897

897:                                              ; preds = %896, %844
  %898 = load i8, ptr %77, align 1, !tbaa !11, !range !13, !noundef !14
  %899 = trunc i8 %898 to i1
  br i1 %899, label %900, label %909

900:                                              ; preds = %897
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %72)
          to label %901 unwind label %861

901:                                              ; preds = %900
  %902 = load i64, ptr %74, align 8, !tbaa !15
  %903 = load x86_fp80, ptr %76, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %79, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %902, x86_fp80 noundef %903, i64 noundef 11)
          to label %904 unwind label %905

904:                                              ; preds = %901
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  br label %909

905:                                              ; preds = %901
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %4, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #6
  br label %936

909:                                              ; preds = %904, %897
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  %910 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %911 = add nsw i32 %910, 1
  store i32 %911, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %912 unwind label %940

912:                                              ; preds = %909
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #6
  %913 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 13) #6
  store i64 %913, ptr %82, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #6
  %914 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4002D000000000000000)
          to label %915 unwind label %944

915:                                              ; preds = %912
  store x86_fp80 %914, ptr %83, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #6
  %916 = load i64, ptr %82, align 8, !tbaa !15
  %917 = sitofp i64 %916 to x86_fp80
  %918 = load x86_fp80, ptr %83, align 16, !tbaa !9
  %919 = fsub x86_fp80 %917, %918
  %920 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %919)
          to label %921 unwind label %948

921:                                              ; preds = %915
  %922 = load x86_fp80, ptr %83, align 16, !tbaa !9
  %923 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %922)
          to label %924 unwind label %948

924:                                              ; preds = %921
  %925 = fadd x86_fp80 0xK3FFF8000000000000000, %923
  %926 = fdiv x86_fp80 %920, %925
  store x86_fp80 %926, ptr %84, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #6
  store i8 0, ptr %85, align 1, !tbaa !11
  %927 = load i64, ptr %82, align 8, !tbaa !15
  %928 = sitofp i64 %927 to x86_fp80
  %929 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %928)
          to label %930 unwind label %952

930:                                              ; preds = %924
  br i1 %929, label %931, label %956

931:                                              ; preds = %930
  %932 = load x86_fp80, ptr %83, align 16, !tbaa !9
  %933 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %932)
          to label %934 unwind label %952

934:                                              ; preds = %931
  br i1 %933, label %935, label %956

935:                                              ; preds = %934
  store i8 1, ptr %85, align 1, !tbaa !11
  br label %988

936:                                              ; preds = %905, %891, %861
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #6
  br label %937

937:                                              ; preds = %936, %857
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #6
  br label %938

938:                                              ; preds = %937, %853
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  br label %939

939:                                              ; preds = %938, %849
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  br label %1290

940:                                              ; preds = %909
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %4, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %81) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #6
  br label %1030

944:                                              ; preds = %912
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %4, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %5, align 4
  br label %1029

948:                                              ; preds = %921, %915
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %4, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %5, align 4
  br label %1028

952:                                              ; preds = %991, %976, %961, %956, %931, %924
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %4, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %5, align 4
  br label %1027

956:                                              ; preds = %934, %930
  %957 = load i64, ptr %82, align 8, !tbaa !15
  %958 = sitofp i64 %957 to x86_fp80
  %959 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %958)
          to label %960 unwind label %952

960:                                              ; preds = %956
  br i1 %959, label %972, label %961

961:                                              ; preds = %960
  %962 = load i64, ptr %82, align 8, !tbaa !15
  %963 = sitofp i64 %962 to x86_fp80
  %964 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %963)
          to label %965 unwind label %952

965:                                              ; preds = %961
  br i1 %964, label %966, label %972

966:                                              ; preds = %965
  %967 = load i64, ptr %82, align 8, !tbaa !15
  %968 = sitofp i64 %967 to x86_fp80
  %969 = load x86_fp80, ptr %83, align 16, !tbaa !9
  %970 = fcmp oeq x86_fp80 %968, %969
  br i1 %970, label %971, label %972

971:                                              ; preds = %966
  store i8 1, ptr %85, align 1, !tbaa !11
  br label %987

972:                                              ; preds = %966, %965, %960
  %973 = load x86_fp80, ptr %84, align 16, !tbaa !9
  %974 = fcmp olt x86_fp80 %973, 0xK3FF8A3D70A3D70A3D800
  br i1 %974, label %975, label %976

975:                                              ; preds = %972
  store i8 1, ptr %85, align 1, !tbaa !11
  br label %986

976:                                              ; preds = %972
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %977 unwind label %952

977:                                              ; preds = %976
  %978 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %979 = load i64, ptr %82, align 8, !tbaa !15
  %980 = load x86_fp80, ptr %83, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %86, i32 noundef %978, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %979, x86_fp80 noundef %980, i64 noundef 13)
          to label %981 unwind label %982

981:                                              ; preds = %977
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #6
  br label %986

982:                                              ; preds = %977
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %4, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #6
  br label %1027

986:                                              ; preds = %981, %975
  br label %987

987:                                              ; preds = %986, %971
  br label %988

988:                                              ; preds = %987, %935
  %989 = load i8, ptr %85, align 1, !tbaa !11, !range !13, !noundef !14
  %990 = trunc i8 %989 to i1
  br i1 %990, label %991, label %1000

991:                                              ; preds = %988
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %992 unwind label %952

992:                                              ; preds = %991
  %993 = load i64, ptr %82, align 8, !tbaa !15
  %994 = load x86_fp80, ptr %84, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %87, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %993, x86_fp80 noundef %994, i64 noundef 13)
          to label %995 unwind label %996

995:                                              ; preds = %992
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  br label %1000

996:                                              ; preds = %992
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %4, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #6
  br label %1027

1000:                                             ; preds = %995, %988
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #6
  %1001 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %1003 unwind label %1031

1003:                                             ; preds = %1000
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %1004 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 16) #6
  store i64 %1004, ptr %90, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #6
  %1005 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK40038000000000000000)
          to label %1006 unwind label %1035

1006:                                             ; preds = %1003
  store x86_fp80 %1005, ptr %91, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #6
  %1007 = load i64, ptr %90, align 8, !tbaa !15
  %1008 = sitofp i64 %1007 to x86_fp80
  %1009 = load x86_fp80, ptr %91, align 16, !tbaa !9
  %1010 = fsub x86_fp80 %1008, %1009
  %1011 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1010)
          to label %1012 unwind label %1039

1012:                                             ; preds = %1006
  %1013 = load x86_fp80, ptr %91, align 16, !tbaa !9
  %1014 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1013)
          to label %1015 unwind label %1039

1015:                                             ; preds = %1012
  %1016 = fadd x86_fp80 0xK3FFF8000000000000000, %1014
  %1017 = fdiv x86_fp80 %1011, %1016
  store x86_fp80 %1017, ptr %92, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #6
  store i8 0, ptr %93, align 1, !tbaa !11
  %1018 = load i64, ptr %90, align 8, !tbaa !15
  %1019 = sitofp i64 %1018 to x86_fp80
  %1020 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1019)
          to label %1021 unwind label %1043

1021:                                             ; preds = %1015
  br i1 %1020, label %1022, label %1047

1022:                                             ; preds = %1021
  %1023 = load x86_fp80, ptr %91, align 16, !tbaa !9
  %1024 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1023)
          to label %1025 unwind label %1043

1025:                                             ; preds = %1022
  br i1 %1024, label %1026, label %1047

1026:                                             ; preds = %1025
  store i8 1, ptr %93, align 1, !tbaa !11
  br label %1079

1027:                                             ; preds = %996, %982, %952
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #6
  br label %1028

1028:                                             ; preds = %1027, %948
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #6
  br label %1029

1029:                                             ; preds = %1028, %944
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #6
  br label %1030

1030:                                             ; preds = %1029, %940
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #6
  br label %1290

1031:                                             ; preds = %1000
  %1032 = landingpad { ptr, i32 }
          cleanup
  %1033 = extractvalue { ptr, i32 } %1032, 0
  store ptr %1033, ptr %4, align 8
  %1034 = extractvalue { ptr, i32 } %1032, 1
  store i32 %1034, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #6
  br label %1121

1035:                                             ; preds = %1003
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %4, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %5, align 4
  br label %1120

1039:                                             ; preds = %1012, %1006
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %4, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %5, align 4
  br label %1119

1043:                                             ; preds = %1082, %1067, %1052, %1047, %1022, %1015
  %1044 = landingpad { ptr, i32 }
          cleanup
  %1045 = extractvalue { ptr, i32 } %1044, 0
  store ptr %1045, ptr %4, align 8
  %1046 = extractvalue { ptr, i32 } %1044, 1
  store i32 %1046, ptr %5, align 4
  br label %1118

1047:                                             ; preds = %1025, %1021
  %1048 = load i64, ptr %90, align 8, !tbaa !15
  %1049 = sitofp i64 %1048 to x86_fp80
  %1050 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1049)
          to label %1051 unwind label %1043

1051:                                             ; preds = %1047
  br i1 %1050, label %1063, label %1052

1052:                                             ; preds = %1051
  %1053 = load i64, ptr %90, align 8, !tbaa !15
  %1054 = sitofp i64 %1053 to x86_fp80
  %1055 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %1054)
          to label %1056 unwind label %1043

1056:                                             ; preds = %1052
  br i1 %1055, label %1057, label %1063

1057:                                             ; preds = %1056
  %1058 = load i64, ptr %90, align 8, !tbaa !15
  %1059 = sitofp i64 %1058 to x86_fp80
  %1060 = load x86_fp80, ptr %91, align 16, !tbaa !9
  %1061 = fcmp oeq x86_fp80 %1059, %1060
  br i1 %1061, label %1062, label %1063

1062:                                             ; preds = %1057
  store i8 1, ptr %93, align 1, !tbaa !11
  br label %1078

1063:                                             ; preds = %1057, %1056, %1051
  %1064 = load x86_fp80, ptr %92, align 16, !tbaa !9
  %1065 = fcmp olt x86_fp80 %1064, 0xK3FF8A3D70A3D70A3D800
  br i1 %1065, label %1066, label %1067

1066:                                             ; preds = %1063
  store i8 1, ptr %93, align 1, !tbaa !11
  br label %1077

1067:                                             ; preds = %1063
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef nonnull align 8 dereferenceable(32) %88)
          to label %1068 unwind label %1043

1068:                                             ; preds = %1067
  %1069 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1070 = load i64, ptr %90, align 8, !tbaa !15
  %1071 = load x86_fp80, ptr %91, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %94, i32 noundef %1069, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1070, x86_fp80 noundef %1071, i64 noundef 16)
          to label %1072 unwind label %1073

1072:                                             ; preds = %1068
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  br label %1077

1073:                                             ; preds = %1068
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %4, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #6
  br label %1118

1077:                                             ; preds = %1072, %1066
  br label %1078

1078:                                             ; preds = %1077, %1062
  br label %1079

1079:                                             ; preds = %1078, %1026
  %1080 = load i8, ptr %93, align 1, !tbaa !11, !range !13, !noundef !14
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1082, label %1091

1082:                                             ; preds = %1079
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %88)
          to label %1083 unwind label %1043

1083:                                             ; preds = %1082
  %1084 = load i64, ptr %90, align 8, !tbaa !15
  %1085 = load x86_fp80, ptr %92, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %95, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1084, x86_fp80 noundef %1085, i64 noundef 16)
          to label %1086 unwind label %1087

1086:                                             ; preds = %1083
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  br label %1091

1087:                                             ; preds = %1083
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %4, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #6
  br label %1118

1091:                                             ; preds = %1086, %1079
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #6
  %1092 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1093 = add nsw i32 %1092, 1
  store i32 %1093, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %96) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %1094 unwind label %1122

1094:                                             ; preds = %1091
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #6
  %1095 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 18) #6
  store i64 %1095, ptr %98, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #6
  %1096 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK40039000000000000000)
          to label %1097 unwind label %1126

1097:                                             ; preds = %1094
  store x86_fp80 %1096, ptr %99, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #6
  %1098 = load i64, ptr %98, align 8, !tbaa !15
  %1099 = sitofp i64 %1098 to x86_fp80
  %1100 = load x86_fp80, ptr %99, align 16, !tbaa !9
  %1101 = fsub x86_fp80 %1099, %1100
  %1102 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1101)
          to label %1103 unwind label %1130

1103:                                             ; preds = %1097
  %1104 = load x86_fp80, ptr %99, align 16, !tbaa !9
  %1105 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1104)
          to label %1106 unwind label %1130

1106:                                             ; preds = %1103
  %1107 = fadd x86_fp80 0xK3FFF8000000000000000, %1105
  %1108 = fdiv x86_fp80 %1102, %1107
  store x86_fp80 %1108, ptr %100, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #6
  store i8 0, ptr %101, align 1, !tbaa !11
  %1109 = load i64, ptr %98, align 8, !tbaa !15
  %1110 = sitofp i64 %1109 to x86_fp80
  %1111 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1110)
          to label %1112 unwind label %1134

1112:                                             ; preds = %1106
  br i1 %1111, label %1113, label %1138

1113:                                             ; preds = %1112
  %1114 = load x86_fp80, ptr %99, align 16, !tbaa !9
  %1115 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1114)
          to label %1116 unwind label %1134

1116:                                             ; preds = %1113
  br i1 %1115, label %1117, label %1138

1117:                                             ; preds = %1116
  store i8 1, ptr %101, align 1, !tbaa !11
  br label %1170

1118:                                             ; preds = %1087, %1073, %1043
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #6
  br label %1119

1119:                                             ; preds = %1118, %1039
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #6
  br label %1120

1120:                                             ; preds = %1119, %1035
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #6
  br label %1121

1121:                                             ; preds = %1120, %1031
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #6
  br label %1290

1122:                                             ; preds = %1091
  %1123 = landingpad { ptr, i32 }
          cleanup
  %1124 = extractvalue { ptr, i32 } %1123, 0
  store ptr %1124, ptr %4, align 8
  %1125 = extractvalue { ptr, i32 } %1123, 1
  store i32 %1125, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #6
  br label %1212

1126:                                             ; preds = %1094
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %4, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %5, align 4
  br label %1211

1130:                                             ; preds = %1103, %1097
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %4, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %5, align 4
  br label %1210

1134:                                             ; preds = %1173, %1158, %1143, %1138, %1113, %1106
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %4, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %5, align 4
  br label %1209

1138:                                             ; preds = %1116, %1112
  %1139 = load i64, ptr %98, align 8, !tbaa !15
  %1140 = sitofp i64 %1139 to x86_fp80
  %1141 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1140)
          to label %1142 unwind label %1134

1142:                                             ; preds = %1138
  br i1 %1141, label %1154, label %1143

1143:                                             ; preds = %1142
  %1144 = load i64, ptr %98, align 8, !tbaa !15
  %1145 = sitofp i64 %1144 to x86_fp80
  %1146 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %1145)
          to label %1147 unwind label %1134

1147:                                             ; preds = %1143
  br i1 %1146, label %1148, label %1154

1148:                                             ; preds = %1147
  %1149 = load i64, ptr %98, align 8, !tbaa !15
  %1150 = sitofp i64 %1149 to x86_fp80
  %1151 = load x86_fp80, ptr %99, align 16, !tbaa !9
  %1152 = fcmp oeq x86_fp80 %1150, %1151
  br i1 %1152, label %1153, label %1154

1153:                                             ; preds = %1148
  store i8 1, ptr %101, align 1, !tbaa !11
  br label %1169

1154:                                             ; preds = %1148, %1147, %1142
  %1155 = load x86_fp80, ptr %100, align 16, !tbaa !9
  %1156 = fcmp olt x86_fp80 %1155, 0xK3FF8A3D70A3D70A3D800
  br i1 %1156, label %1157, label %1158

1157:                                             ; preds = %1154
  store i8 1, ptr %101, align 1, !tbaa !11
  br label %1168

1158:                                             ; preds = %1154
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %1159 unwind label %1134

1159:                                             ; preds = %1158
  %1160 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1161 = load i64, ptr %98, align 8, !tbaa !15
  %1162 = load x86_fp80, ptr %99, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %102, i32 noundef %1160, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1161, x86_fp80 noundef %1162, i64 noundef 18)
          to label %1163 unwind label %1164

1163:                                             ; preds = %1159
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #6
  br label %1168

1164:                                             ; preds = %1159
  %1165 = landingpad { ptr, i32 }
          cleanup
  %1166 = extractvalue { ptr, i32 } %1165, 0
  store ptr %1166, ptr %4, align 8
  %1167 = extractvalue { ptr, i32 } %1165, 1
  store i32 %1167, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #6
  br label %1209

1168:                                             ; preds = %1163, %1157
  br label %1169

1169:                                             ; preds = %1168, %1153
  br label %1170

1170:                                             ; preds = %1169, %1117
  %1171 = load i8, ptr %101, align 1, !tbaa !11, !range !13, !noundef !14
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1173, label %1182

1173:                                             ; preds = %1170
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(32) %96)
          to label %1174 unwind label %1134

1174:                                             ; preds = %1173
  %1175 = load i64, ptr %98, align 8, !tbaa !15
  %1176 = load x86_fp80, ptr %100, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %103, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1175, x86_fp80 noundef %1176, i64 noundef 18)
          to label %1177 unwind label %1178

1177:                                             ; preds = %1174
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #6
  br label %1182

1178:                                             ; preds = %1174
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %4, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #6
  br label %1209

1182:                                             ; preds = %1177, %1170
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #6
  %1183 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %1185 unwind label %1213

1185:                                             ; preds = %1182
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #6
  %1186 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 20) #6
  store i64 %1186, ptr %106, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #6
  %1187 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %6, x86_fp80 noundef 0xK4003A000000000000000)
          to label %1188 unwind label %1217

1188:                                             ; preds = %1185
  store x86_fp80 %1187, ptr %107, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #6
  %1189 = load i64, ptr %106, align 8, !tbaa !15
  %1190 = sitofp i64 %1189 to x86_fp80
  %1191 = load x86_fp80, ptr %107, align 16, !tbaa !9
  %1192 = fsub x86_fp80 %1190, %1191
  %1193 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1192)
          to label %1194 unwind label %1221

1194:                                             ; preds = %1188
  %1195 = load x86_fp80, ptr %107, align 16, !tbaa !9
  %1196 = invoke noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %1195)
          to label %1197 unwind label %1221

1197:                                             ; preds = %1194
  %1198 = fadd x86_fp80 0xK3FFF8000000000000000, %1196
  %1199 = fdiv x86_fp80 %1193, %1198
  store x86_fp80 %1199, ptr %108, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #6
  store i8 0, ptr %109, align 1, !tbaa !11
  %1200 = load i64, ptr %106, align 8, !tbaa !15
  %1201 = sitofp i64 %1200 to x86_fp80
  %1202 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1201)
          to label %1203 unwind label %1225

1203:                                             ; preds = %1197
  br i1 %1202, label %1204, label %1229

1204:                                             ; preds = %1203
  %1205 = load x86_fp80, ptr %107, align 16, !tbaa !9
  %1206 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1205)
          to label %1207 unwind label %1225

1207:                                             ; preds = %1204
  br i1 %1206, label %1208, label %1229

1208:                                             ; preds = %1207
  store i8 1, ptr %109, align 1, !tbaa !11
  br label %1261

1209:                                             ; preds = %1178, %1164, %1134
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #6
  br label %1210

1210:                                             ; preds = %1209, %1130
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #6
  br label %1211

1211:                                             ; preds = %1210, %1126
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #6
  br label %1212

1212:                                             ; preds = %1211, %1122
  call void @llvm.lifetime.end.p0(i64 32, ptr %96) #6
  br label %1290

1213:                                             ; preds = %1182
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %4, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %105) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #6
  br label %1280

1217:                                             ; preds = %1185
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %4, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %5, align 4
  br label %1279

1221:                                             ; preds = %1194, %1188
  %1222 = landingpad { ptr, i32 }
          cleanup
  %1223 = extractvalue { ptr, i32 } %1222, 0
  store ptr %1223, ptr %4, align 8
  %1224 = extractvalue { ptr, i32 } %1222, 1
  store i32 %1224, ptr %5, align 4
  br label %1278

1225:                                             ; preds = %1264, %1249, %1234, %1229, %1204, %1197
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %4, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %5, align 4
  br label %1277

1229:                                             ; preds = %1207, %1203
  %1230 = load i64, ptr %106, align 8, !tbaa !15
  %1231 = sitofp i64 %1230 to x86_fp80
  %1232 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1231)
          to label %1233 unwind label %1225

1233:                                             ; preds = %1229
  br i1 %1232, label %1245, label %1234

1234:                                             ; preds = %1233
  %1235 = load i64, ptr %106, align 8, !tbaa !15
  %1236 = sitofp i64 %1235 to x86_fp80
  %1237 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %1236)
          to label %1238 unwind label %1225

1238:                                             ; preds = %1234
  br i1 %1237, label %1239, label %1245

1239:                                             ; preds = %1238
  %1240 = load i64, ptr %106, align 8, !tbaa !15
  %1241 = sitofp i64 %1240 to x86_fp80
  %1242 = load x86_fp80, ptr %107, align 16, !tbaa !9
  %1243 = fcmp oeq x86_fp80 %1241, %1242
  br i1 %1243, label %1244, label %1245

1244:                                             ; preds = %1239
  store i8 1, ptr %109, align 1, !tbaa !11
  br label %1260

1245:                                             ; preds = %1239, %1238, %1233
  %1246 = load x86_fp80, ptr %108, align 16, !tbaa !9
  %1247 = fcmp olt x86_fp80 %1246, 0xK3FF8A3D70A3D70A3D800
  br i1 %1247, label %1248, label %1249

1248:                                             ; preds = %1245
  store i8 1, ptr %109, align 1, !tbaa !11
  br label %1259

1249:                                             ; preds = %1245
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %1250 unwind label %1225

1250:                                             ; preds = %1249
  %1251 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1252 = load i64, ptr %106, align 8, !tbaa !15
  %1253 = load x86_fp80, ptr %107, align 16, !tbaa !9
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %110, i32 noundef %1251, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1252, x86_fp80 noundef %1253, i64 noundef 20)
          to label %1254 unwind label %1255

1254:                                             ; preds = %1250
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #6
  br label %1259

1255:                                             ; preds = %1250
  %1256 = landingpad { ptr, i32 }
          cleanup
  %1257 = extractvalue { ptr, i32 } %1256, 0
  store ptr %1257, ptr %4, align 8
  %1258 = extractvalue { ptr, i32 } %1256, 1
  store i32 %1258, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #6
  br label %1277

1259:                                             ; preds = %1254, %1248
  br label %1260

1260:                                             ; preds = %1259, %1244
  br label %1261

1261:                                             ; preds = %1260, %1208
  %1262 = load i8, ptr %109, align 1, !tbaa !11, !range !13, !noundef !14
  %1263 = trunc i8 %1262 to i1
  br i1 %1263, label %1264, label %1273

1264:                                             ; preds = %1261
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %1265 unwind label %1225

1265:                                             ; preds = %1264
  %1266 = load i64, ptr %106, align 8, !tbaa !15
  %1267 = load x86_fp80, ptr %108, align 16, !tbaa !9
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %111, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %1266, x86_fp80 noundef %1267, i64 noundef 20)
          to label %1268 unwind label %1269

1268:                                             ; preds = %1265
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #6
  br label %1273

1269:                                             ; preds = %1265
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %4, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #6
  br label %1277

1273:                                             ; preds = %1268, %1261
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %1274 unwind label %1281

1274:                                             ; preds = %1273
  invoke void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %112)
          to label %1275 unwind label %1285

1275:                                             ; preds = %1274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #6
  store i32 0, ptr %1, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  %1276 = load i32, ptr %1, align 4
  ret i32 %1276

1277:                                             ; preds = %1269, %1255, %1225
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #6
  br label %1278

1278:                                             ; preds = %1277, %1221
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #6
  br label %1279

1279:                                             ; preds = %1278, %1217
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #6
  br label %1280

1280:                                             ; preds = %1279, %1213
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #6
  br label %1290

1281:                                             ; preds = %1273
  %1282 = landingpad { ptr, i32 }
          cleanup
  %1283 = extractvalue { ptr, i32 } %1282, 0
  store ptr %1283, ptr %4, align 8
  %1284 = extractvalue { ptr, i32 } %1282, 1
  store i32 %1284, ptr %5, align 4
  br label %1289

1285:                                             ; preds = %1274
  %1286 = landingpad { ptr, i32 }
          cleanup
  %1287 = extractvalue { ptr, i32 } %1286, 0
  store ptr %1287, ptr %4, align 8
  %1288 = extractvalue { ptr, i32 } %1286, 1
  store i32 %1288, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #6
  br label %1289

1289:                                             ; preds = %1285, %1281
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #6
  br label %1290

1290:                                             ; preds = %1289, %1280, %1212, %1121, %1030, %939, %848, %757, %666, %578, %492, %406, %320, %234
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #6
  br label %1291

1291:                                             ; preds = %1290, %148
  %1292 = load ptr, ptr %4, align 8
  %1293 = load i32, ptr %5, align 4
  %1294 = insertvalue { ptr, i32 } poison, ptr %1292, 0
  %1295 = insertvalue { ptr, i32 } %1294, i32 %1293, 1
  resume { ptr, i32 } %1295
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFeeEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32), x86_fp80 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) #1

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef, x86_fp80 noundef, i64 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef, x86_fp80 noundef, i64 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { inlinehint 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 #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}


; 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::__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] }
%"class.std::allocator" = type { i8 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon = type { i8 }

@GCEM_TEST_NUMBER = external dso_local local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::__cxx11::basic_string", align 8
  %2 = alloca %"class.std::allocator", align 1
  %3 = alloca %"class.std::function", align 8
  %4 = alloca %class.anon, align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::allocator", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %59 unwind label %75

59:                                               ; preds = %0
  invoke void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %1)
          to label %60 unwind label %77

60:                                               ; preds = %59
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @"_ZNSt8functionIFeeEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  %61 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %62 = add nsw i32 %61, 1
  store i32 %62, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %63 unwind label %80

63:                                               ; preds = %60
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  %64 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4000C666666666666666) #6
  %65 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4000C666666666666666)
          to label %66 unwind label %82

66:                                               ; preds = %63
  %67 = fsub x86_fp80 %64, %65
  %68 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %67)
  %69 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %65)
  %70 = fadd x86_fp80 %69, 0xK3FFF8000000000000000
  %71 = fdiv x86_fp80 %68, %70
  %72 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %64)
  br i1 %72, label %73, label %86

73:                                               ; preds = %66
  %74 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %65)
  br i1 %74, label %98, label %86

75:                                               ; preds = %0
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %79

77:                                               ; preds = %59
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1) #6
  br label %79

79:                                               ; preds = %77, %75
  %.pn = phi { ptr, i32 } [ %78, %77 ], [ %76, %75 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #6
  br label %575

80:                                               ; preds = %60
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  br label %117

82:                                               ; preds = %63
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %116

84:                                               ; preds = %98, %93
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %116

86:                                               ; preds = %73, %66
  %87 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %64)
  br i1 %87, label %92, label %88

88:                                               ; preds = %86
  %89 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %64)
  %90 = fcmp oeq x86_fp80 %64, %65
  %or.cond = and i1 %90, %89
  %91 = fcmp olt x86_fp80 %71, 0xK3FF8A3D70A3D70A3D800
  %or.cond375 = or i1 %91, %or.cond
  br i1 %or.cond375, label %98, label %93

92:                                               ; preds = %86
  %.old = fcmp olt x86_fp80 %71, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old, label %98, label %93

93:                                               ; preds = %88, %92
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %94 unwind label %84

94:                                               ; preds = %93
  %95 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %7, i32 noundef %95, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %64, x86_fp80 noundef %65, x86_fp80 noundef 0xK4000C666666666666666)
          to label %.critedge unwind label %96

96:                                               ; preds = %94
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %116

98:                                               ; preds = %73, %88, %92
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %99 unwind label %84

99:                                               ; preds = %98
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %8, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %64, x86_fp80 noundef %71, x86_fp80 noundef 0xK4000C666666666666666)
          to label %.critedge unwind label %100

100:                                              ; preds = %99
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %116

.critedge:                                        ; preds = %99, %94
  %.sink = phi ptr [ %7, %94 ], [ %8, %99 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  %102 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %103 = add nsw i32 %102, 1
  store i32 %103, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %104 unwind label %118

104:                                              ; preds = %.critedge
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  %105 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4001E000000000000000) #6
  %106 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4001E000000000000000)
          to label %107 unwind label %120

107:                                              ; preds = %104
  %108 = fsub x86_fp80 %105, %106
  %109 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %108)
  %110 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %106)
  %111 = fadd x86_fp80 %110, 0xK3FFF8000000000000000
  %112 = fdiv x86_fp80 %109, %111
  %113 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %105)
  br i1 %113, label %114, label %124

114:                                              ; preds = %107
  %115 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %106)
  br i1 %115, label %136, label %124

116:                                              ; preds = %84, %96, %100, %82
  %.pn283.pn = phi { ptr, i32 } [ %83, %82 ], [ %101, %100 ], [ %85, %84 ], [ %97, %96 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  br label %117

117:                                              ; preds = %116, %80
  %.pn283.pn.pn = phi { ptr, i32 } [ %.pn283.pn, %116 ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br label %574

118:                                              ; preds = %.critedge
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %155

120:                                              ; preds = %104
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %154

122:                                              ; preds = %136, %131
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %154

124:                                              ; preds = %114, %107
  %125 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %105)
  br i1 %125, label %130, label %126

126:                                              ; preds = %124
  %127 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %105)
  %128 = fcmp oeq x86_fp80 %105, %106
  %or.cond339 = and i1 %128, %127
  %129 = fcmp olt x86_fp80 %112, 0xK3FF8A3D70A3D70A3D800
  %or.cond377 = or i1 %129, %or.cond339
  br i1 %or.cond377, label %136, label %131

130:                                              ; preds = %124
  %.old376 = fcmp olt x86_fp80 %112, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old376, label %136, label %131

131:                                              ; preds = %126, %130
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %132 unwind label %122

132:                                              ; preds = %131
  %133 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %11, i32 noundef %133, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %105, x86_fp80 noundef %106, x86_fp80 noundef 0xK4001E000000000000000)
          to label %.critedge341 unwind label %134

134:                                              ; preds = %132
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %154

136:                                              ; preds = %114, %126, %130
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %137 unwind label %122

137:                                              ; preds = %136
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %12, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %105, x86_fp80 noundef %112, x86_fp80 noundef 0xK4001E000000000000000)
          to label %.critedge341 unwind label %138

138:                                              ; preds = %137
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %154

.critedge341:                                     ; preds = %137, %132
  %.sink400 = phi ptr [ %11, %132 ], [ %12, %137 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink400) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %140 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %142 unwind label %156

142:                                              ; preds = %.critedge341
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  %143 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002A000000000000000) #6
  %144 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002A000000000000000)
          to label %145 unwind label %158

145:                                              ; preds = %142
  %146 = fsub x86_fp80 %143, %144
  %147 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %146)
  %148 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %144)
  %149 = fadd x86_fp80 %148, 0xK3FFF8000000000000000
  %150 = fdiv x86_fp80 %147, %149
  %151 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %143)
  br i1 %151, label %152, label %162

152:                                              ; preds = %145
  %153 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %144)
  br i1 %153, label %174, label %162

154:                                              ; preds = %122, %134, %138, %120
  %.pn287.pn = phi { ptr, i32 } [ %121, %120 ], [ %139, %138 ], [ %123, %122 ], [ %135, %134 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %155

155:                                              ; preds = %154, %118
  %.pn287.pn.pn = phi { ptr, i32 } [ %.pn287.pn, %154 ], [ %119, %118 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %574

156:                                              ; preds = %.critedge341
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  br label %193

158:                                              ; preds = %142
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %192

160:                                              ; preds = %174, %169
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %192

162:                                              ; preds = %152, %145
  %163 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %143)
  br i1 %163, label %168, label %164

164:                                              ; preds = %162
  %165 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %143)
  %166 = fcmp oeq x86_fp80 %143, %144
  %or.cond342 = and i1 %166, %165
  %167 = fcmp olt x86_fp80 %150, 0xK3FF8A3D70A3D70A3D800
  %or.cond379 = or i1 %167, %or.cond342
  br i1 %or.cond379, label %174, label %169

168:                                              ; preds = %162
  %.old378 = fcmp olt x86_fp80 %150, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old378, label %174, label %169

169:                                              ; preds = %164, %168
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %170 unwind label %160

170:                                              ; preds = %169
  %171 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %15, i32 noundef %171, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %143, x86_fp80 noundef %144, x86_fp80 noundef 0xK4002A000000000000000)
          to label %.critedge344 unwind label %172

172:                                              ; preds = %170
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %192

174:                                              ; preds = %152, %164, %168
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %175 unwind label %160

175:                                              ; preds = %174
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %16, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %143, x86_fp80 noundef %150, x86_fp80 noundef 0xK4002A000000000000000)
          to label %.critedge344 unwind label %176

176:                                              ; preds = %175
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %192

.critedge344:                                     ; preds = %175, %170
  %.sink401 = phi ptr [ %15, %170 ], [ %16, %175 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink401) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  %178 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %180 unwind label %194

180:                                              ; preds = %.critedge344
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  %181 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002C000000000000000) #6
  %182 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002C000000000000000)
          to label %183 unwind label %196

183:                                              ; preds = %180
  %184 = fsub x86_fp80 %181, %182
  %185 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %184)
  %186 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %182)
  %187 = fadd x86_fp80 %186, 0xK3FFF8000000000000000
  %188 = fdiv x86_fp80 %185, %187
  %189 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %181)
  br i1 %189, label %190, label %200

190:                                              ; preds = %183
  %191 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %182)
  br i1 %191, label %212, label %200

192:                                              ; preds = %160, %172, %176, %158
  %.pn291.pn = phi { ptr, i32 } [ %159, %158 ], [ %177, %176 ], [ %161, %160 ], [ %173, %172 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %193

193:                                              ; preds = %192, %156
  %.pn291.pn.pn = phi { ptr, i32 } [ %.pn291.pn, %192 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %574

194:                                              ; preds = %.critedge344
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  br label %231

196:                                              ; preds = %180
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %230

198:                                              ; preds = %212, %207
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %230

200:                                              ; preds = %190, %183
  %201 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %181)
  br i1 %201, label %206, label %202

202:                                              ; preds = %200
  %203 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %181)
  %204 = fcmp oeq x86_fp80 %181, %182
  %or.cond345 = and i1 %204, %203
  %205 = fcmp olt x86_fp80 %188, 0xK3FF8A3D70A3D70A3D800
  %or.cond381 = or i1 %205, %or.cond345
  br i1 %or.cond381, label %212, label %207

206:                                              ; preds = %200
  %.old380 = fcmp olt x86_fp80 %188, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old380, label %212, label %207

207:                                              ; preds = %202, %206
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %208 unwind label %198

208:                                              ; preds = %207
  %209 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %19, i32 noundef %209, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %181, x86_fp80 noundef %182, x86_fp80 noundef 0xK4002C000000000000000)
          to label %.critedge347 unwind label %210

210:                                              ; preds = %208
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %230

212:                                              ; preds = %190, %202, %206
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %213 unwind label %198

213:                                              ; preds = %212
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %20, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %181, x86_fp80 noundef %188, x86_fp80 noundef 0xK4002C000000000000000)
          to label %.critedge347 unwind label %214

214:                                              ; preds = %213
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %230

.critedge347:                                     ; preds = %213, %208
  %.sink402 = phi ptr [ %19, %208 ], [ %20, %213 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink402) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  %216 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %218 unwind label %232

218:                                              ; preds = %.critedge347
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  %219 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002E000000000000000) #6
  %220 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002E000000000000000)
          to label %221 unwind label %234

221:                                              ; preds = %218
  %222 = fsub x86_fp80 %219, %220
  %223 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %222)
  %224 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %220)
  %225 = fadd x86_fp80 %224, 0xK3FFF8000000000000000
  %226 = fdiv x86_fp80 %223, %225
  %227 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %219)
  br i1 %227, label %228, label %238

228:                                              ; preds = %221
  %229 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %220)
  br i1 %229, label %250, label %238

230:                                              ; preds = %198, %210, %214, %196
  %.pn295.pn = phi { ptr, i32 } [ %197, %196 ], [ %215, %214 ], [ %199, %198 ], [ %211, %210 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %231

231:                                              ; preds = %230, %194
  %.pn295.pn.pn = phi { ptr, i32 } [ %.pn295.pn, %230 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br label %574

232:                                              ; preds = %.critedge347
  %233 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %269

234:                                              ; preds = %218
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %268

236:                                              ; preds = %250, %245
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %268

238:                                              ; preds = %228, %221
  %239 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %219)
  br i1 %239, label %244, label %240

240:                                              ; preds = %238
  %241 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %219)
  %242 = fcmp oeq x86_fp80 %219, %220
  %or.cond348 = and i1 %242, %241
  %243 = fcmp olt x86_fp80 %226, 0xK3FF8A3D70A3D70A3D800
  %or.cond383 = or i1 %243, %or.cond348
  br i1 %or.cond383, label %250, label %245

244:                                              ; preds = %238
  %.old382 = fcmp olt x86_fp80 %226, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old382, label %250, label %245

245:                                              ; preds = %240, %244
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %246 unwind label %236

246:                                              ; preds = %245
  %247 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %23, i32 noundef %247, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %219, x86_fp80 noundef %220, x86_fp80 noundef 0xK4002E000000000000000)
          to label %.critedge350 unwind label %248

248:                                              ; preds = %246
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %268

250:                                              ; preds = %228, %240, %244
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %251 unwind label %236

251:                                              ; preds = %250
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %24, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %219, x86_fp80 noundef %226, x86_fp80 noundef 0xK4002E000000000000000)
          to label %.critedge350 unwind label %252

252:                                              ; preds = %251
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %268

.critedge350:                                     ; preds = %251, %246
  %.sink403 = phi ptr [ %23, %246 ], [ %24, %251 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink403) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  %254 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %256 unwind label %270

256:                                              ; preds = %.critedge350
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  %257 = call noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef 0xK4002F000000000000000) #6
  %258 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002F000000000000000)
          to label %259 unwind label %272

259:                                              ; preds = %256
  %260 = fsub x86_fp80 %257, %258
  %261 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %260)
  %262 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %258)
  %263 = fadd x86_fp80 %262, 0xK3FFF8000000000000000
  %264 = fdiv x86_fp80 %261, %263
  %265 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %257)
  br i1 %265, label %266, label %276

266:                                              ; preds = %259
  %267 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %258)
  br i1 %267, label %288, label %276

268:                                              ; preds = %236, %248, %252, %234
  %.pn299.pn = phi { ptr, i32 } [ %235, %234 ], [ %253, %252 ], [ %237, %236 ], [ %249, %248 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %269

269:                                              ; preds = %268, %232
  %.pn299.pn.pn = phi { ptr, i32 } [ %.pn299.pn, %268 ], [ %233, %232 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br label %574

270:                                              ; preds = %.critedge350
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #6
  br label %308

272:                                              ; preds = %256
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %307

274:                                              ; preds = %288, %283
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %307

276:                                              ; preds = %266, %259
  %277 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %257)
  br i1 %277, label %282, label %278

278:                                              ; preds = %276
  %279 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %257)
  %280 = fcmp oeq x86_fp80 %257, %258
  %or.cond351 = and i1 %280, %279
  %281 = fcmp olt x86_fp80 %264, 0xK3FF8A3D70A3D70A3D800
  %or.cond385 = or i1 %281, %or.cond351
  br i1 %or.cond385, label %288, label %283

282:                                              ; preds = %276
  %.old384 = fcmp olt x86_fp80 %264, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old384, label %288, label %283

283:                                              ; preds = %278, %282
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %284 unwind label %274

284:                                              ; preds = %283
  %285 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %27, i32 noundef %285, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %257, x86_fp80 noundef %258, x86_fp80 noundef 0xK4002F000000000000000)
          to label %.critedge353 unwind label %286

286:                                              ; preds = %284
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %307

288:                                              ; preds = %266, %278, %282
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %289 unwind label %274

289:                                              ; preds = %288
  invoke void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %28, i32 noundef 3, i32 noundef 6, i32 noundef 18, x86_fp80 noundef %257, x86_fp80 noundef %264, x86_fp80 noundef 0xK4002F000000000000000)
          to label %.critedge353 unwind label %290

290:                                              ; preds = %289
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %307

.critedge353:                                     ; preds = %289, %284
  %.sink404 = phi ptr [ %27, %284 ], [ %28, %289 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink404) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  %292 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %294 unwind label %309

294:                                              ; preds = %.critedge353
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  %295 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 5) #6
  %296 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4001A000000000000000)
          to label %297 unwind label %311

297:                                              ; preds = %294
  %298 = sitofp i64 %295 to x86_fp80
  %299 = fsub x86_fp80 %298, %296
  %300 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %299)
  %301 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %296)
  %302 = fadd x86_fp80 %301, 0xK3FFF8000000000000000
  %303 = fdiv x86_fp80 %300, %302
  %304 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %298)
  br i1 %304, label %305, label %315

305:                                              ; preds = %297
  %306 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %296)
  br i1 %306, label %327, label %315

307:                                              ; preds = %274, %286, %290, %272
  %.pn303.pn = phi { ptr, i32 } [ %273, %272 ], [ %291, %290 ], [ %275, %274 ], [ %287, %286 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %308

308:                                              ; preds = %307, %270
  %.pn303.pn.pn = phi { ptr, i32 } [ %.pn303.pn, %307 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  br label %574

309:                                              ; preds = %.critedge353
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  br label %347

311:                                              ; preds = %294
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %346

313:                                              ; preds = %327, %322
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %346

315:                                              ; preds = %305, %297
  %316 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %298)
  br i1 %316, label %321, label %317

317:                                              ; preds = %315
  %318 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %298)
  %319 = fcmp oeq x86_fp80 %296, %298
  %or.cond354 = and i1 %319, %318
  %320 = fcmp olt x86_fp80 %303, 0xK3FF8A3D70A3D70A3D800
  %or.cond387 = or i1 %320, %or.cond354
  br i1 %or.cond387, label %327, label %322

321:                                              ; preds = %315
  %.old386 = fcmp olt x86_fp80 %303, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old386, label %327, label %322

322:                                              ; preds = %317, %321
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %323 unwind label %313

323:                                              ; preds = %322
  %324 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %31, i32 noundef %324, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %295, x86_fp80 noundef %296, i64 noundef 5)
          to label %.critedge356 unwind label %325

325:                                              ; preds = %323
  %326 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %346

327:                                              ; preds = %305, %317, %321
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %328 unwind label %313

328:                                              ; preds = %327
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %32, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %295, x86_fp80 noundef %303, i64 noundef 5)
          to label %.critedge356 unwind label %329

329:                                              ; preds = %328
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %346

.critedge356:                                     ; preds = %328, %323
  %.sink405 = phi ptr [ %31, %323 ], [ %32, %328 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink405) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  %331 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %333 unwind label %348

333:                                              ; preds = %.critedge356
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  %334 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 9) #6
  %335 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK40029000000000000000)
          to label %336 unwind label %350

336:                                              ; preds = %333
  %337 = sitofp i64 %334 to x86_fp80
  %338 = fsub x86_fp80 %337, %335
  %339 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %338)
  %340 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %335)
  %341 = fadd x86_fp80 %340, 0xK3FFF8000000000000000
  %342 = fdiv x86_fp80 %339, %341
  %343 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %337)
  br i1 %343, label %344, label %354

344:                                              ; preds = %336
  %345 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %335)
  br i1 %345, label %366, label %354

346:                                              ; preds = %313, %325, %329, %311
  %.pn307.pn = phi { ptr, i32 } [ %312, %311 ], [ %330, %329 ], [ %314, %313 ], [ %326, %325 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %347

347:                                              ; preds = %346, %309
  %.pn307.pn.pn = phi { ptr, i32 } [ %.pn307.pn, %346 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %574

348:                                              ; preds = %.critedge356
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %386

350:                                              ; preds = %333
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %385

352:                                              ; preds = %366, %361
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %385

354:                                              ; preds = %344, %336
  %355 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %337)
  br i1 %355, label %360, label %356

356:                                              ; preds = %354
  %357 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %337)
  %358 = fcmp oeq x86_fp80 %335, %337
  %or.cond357 = and i1 %358, %357
  %359 = fcmp olt x86_fp80 %342, 0xK3FF8A3D70A3D70A3D800
  %or.cond389 = or i1 %359, %or.cond357
  br i1 %or.cond389, label %366, label %361

360:                                              ; preds = %354
  %.old388 = fcmp olt x86_fp80 %342, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old388, label %366, label %361

361:                                              ; preds = %356, %360
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %362 unwind label %352

362:                                              ; preds = %361
  %363 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %35, i32 noundef %363, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %334, x86_fp80 noundef %335, i64 noundef 9)
          to label %.critedge359 unwind label %364

364:                                              ; preds = %362
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %385

366:                                              ; preds = %344, %356, %360
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %367 unwind label %352

367:                                              ; preds = %366
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %36, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %334, x86_fp80 noundef %342, i64 noundef 9)
          to label %.critedge359 unwind label %368

368:                                              ; preds = %367
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  br label %385

.critedge359:                                     ; preds = %367, %362
  %.sink406 = phi ptr [ %35, %362 ], [ %36, %367 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink406) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  %370 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %372 unwind label %387

372:                                              ; preds = %.critedge359
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  %373 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 11) #6
  %374 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002B000000000000000)
          to label %375 unwind label %389

375:                                              ; preds = %372
  %376 = sitofp i64 %373 to x86_fp80
  %377 = fsub x86_fp80 %376, %374
  %378 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %377)
  %379 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %374)
  %380 = fadd x86_fp80 %379, 0xK3FFF8000000000000000
  %381 = fdiv x86_fp80 %378, %380
  %382 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %376)
  br i1 %382, label %383, label %393

383:                                              ; preds = %375
  %384 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %374)
  br i1 %384, label %405, label %393

385:                                              ; preds = %352, %364, %368, %350
  %.pn311.pn = phi { ptr, i32 } [ %351, %350 ], [ %369, %368 ], [ %353, %352 ], [ %365, %364 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %386

386:                                              ; preds = %385, %348
  %.pn311.pn.pn = phi { ptr, i32 } [ %.pn311.pn, %385 ], [ %349, %348 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #6
  br label %574

387:                                              ; preds = %.critedge359
  %388 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #6
  br label %425

389:                                              ; preds = %372
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %424

391:                                              ; preds = %405, %400
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %424

393:                                              ; preds = %383, %375
  %394 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %376)
  br i1 %394, label %399, label %395

395:                                              ; preds = %393
  %396 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %376)
  %397 = fcmp oeq x86_fp80 %374, %376
  %or.cond360 = and i1 %397, %396
  %398 = fcmp olt x86_fp80 %381, 0xK3FF8A3D70A3D70A3D800
  %or.cond391 = or i1 %398, %or.cond360
  br i1 %or.cond391, label %405, label %400

399:                                              ; preds = %393
  %.old390 = fcmp olt x86_fp80 %381, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old390, label %405, label %400

400:                                              ; preds = %395, %399
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %401 unwind label %391

401:                                              ; preds = %400
  %402 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %39, i32 noundef %402, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %373, x86_fp80 noundef %374, i64 noundef 11)
          to label %.critedge362 unwind label %403

403:                                              ; preds = %401
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %424

405:                                              ; preds = %383, %395, %399
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %406 unwind label %391

406:                                              ; preds = %405
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %40, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %373, x86_fp80 noundef %381, i64 noundef 11)
          to label %.critedge362 unwind label %407

407:                                              ; preds = %406
  %408 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %424

.critedge362:                                     ; preds = %406, %401
  %.sink407 = phi ptr [ %39, %401 ], [ %40, %406 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink407) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  %409 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %42) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %411 unwind label %426

411:                                              ; preds = %.critedge362
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  %412 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 13) #6
  %413 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4002D000000000000000)
          to label %414 unwind label %428

414:                                              ; preds = %411
  %415 = sitofp i64 %412 to x86_fp80
  %416 = fsub x86_fp80 %415, %413
  %417 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %416)
  %418 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %413)
  %419 = fadd x86_fp80 %418, 0xK3FFF8000000000000000
  %420 = fdiv x86_fp80 %417, %419
  %421 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %415)
  br i1 %421, label %422, label %432

422:                                              ; preds = %414
  %423 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %413)
  br i1 %423, label %444, label %432

424:                                              ; preds = %391, %403, %407, %389
  %.pn315.pn = phi { ptr, i32 } [ %390, %389 ], [ %408, %407 ], [ %392, %391 ], [ %404, %403 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  br label %425

425:                                              ; preds = %424, %387
  %.pn315.pn.pn = phi { ptr, i32 } [ %.pn315.pn, %424 ], [ %388, %387 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  br label %574

426:                                              ; preds = %.critedge362
  %427 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %42) #6
  br label %464

428:                                              ; preds = %411
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %463

430:                                              ; preds = %444, %439
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %463

432:                                              ; preds = %422, %414
  %433 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %415)
  br i1 %433, label %438, label %434

434:                                              ; preds = %432
  %435 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %415)
  %436 = fcmp oeq x86_fp80 %413, %415
  %or.cond363 = and i1 %436, %435
  %437 = fcmp olt x86_fp80 %420, 0xK3FF8A3D70A3D70A3D800
  %or.cond393 = or i1 %437, %or.cond363
  br i1 %or.cond393, label %444, label %439

438:                                              ; preds = %432
  %.old392 = fcmp olt x86_fp80 %420, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old392, label %444, label %439

439:                                              ; preds = %434, %438
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %440 unwind label %430

440:                                              ; preds = %439
  %441 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %43, i32 noundef %441, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %412, x86_fp80 noundef %413, i64 noundef 13)
          to label %.critedge365 unwind label %442

442:                                              ; preds = %440
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %463

444:                                              ; preds = %422, %434, %438
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %445 unwind label %430

445:                                              ; preds = %444
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %44, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %412, x86_fp80 noundef %420, i64 noundef 13)
          to label %.critedge365 unwind label %446

446:                                              ; preds = %445
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  br label %463

.critedge365:                                     ; preds = %445, %440
  %.sink408 = phi ptr [ %43, %440 ], [ %44, %445 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink408) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  %448 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %450 unwind label %465

450:                                              ; preds = %.critedge365
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #6
  %451 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 16) #6
  %452 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK40038000000000000000)
          to label %453 unwind label %467

453:                                              ; preds = %450
  %454 = sitofp i64 %451 to x86_fp80
  %455 = fsub x86_fp80 %454, %452
  %456 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %455)
  %457 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %452)
  %458 = fadd x86_fp80 %457, 0xK3FFF8000000000000000
  %459 = fdiv x86_fp80 %456, %458
  %460 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %454)
  br i1 %460, label %461, label %471

461:                                              ; preds = %453
  %462 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %452)
  br i1 %462, label %483, label %471

463:                                              ; preds = %430, %442, %446, %428
  %.pn319.pn = phi { ptr, i32 } [ %429, %428 ], [ %447, %446 ], [ %431, %430 ], [ %443, %442 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  br label %464

464:                                              ; preds = %463, %426
  %.pn319.pn.pn = phi { ptr, i32 } [ %.pn319.pn, %463 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  br label %574

465:                                              ; preds = %.critedge365
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #6
  br label %503

467:                                              ; preds = %450
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %502

469:                                              ; preds = %483, %478
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %502

471:                                              ; preds = %461, %453
  %472 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %454)
  br i1 %472, label %477, label %473

473:                                              ; preds = %471
  %474 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %454)
  %475 = fcmp oeq x86_fp80 %452, %454
  %or.cond366 = and i1 %475, %474
  %476 = fcmp olt x86_fp80 %459, 0xK3FF8A3D70A3D70A3D800
  %or.cond395 = or i1 %476, %or.cond366
  br i1 %or.cond395, label %483, label %478

477:                                              ; preds = %471
  %.old394 = fcmp olt x86_fp80 %459, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old394, label %483, label %478

478:                                              ; preds = %473, %477
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %479 unwind label %469

479:                                              ; preds = %478
  %480 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %47, i32 noundef %480, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %451, x86_fp80 noundef %452, i64 noundef 16)
          to label %.critedge368 unwind label %481

481:                                              ; preds = %479
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %502

483:                                              ; preds = %461, %473, %477
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %484 unwind label %469

484:                                              ; preds = %483
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %48, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %451, x86_fp80 noundef %459, i64 noundef 16)
          to label %.critedge368 unwind label %485

485:                                              ; preds = %484
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %502

.critedge368:                                     ; preds = %484, %479
  %.sink409 = phi ptr [ %47, %479 ], [ %48, %484 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink409) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  %487 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %489 unwind label %504

489:                                              ; preds = %.critedge368
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  %490 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 18) #6
  %491 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK40039000000000000000)
          to label %492 unwind label %506

492:                                              ; preds = %489
  %493 = sitofp i64 %490 to x86_fp80
  %494 = fsub x86_fp80 %493, %491
  %495 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %494)
  %496 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %491)
  %497 = fadd x86_fp80 %496, 0xK3FFF8000000000000000
  %498 = fdiv x86_fp80 %495, %497
  %499 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %493)
  br i1 %499, label %500, label %510

500:                                              ; preds = %492
  %501 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %491)
  br i1 %501, label %522, label %510

502:                                              ; preds = %469, %481, %485, %467
  %.pn323.pn = phi { ptr, i32 } [ %468, %467 ], [ %486, %485 ], [ %470, %469 ], [ %482, %481 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %503

503:                                              ; preds = %502, %465
  %.pn323.pn.pn = phi { ptr, i32 } [ %.pn323.pn, %502 ], [ %466, %465 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  br label %574

504:                                              ; preds = %.critedge368
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #6
  br label %542

506:                                              ; preds = %489
  %507 = landingpad { ptr, i32 }
          cleanup
  br label %541

508:                                              ; preds = %522, %517
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %541

510:                                              ; preds = %500, %492
  %511 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %493)
  br i1 %511, label %516, label %512

512:                                              ; preds = %510
  %513 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %493)
  %514 = fcmp oeq x86_fp80 %491, %493
  %or.cond369 = and i1 %514, %513
  %515 = fcmp olt x86_fp80 %498, 0xK3FF8A3D70A3D70A3D800
  %or.cond397 = or i1 %515, %or.cond369
  br i1 %or.cond397, label %522, label %517

516:                                              ; preds = %510
  %.old396 = fcmp olt x86_fp80 %498, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old396, label %522, label %517

517:                                              ; preds = %512, %516
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %518 unwind label %508

518:                                              ; preds = %517
  %519 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %51, i32 noundef %519, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %490, x86_fp80 noundef %491, i64 noundef 18)
          to label %.critedge371 unwind label %520

520:                                              ; preds = %518
  %521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %541

522:                                              ; preds = %500, %512, %516
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %49)
          to label %523 unwind label %508

523:                                              ; preds = %522
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %52, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %490, x86_fp80 noundef %498, i64 noundef 18)
          to label %.critedge371 unwind label %524

524:                                              ; preds = %523
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %541

.critedge371:                                     ; preds = %523, %518
  %.sink410 = phi ptr [ %51, %518 ], [ %52, %523 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink410) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  %526 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %528 unwind label %543

528:                                              ; preds = %.critedge371
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  %529 = call noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef 20) #6
  %530 = invoke noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32) %3, x86_fp80 noundef 0xK4003A000000000000000)
          to label %531 unwind label %545

531:                                              ; preds = %528
  %532 = sitofp i64 %529 to x86_fp80
  %533 = fsub x86_fp80 %532, %530
  %534 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %533)
  %535 = call noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef %530)
  %536 = fadd x86_fp80 %535, 0xK3FFF8000000000000000
  %537 = fdiv x86_fp80 %534, %536
  %538 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %532)
  br i1 %538, label %539, label %549

539:                                              ; preds = %531
  %540 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %530)
  br i1 %540, label %561, label %549

541:                                              ; preds = %508, %520, %524, %506
  %.pn327.pn = phi { ptr, i32 } [ %507, %506 ], [ %525, %524 ], [ %509, %508 ], [ %521, %520 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %542

542:                                              ; preds = %541, %504
  %.pn327.pn.pn = phi { ptr, i32 } [ %.pn327.pn, %541 ], [ %505, %504 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #6
  br label %574

543:                                              ; preds = %.critedge371
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #6
  br label %568

545:                                              ; preds = %528
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %567

547:                                              ; preds = %561, %556
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %567

549:                                              ; preds = %539, %531
  %550 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %532)
  br i1 %550, label %555, label %551

551:                                              ; preds = %549
  %552 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %532)
  %553 = fcmp oeq x86_fp80 %530, %532
  %or.cond372 = and i1 %553, %552
  %554 = fcmp olt x86_fp80 %537, 0xK3FF8A3D70A3D70A3D800
  %or.cond399 = or i1 %554, %or.cond372
  br i1 %or.cond399, label %561, label %556

555:                                              ; preds = %549
  %.old398 = fcmp olt x86_fp80 %537, 0xK3FF8A3D70A3D70A3D800
  br i1 %.old398, label %561, label %556

556:                                              ; preds = %551, %555
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %557 unwind label %547

557:                                              ; preds = %556
  %558 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %55, i32 noundef %558, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %529, x86_fp80 noundef %530, i64 noundef 20)
          to label %.critedge374 unwind label %559

559:                                              ; preds = %557
  %560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %567

561:                                              ; preds = %539, %551, %555
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %562 unwind label %547

562:                                              ; preds = %561
  invoke void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %56, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %529, x86_fp80 noundef %537, i64 noundef 20)
          to label %.critedge374 unwind label %563

563:                                              ; preds = %562
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  br label %567

.critedge374:                                     ; preds = %562, %557
  %.sink411 = phi ptr [ %55, %557 ], [ %56, %562 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink411) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %565 unwind label %569

565:                                              ; preds = %.critedge374
  invoke void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %57)
          to label %566 unwind label %571

566:                                              ; preds = %565
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i32 0

567:                                              ; preds = %547, %559, %563, %545
  %.pn331.pn = phi { ptr, i32 } [ %546, %545 ], [ %564, %563 ], [ %548, %547 ], [ %560, %559 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #6
  br label %568

568:                                              ; preds = %567, %543
  %.pn331.pn.pn = phi { ptr, i32 } [ %.pn331.pn, %567 ], [ %544, %543 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #6
  br label %574

569:                                              ; preds = %.critedge374
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %573

571:                                              ; preds = %565
  %572 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %573

573:                                              ; preds = %571, %569
  %.pn335 = phi { ptr, i32 } [ %572, %571 ], [ %570, %569 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #6
  br label %574

574:                                              ; preds = %573, %568, %542, %503, %464, %425, %386, %347, %308, %269, %231, %193, %155, %117
  %.pn335.pn = phi { ptr, i32 } [ %.pn335, %573 ], [ %.pn331.pn.pn, %568 ], [ %.pn327.pn.pn, %542 ], [ %.pn323.pn.pn, %503 ], [ %.pn319.pn.pn, %464 ], [ %.pn315.pn.pn, %425 ], [ %.pn311.pn.pn, %386 ], [ %.pn307.pn.pn, %347 ], [ %.pn303.pn.pn, %308 ], [ %.pn299.pn.pn, %269 ], [ %.pn295.pn.pn, %231 ], [ %.pn291.pn.pn, %193 ], [ %.pn287.pn.pn, %155 ], [ %.pn283.pn.pn, %117 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  br label %575

575:                                              ; preds = %574, %79
  %.pn335.pn.pn = phi { ptr, i32 } [ %.pn335.pn, %574 ], [ %.pn, %79 ]
  resume { ptr, i32 } %.pn335.pn.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFeeEEC2IZ4mainE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_ZN4gcem9factorialIeEET_S1_(x86_fp80 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef x86_fp80 @_ZNKSt8functionIFeeEEclEe(ptr noundef nonnull align 8 dereferenceable(32), x86_fp80 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef x86_fp80 @_ZSt3abse(x86_fp80 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_failIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_passIeeeEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, x86_fp80 noundef, x86_fp80 noundef, x86_fp80 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4gcem9factorialIlEET_S1_(i64 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_failIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef, x86_fp80 noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15print_test_passIlelEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef, x86_fp80 noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { inlinehint 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 #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass