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

; 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 }

@GCEM_TEST_NUMBER = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 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::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i8, align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i8, align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i8, align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i8, align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i8, align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::allocator", align 1
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i8, align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i8, align 1
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca i64, align 8
  %75 = alloca i8, align 1
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::allocator", align 1
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca i8, align 1
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::__cxx11::basic_string", align 8
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca %"class.std::allocator", align 1
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca i8, align 1
  %92 = alloca %"class.std::__cxx11::basic_string", align 8
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator", align 1
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca i8, align 1
  %100 = alloca %"class.std::__cxx11::basic_string", align 8
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  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 %104 unwind label %132

104:                                              ; preds = %0
  invoke void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %2)
          to label %105 unwind label %136

105:                                              ; preds = %104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #7
  %106 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %108 unwind label %141

108:                                              ; preds = %105
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %109 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef 0.000000e+00) #7
  store double %109, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %110 = invoke noundef double @_ZSt3absd(double noundef 0.000000e+00)
          to label %111 unwind label %145

111:                                              ; preds = %108
  store double %110, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %112 = load double, ptr %8, align 8, !tbaa !9
  %113 = load double, ptr %9, align 8, !tbaa !9
  %114 = fsub double %112, %113
  %115 = invoke noundef double @_ZSt3absd(double noundef %114)
          to label %116 unwind label %149

116:                                              ; preds = %111
  %117 = load double, ptr %9, align 8, !tbaa !9
  %118 = invoke noundef double @_ZSt3absd(double noundef %117)
          to label %119 unwind label %149

119:                                              ; preds = %116
  %120 = fadd double 1.000000e+00, %118
  %121 = fdiv double %115, %120
  store double %121, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  store i8 0, ptr %11, align 1, !tbaa !11
  %122 = load double, ptr %8, align 8, !tbaa !9
  %123 = fpext double %122 to x86_fp80
  %124 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %123)
          to label %125 unwind label %153

125:                                              ; preds = %119
  br i1 %124, label %126, label %157

126:                                              ; preds = %125
  %127 = load double, ptr %9, align 8, !tbaa !9
  %128 = fpext double %127 to x86_fp80
  %129 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %128)
          to label %130 unwind label %153

130:                                              ; preds = %126
  br i1 %129, label %131, label %157

131:                                              ; preds = %130
  store i8 1, ptr %11, align 1, !tbaa !11
  br label %188

132:                                              ; preds = %0
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %4, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %5, align 4
  br label %140

136:                                              ; preds = %104
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %4, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  br label %140

140:                                              ; preds = %136, %132
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #7
  br label %1188

141:                                              ; preds = %105
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %4, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  br label %230

145:                                              ; preds = %108
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %4, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %5, align 4
  br label %229

149:                                              ; preds = %116, %111
  %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
  br label %228

153:                                              ; preds = %191, %176, %162, %157, %126, %119
  %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 %227

157:                                              ; preds = %130, %125
  %158 = load double, ptr %8, align 8, !tbaa !9
  %159 = fpext double %158 to x86_fp80
  %160 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %159)
          to label %161 unwind label %153

161:                                              ; preds = %157
  br i1 %160, label %172, label %162

162:                                              ; preds = %161
  %163 = load double, ptr %8, align 8, !tbaa !9
  %164 = fpext double %163 to x86_fp80
  %165 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %164)
          to label %166 unwind label %153

166:                                              ; preds = %162
  br i1 %165, label %167, label %172

167:                                              ; preds = %166
  %168 = load double, ptr %8, align 8, !tbaa !9
  %169 = load double, ptr %9, align 8, !tbaa !9
  %170 = fcmp oeq double %168, %169
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  store i8 1, ptr %11, align 1, !tbaa !11
  br label %187

172:                                              ; preds = %167, %166, %161
  %173 = load double, ptr %10, align 8, !tbaa !9
  %174 = fcmp olt double %173, 0x3D06849B86A12B9B
  br i1 %174, label %175, label %176

175:                                              ; preds = %172
  store i8 1, ptr %11, align 1, !tbaa !11
  br label %186

176:                                              ; preds = %172
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %177 unwind label %153

177:                                              ; preds = %176
  %178 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %179 = load double, ptr %8, align 8, !tbaa !9
  %180 = load double, ptr %9, align 8, !tbaa !9
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %12, i32 noundef %178, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %179, double noundef %180, double noundef 0.000000e+00)
          to label %181 unwind label %182

181:                                              ; preds = %177
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %186

182:                                              ; preds = %177
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %4, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %227

186:                                              ; preds = %181, %175
  br label %187

187:                                              ; preds = %186, %171
  br label %188

188:                                              ; preds = %187, %131
  %189 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %190 = trunc i8 %189 to i1
  br i1 %190, label %191, label %200

191:                                              ; preds = %188
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %192 unwind label %153

192:                                              ; preds = %191
  %193 = load double, ptr %8, align 8, !tbaa !9
  %194 = load double, ptr %10, align 8, !tbaa !9
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %13, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %193, double noundef %194, double noundef 0.000000e+00)
          to label %195 unwind label %196

195:                                              ; preds = %192
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %200

196:                                              ; preds = %192
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %4, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %227

200:                                              ; preds = %195, %188
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #7
  %201 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %203 unwind label %231

203:                                              ; preds = %200
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %204 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef -0.000000e+00) #7
  store double %204, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %205 = invoke noundef double @_ZSt3absd(double noundef -0.000000e+00)
          to label %206 unwind label %235

206:                                              ; preds = %203
  store double %205, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %207 = load double, ptr %16, align 8, !tbaa !9
  %208 = load double, ptr %17, align 8, !tbaa !9
  %209 = fsub double %207, %208
  %210 = invoke noundef double @_ZSt3absd(double noundef %209)
          to label %211 unwind label %239

211:                                              ; preds = %206
  %212 = load double, ptr %17, align 8, !tbaa !9
  %213 = invoke noundef double @_ZSt3absd(double noundef %212)
          to label %214 unwind label %239

214:                                              ; preds = %211
  %215 = fadd double 1.000000e+00, %213
  %216 = fdiv double %210, %215
  store double %216, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  store i8 0, ptr %19, align 1, !tbaa !11
  %217 = load double, ptr %16, align 8, !tbaa !9
  %218 = fpext double %217 to x86_fp80
  %219 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %218)
          to label %220 unwind label %243

220:                                              ; preds = %214
  br i1 %219, label %221, label %247

221:                                              ; preds = %220
  %222 = load double, ptr %17, align 8, !tbaa !9
  %223 = fpext double %222 to x86_fp80
  %224 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %223)
          to label %225 unwind label %243

225:                                              ; preds = %221
  br i1 %224, label %226, label %247

226:                                              ; preds = %225
  store i8 1, ptr %19, align 1, !tbaa !11
  br label %278

227:                                              ; preds = %196, %182, %153
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  br label %228

228:                                              ; preds = %227, %149
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %229

229:                                              ; preds = %228, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %230

230:                                              ; preds = %229, %141
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #7
  br label %1188

231:                                              ; preds = %200
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %4, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  br label %320

235:                                              ; preds = %203
  %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
  br label %319

239:                                              ; preds = %211, %206
  %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 %318

243:                                              ; preds = %281, %266, %252, %247, %221, %214
  %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 %317

247:                                              ; preds = %225, %220
  %248 = load double, ptr %16, align 8, !tbaa !9
  %249 = fpext double %248 to x86_fp80
  %250 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %249)
          to label %251 unwind label %243

251:                                              ; preds = %247
  br i1 %250, label %262, label %252

252:                                              ; preds = %251
  %253 = load double, ptr %16, align 8, !tbaa !9
  %254 = fpext double %253 to x86_fp80
  %255 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %254)
          to label %256 unwind label %243

256:                                              ; preds = %252
  br i1 %255, label %257, label %262

257:                                              ; preds = %256
  %258 = load double, ptr %16, align 8, !tbaa !9
  %259 = load double, ptr %17, align 8, !tbaa !9
  %260 = fcmp oeq double %258, %259
  br i1 %260, label %261, label %262

261:                                              ; preds = %257
  store i8 1, ptr %19, align 1, !tbaa !11
  br label %277

262:                                              ; preds = %257, %256, %251
  %263 = load double, ptr %18, align 8, !tbaa !9
  %264 = fcmp olt double %263, 0x3D06849B86A12B9B
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  store i8 1, ptr %19, align 1, !tbaa !11
  br label %276

266:                                              ; preds = %262
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %267 unwind label %243

267:                                              ; preds = %266
  %268 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %269 = load double, ptr %16, align 8, !tbaa !9
  %270 = load double, ptr %17, align 8, !tbaa !9
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %20, i32 noundef %268, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %269, double noundef %270, double noundef -0.000000e+00)
          to label %271 unwind label %272

271:                                              ; preds = %267
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %276

272:                                              ; preds = %267
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %4, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %317

276:                                              ; preds = %271, %265
  br label %277

277:                                              ; preds = %276, %261
  br label %278

278:                                              ; preds = %277, %226
  %279 = load i8, ptr %19, align 1, !tbaa !11, !range !13, !noundef !14
  %280 = trunc i8 %279 to i1
  br i1 %280, label %281, label %290

281:                                              ; preds = %278
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %282 unwind label %243

282:                                              ; preds = %281
  %283 = load double, ptr %16, align 8, !tbaa !9
  %284 = load double, ptr %18, align 8, !tbaa !9
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %21, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %283, double noundef %284, double noundef -0.000000e+00)
          to label %285 unwind label %286

285:                                              ; preds = %282
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %290

286:                                              ; preds = %282
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %4, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %317

290:                                              ; preds = %285, %278
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  %291 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %293 unwind label %321

293:                                              ; preds = %290
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %294 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef 1.000000e+00) #7
  store double %294, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %295 = invoke noundef double @_ZSt3absd(double noundef 1.000000e+00)
          to label %296 unwind label %325

296:                                              ; preds = %293
  store double %295, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %297 = load double, ptr %24, align 8, !tbaa !9
  %298 = load double, ptr %25, align 8, !tbaa !9
  %299 = fsub double %297, %298
  %300 = invoke noundef double @_ZSt3absd(double noundef %299)
          to label %301 unwind label %329

301:                                              ; preds = %296
  %302 = load double, ptr %25, align 8, !tbaa !9
  %303 = invoke noundef double @_ZSt3absd(double noundef %302)
          to label %304 unwind label %329

304:                                              ; preds = %301
  %305 = fadd double 1.000000e+00, %303
  %306 = fdiv double %300, %305
  store double %306, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  store i8 0, ptr %27, align 1, !tbaa !11
  %307 = load double, ptr %24, align 8, !tbaa !9
  %308 = fpext double %307 to x86_fp80
  %309 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %308)
          to label %310 unwind label %333

310:                                              ; preds = %304
  br i1 %309, label %311, label %337

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

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

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

317:                                              ; preds = %286, %272, %243
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  br label %318

318:                                              ; preds = %317, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %319

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

320:                                              ; preds = %319, %231
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #7
  br label %1188

321:                                              ; preds = %290
  %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) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  br label %410

325:                                              ; preds = %293
  %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 %409

329:                                              ; preds = %301, %296
  %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 %408

333:                                              ; preds = %371, %356, %342, %337, %311, %304
  %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 %407

337:                                              ; preds = %315, %310
  %338 = load double, ptr %24, align 8, !tbaa !9
  %339 = fpext double %338 to x86_fp80
  %340 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %339)
          to label %341 unwind label %333

341:                                              ; preds = %337
  br i1 %340, label %352, label %342

342:                                              ; preds = %341
  %343 = load double, ptr %24, align 8, !tbaa !9
  %344 = fpext double %343 to x86_fp80
  %345 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %344)
          to label %346 unwind label %333

346:                                              ; preds = %342
  br i1 %345, label %347, label %352

347:                                              ; preds = %346
  %348 = load double, ptr %24, align 8, !tbaa !9
  %349 = load double, ptr %25, align 8, !tbaa !9
  %350 = fcmp oeq double %348, %349
  br i1 %350, label %351, label %352

351:                                              ; preds = %347
  store i8 1, ptr %27, align 1, !tbaa !11
  br label %367

352:                                              ; preds = %347, %346, %341
  %353 = load double, ptr %26, align 8, !tbaa !9
  %354 = fcmp olt double %353, 0x3D06849B86A12B9B
  br i1 %354, label %355, label %356

355:                                              ; preds = %352
  store i8 1, ptr %27, align 1, !tbaa !11
  br label %366

356:                                              ; preds = %352
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %357 unwind label %333

357:                                              ; preds = %356
  %358 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %359 = load double, ptr %24, align 8, !tbaa !9
  %360 = load double, ptr %25, align 8, !tbaa !9
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %28, i32 noundef %358, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %359, double noundef %360, double noundef 1.000000e+00)
          to label %361 unwind label %362

361:                                              ; preds = %357
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %366

362:                                              ; preds = %357
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %4, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %407

366:                                              ; preds = %361, %355
  br label %367

367:                                              ; preds = %366, %351
  br label %368

368:                                              ; preds = %367, %316
  %369 = load i8, ptr %27, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc i8 %369 to i1
  br i1 %370, label %371, label %380

371:                                              ; preds = %368
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %372 unwind label %333

372:                                              ; preds = %371
  %373 = load double, ptr %24, align 8, !tbaa !9
  %374 = load double, ptr %26, align 8, !tbaa !9
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %29, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %373, double noundef %374, double noundef 1.000000e+00)
          to label %375 unwind label %376

375:                                              ; preds = %372
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %380

376:                                              ; preds = %372
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %4, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %407

380:                                              ; preds = %375, %368
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  %381 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %383 unwind label %411

383:                                              ; preds = %380
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %384 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef -1.000000e+00) #7
  store double %384, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %385 = invoke noundef double @_ZSt3absd(double noundef -1.000000e+00)
          to label %386 unwind label %415

386:                                              ; preds = %383
  store double %385, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %387 = load double, ptr %32, align 8, !tbaa !9
  %388 = load double, ptr %33, align 8, !tbaa !9
  %389 = fsub double %387, %388
  %390 = invoke noundef double @_ZSt3absd(double noundef %389)
          to label %391 unwind label %419

391:                                              ; preds = %386
  %392 = load double, ptr %33, align 8, !tbaa !9
  %393 = invoke noundef double @_ZSt3absd(double noundef %392)
          to label %394 unwind label %419

394:                                              ; preds = %391
  %395 = fadd double 1.000000e+00, %393
  %396 = fdiv double %390, %395
  store double %396, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #7
  store i8 0, ptr %35, align 1, !tbaa !11
  %397 = load double, ptr %32, align 8, !tbaa !9
  %398 = fpext double %397 to x86_fp80
  %399 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %398)
          to label %400 unwind label %423

400:                                              ; preds = %394
  br i1 %399, label %401, label %427

401:                                              ; preds = %400
  %402 = load double, ptr %33, align 8, !tbaa !9
  %403 = fpext double %402 to x86_fp80
  %404 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %403)
          to label %405 unwind label %423

405:                                              ; preds = %401
  br i1 %404, label %406, label %427

406:                                              ; preds = %405
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %458

407:                                              ; preds = %376, %362, %333
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %408

408:                                              ; preds = %407, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %409

409:                                              ; preds = %408, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %410

410:                                              ; preds = %409, %321
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %1188

411:                                              ; preds = %380
  %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
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %497

415:                                              ; preds = %383
  %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 %496

419:                                              ; preds = %391, %386
  %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 %495

423:                                              ; preds = %461, %446, %432, %427, %401, %394
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %4, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %5, align 4
  br label %494

427:                                              ; preds = %405, %400
  %428 = load double, ptr %32, align 8, !tbaa !9
  %429 = fpext double %428 to x86_fp80
  %430 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %429)
          to label %431 unwind label %423

431:                                              ; preds = %427
  br i1 %430, label %442, label %432

432:                                              ; preds = %431
  %433 = load double, ptr %32, align 8, !tbaa !9
  %434 = fpext double %433 to x86_fp80
  %435 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %434)
          to label %436 unwind label %423

436:                                              ; preds = %432
  br i1 %435, label %437, label %442

437:                                              ; preds = %436
  %438 = load double, ptr %32, align 8, !tbaa !9
  %439 = load double, ptr %33, align 8, !tbaa !9
  %440 = fcmp oeq double %438, %439
  br i1 %440, label %441, label %442

441:                                              ; preds = %437
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %457

442:                                              ; preds = %437, %436, %431
  %443 = load double, ptr %34, align 8, !tbaa !9
  %444 = fcmp olt double %443, 0x3D06849B86A12B9B
  br i1 %444, label %445, label %446

445:                                              ; preds = %442
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %456

446:                                              ; preds = %442
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %447 unwind label %423

447:                                              ; preds = %446
  %448 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %449 = load double, ptr %32, align 8, !tbaa !9
  %450 = load double, ptr %33, align 8, !tbaa !9
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %36, i32 noundef %448, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %449, double noundef %450, double noundef -1.000000e+00)
          to label %451 unwind label %452

451:                                              ; preds = %447
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %456

452:                                              ; preds = %447
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %4, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %494

456:                                              ; preds = %451, %445
  br label %457

457:                                              ; preds = %456, %441
  br label %458

458:                                              ; preds = %457, %406
  %459 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %460 = trunc i8 %459 to i1
  br i1 %460, label %461, label %470

461:                                              ; preds = %458
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %462 unwind label %423

462:                                              ; preds = %461
  %463 = load double, ptr %32, align 8, !tbaa !9
  %464 = load double, ptr %34, align 8, !tbaa !9
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %37, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %463, double noundef %464, double noundef -1.000000e+00)
          to label %465 unwind label %466

465:                                              ; preds = %462
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %470

466:                                              ; preds = %462
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %4, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %494

470:                                              ; preds = %465, %458
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  %471 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %473 unwind label %498

473:                                              ; preds = %470
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %474 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef 0) #7
  store i32 %474, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %475 = call i32 @llvm.abs.i32(i32 0, i1 true)
  store i32 %475, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %476 = load i32, ptr %40, align 4, !tbaa !5
  %477 = load i32, ptr %41, align 4, !tbaa !5
  %478 = sub nsw i32 %476, %477
  %479 = call i32 @llvm.abs.i32(i32 %478, i1 true)
  %480 = load i32, ptr %41, align 4, !tbaa !5
  %481 = call i32 @llvm.abs.i32(i32 %480, i1 true)
  %482 = add nsw i32 1, %481
  %483 = sdiv i32 %479, %482
  store i32 %483, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  store i8 0, ptr %43, align 1, !tbaa !11
  %484 = load i32, ptr %40, align 4, !tbaa !5
  %485 = sitofp i32 %484 to x86_fp80
  %486 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %485)
          to label %487 unwind label %502

487:                                              ; preds = %473
  br i1 %486, label %488, label %506

488:                                              ; preds = %487
  %489 = load i32, ptr %41, align 4, !tbaa !5
  %490 = sitofp i32 %489 to x86_fp80
  %491 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %490)
          to label %492 unwind label %502

492:                                              ; preds = %488
  br i1 %491, label %493, label %506

493:                                              ; preds = %492
  store i8 1, ptr %43, align 1, !tbaa !11
  br label %538

494:                                              ; preds = %466, %452, %423
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  br label %495

495:                                              ; preds = %494, %419
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %496

496:                                              ; preds = %495, %415
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %497

497:                                              ; preds = %496, %411
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %1188

498:                                              ; preds = %470
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %4, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  br label %575

502:                                              ; preds = %541, %526, %511, %506, %488, %473
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %4, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %5, align 4
  br label %574

506:                                              ; preds = %492, %487
  %507 = load i32, ptr %40, align 4, !tbaa !5
  %508 = sitofp i32 %507 to x86_fp80
  %509 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %508)
          to label %510 unwind label %502

510:                                              ; preds = %506
  br i1 %509, label %521, label %511

511:                                              ; preds = %510
  %512 = load i32, ptr %40, align 4, !tbaa !5
  %513 = sitofp i32 %512 to x86_fp80
  %514 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %513)
          to label %515 unwind label %502

515:                                              ; preds = %511
  br i1 %514, label %516, label %521

516:                                              ; preds = %515
  %517 = load i32, ptr %40, align 4, !tbaa !5
  %518 = load i32, ptr %41, align 4, !tbaa !5
  %519 = icmp eq i32 %517, %518
  br i1 %519, label %520, label %521

520:                                              ; preds = %516
  store i8 1, ptr %43, align 1, !tbaa !11
  br label %537

521:                                              ; preds = %516, %515, %510
  %522 = load i32, ptr %42, align 4, !tbaa !5
  %523 = sitofp i32 %522 to double
  %524 = fcmp olt double %523, 0x3D06849B86A12B9B
  br i1 %524, label %525, label %526

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

526:                                              ; preds = %521
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %527 unwind label %502

527:                                              ; preds = %526
  %528 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %529 = load i32, ptr %40, align 4, !tbaa !5
  %530 = load i32, ptr %41, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %44, i32 noundef %528, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %529, i32 noundef %530, i32 noundef 0)
          to label %531 unwind label %532

531:                                              ; preds = %527
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  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) %44) #7
  br label %574

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

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

538:                                              ; preds = %537, %493
  %539 = load i8, ptr %43, 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) %45, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %542 unwind label %502

542:                                              ; preds = %541
  %543 = load i32, ptr %40, align 4, !tbaa !5
  %544 = load i32, ptr %42, align 4, !tbaa !5
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %45, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %543, i32 noundef %544, i32 noundef 0)
          to label %545 unwind label %546

545:                                              ; preds = %542
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  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) %45) #7
  br label %574

550:                                              ; preds = %545, %538
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  %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 %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %553 unwind label %576

553:                                              ; preds = %550
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  %554 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef 1) #7
  store i32 %554, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  %555 = call i32 @llvm.abs.i32(i32 1, i1 true)
  store i32 %555, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %556 = load i32, ptr %48, align 4, !tbaa !5
  %557 = load i32, ptr %49, align 4, !tbaa !5
  %558 = sub nsw i32 %556, %557
  %559 = call i32 @llvm.abs.i32(i32 %558, i1 true)
  %560 = load i32, ptr %49, align 4, !tbaa !5
  %561 = call i32 @llvm.abs.i32(i32 %560, i1 true)
  %562 = add nsw i32 1, %561
  %563 = sdiv i32 %559, %562
  store i32 %563, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  store i8 0, ptr %51, align 1, !tbaa !11
  %564 = load i32, ptr %48, align 4, !tbaa !5
  %565 = sitofp i32 %564 to x86_fp80
  %566 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %565)
          to label %567 unwind label %580

567:                                              ; preds = %553
  br i1 %566, label %568, label %584

568:                                              ; preds = %567
  %569 = load i32, ptr %49, align 4, !tbaa !5
  %570 = sitofp i32 %569 to x86_fp80
  %571 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %570)
          to label %572 unwind label %580

572:                                              ; preds = %568
  br i1 %571, label %573, label %584

573:                                              ; preds = %572
  store i8 1, ptr %51, align 1, !tbaa !11
  br label %616

574:                                              ; preds = %546, %532, %502
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %575

575:                                              ; preds = %574, %498
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %1188

576:                                              ; preds = %550
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %4, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  br label %653

580:                                              ; preds = %619, %604, %589, %584, %568, %553
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %4, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %5, align 4
  br label %652

584:                                              ; preds = %572, %567
  %585 = load i32, ptr %48, align 4, !tbaa !5
  %586 = sitofp i32 %585 to x86_fp80
  %587 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %586)
          to label %588 unwind label %580

588:                                              ; preds = %584
  br i1 %587, label %599, label %589

589:                                              ; preds = %588
  %590 = load i32, ptr %48, align 4, !tbaa !5
  %591 = sitofp i32 %590 to x86_fp80
  %592 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %591)
          to label %593 unwind label %580

593:                                              ; preds = %589
  br i1 %592, label %594, label %599

594:                                              ; preds = %593
  %595 = load i32, ptr %48, align 4, !tbaa !5
  %596 = load i32, ptr %49, align 4, !tbaa !5
  %597 = icmp eq i32 %595, %596
  br i1 %597, label %598, label %599

598:                                              ; preds = %594
  store i8 1, ptr %51, align 1, !tbaa !11
  br label %615

599:                                              ; preds = %594, %593, %588
  %600 = load i32, ptr %50, align 4, !tbaa !5
  %601 = sitofp i32 %600 to double
  %602 = fcmp olt double %601, 0x3D06849B86A12B9B
  br i1 %602, label %603, label %604

603:                                              ; preds = %599
  store i8 1, ptr %51, align 1, !tbaa !11
  br label %614

604:                                              ; preds = %599
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %605 unwind label %580

605:                                              ; preds = %604
  %606 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %607 = load i32, ptr %48, align 4, !tbaa !5
  %608 = load i32, ptr %49, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %52, i32 noundef %606, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %607, i32 noundef %608, i32 noundef 1)
          to label %609 unwind label %610

609:                                              ; preds = %605
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %614

610:                                              ; preds = %605
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %4, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #7
  br label %652

614:                                              ; preds = %609, %603
  br label %615

615:                                              ; preds = %614, %598
  br label %616

616:                                              ; preds = %615, %573
  %617 = load i8, ptr %51, align 1, !tbaa !11, !range !13, !noundef !14
  %618 = trunc i8 %617 to i1
  br i1 %618, label %619, label %628

619:                                              ; preds = %616
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %620 unwind label %580

620:                                              ; preds = %619
  %621 = load i32, ptr %48, align 4, !tbaa !5
  %622 = load i32, ptr %50, align 4, !tbaa !5
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %53, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %621, i32 noundef %622, i32 noundef 1)
          to label %623 unwind label %624

623:                                              ; preds = %620
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %628

624:                                              ; preds = %620
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %4, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #7
  br label %652

628:                                              ; preds = %623, %616
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  %629 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %630 = add nsw i32 %629, 1
  store i32 %630, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %631 unwind label %654

631:                                              ; preds = %628
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  %632 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef -1) #7
  store i32 %632, ptr %56, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  %633 = call i32 @llvm.abs.i32(i32 -1, i1 true)
  store i32 %633, ptr %57, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  %634 = load i32, ptr %56, align 4, !tbaa !5
  %635 = load i32, ptr %57, align 4, !tbaa !5
  %636 = sub nsw i32 %634, %635
  %637 = call i32 @llvm.abs.i32(i32 %636, i1 true)
  %638 = load i32, ptr %57, align 4, !tbaa !5
  %639 = call i32 @llvm.abs.i32(i32 %638, i1 true)
  %640 = add nsw i32 1, %639
  %641 = sdiv i32 %637, %640
  store i32 %641, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #7
  store i8 0, ptr %59, align 1, !tbaa !11
  %642 = load i32, ptr %56, align 4, !tbaa !5
  %643 = sitofp i32 %642 to x86_fp80
  %644 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %643)
          to label %645 unwind label %658

645:                                              ; preds = %631
  br i1 %644, label %646, label %662

646:                                              ; preds = %645
  %647 = load i32, ptr %57, align 4, !tbaa !5
  %648 = sitofp i32 %647 to x86_fp80
  %649 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %648)
          to label %650 unwind label %658

650:                                              ; preds = %646
  br i1 %649, label %651, label %662

651:                                              ; preds = %650
  store i8 1, ptr %59, align 1, !tbaa !11
  br label %694

652:                                              ; preds = %624, %610, %580
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %653

653:                                              ; preds = %652, %576
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %1188

654:                                              ; preds = %628
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %4, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %734

658:                                              ; preds = %697, %682, %667, %662, %646, %631
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %4, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %5, align 4
  br label %733

662:                                              ; preds = %650, %645
  %663 = load i32, ptr %56, align 4, !tbaa !5
  %664 = sitofp i32 %663 to x86_fp80
  %665 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %664)
          to label %666 unwind label %658

666:                                              ; preds = %662
  br i1 %665, label %677, label %667

667:                                              ; preds = %666
  %668 = load i32, ptr %56, align 4, !tbaa !5
  %669 = sitofp i32 %668 to x86_fp80
  %670 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %669)
          to label %671 unwind label %658

671:                                              ; preds = %667
  br i1 %670, label %672, label %677

672:                                              ; preds = %671
  %673 = load i32, ptr %56, align 4, !tbaa !5
  %674 = load i32, ptr %57, align 4, !tbaa !5
  %675 = icmp eq i32 %673, %674
  br i1 %675, label %676, label %677

676:                                              ; preds = %672
  store i8 1, ptr %59, align 1, !tbaa !11
  br label %693

677:                                              ; preds = %672, %671, %666
  %678 = load i32, ptr %58, align 4, !tbaa !5
  %679 = sitofp i32 %678 to double
  %680 = fcmp olt double %679, 0x3D06849B86A12B9B
  br i1 %680, label %681, label %682

681:                                              ; preds = %677
  store i8 1, ptr %59, align 1, !tbaa !11
  br label %692

682:                                              ; preds = %677
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %683 unwind label %658

683:                                              ; preds = %682
  %684 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %685 = load i32, ptr %56, align 4, !tbaa !5
  %686 = load i32, ptr %57, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %60, i32 noundef %684, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %685, i32 noundef %686, i32 noundef -1)
          to label %687 unwind label %688

687:                                              ; preds = %683
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %692

688:                                              ; preds = %683
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %4, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #7
  br label %733

692:                                              ; preds = %687, %681
  br label %693

693:                                              ; preds = %692, %676
  br label %694

694:                                              ; preds = %693, %651
  %695 = load i8, ptr %59, align 1, !tbaa !11, !range !13, !noundef !14
  %696 = trunc i8 %695 to i1
  br i1 %696, label %697, label %706

697:                                              ; preds = %694
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %698 unwind label %658

698:                                              ; preds = %697
  %699 = load i32, ptr %56, align 4, !tbaa !5
  %700 = load i32, ptr %58, align 4, !tbaa !5
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %61, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %699, i32 noundef %700, i32 noundef -1)
          to label %701 unwind label %702

701:                                              ; preds = %698
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %706

702:                                              ; preds = %698
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %4, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %733

706:                                              ; preds = %701, %694
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  %707 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %709 unwind label %735

709:                                              ; preds = %706
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %710 = call noundef i64 @_ZN4gcem3absIlEET_S1_(i64 noundef -9223372036854775808) #7
  store i64 %710, ptr %64, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %711 = invoke noundef i64 @_ZSt3absl(i64 noundef -9223372036854775808)
          to label %712 unwind label %739

712:                                              ; preds = %709
  store i64 %711, ptr %65, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  %713 = load i64, ptr %64, align 8, !tbaa !15
  %714 = load i64, ptr %65, align 8, !tbaa !15
  %715 = sub nsw i64 %713, %714
  %716 = invoke noundef i64 @_ZSt3absl(i64 noundef %715)
          to label %717 unwind label %743

717:                                              ; preds = %712
  %718 = load i64, ptr %65, align 8, !tbaa !15
  %719 = invoke noundef i64 @_ZSt3absl(i64 noundef %718)
          to label %720 unwind label %743

720:                                              ; preds = %717
  %721 = add nsw i64 1, %719
  %722 = sdiv i64 %716, %721
  store i64 %722, ptr %66, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #7
  store i8 0, ptr %67, align 1, !tbaa !11
  %723 = load i64, ptr %64, align 8, !tbaa !15
  %724 = sitofp i64 %723 to x86_fp80
  %725 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %724)
          to label %726 unwind label %747

726:                                              ; preds = %720
  br i1 %725, label %727, label %751

727:                                              ; preds = %726
  %728 = load i64, ptr %65, align 8, !tbaa !15
  %729 = sitofp i64 %728 to x86_fp80
  %730 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %729)
          to label %731 unwind label %747

731:                                              ; preds = %727
  br i1 %730, label %732, label %751

732:                                              ; preds = %731
  store i8 1, ptr %67, align 1, !tbaa !11
  br label %783

733:                                              ; preds = %702, %688, %658
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #7
  br label %734

734:                                              ; preds = %733, %654
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #7
  br label %1188

735:                                              ; preds = %706
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %4, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  br label %825

739:                                              ; preds = %709
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %4, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %5, align 4
  br label %824

743:                                              ; preds = %717, %712
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %4, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %5, align 4
  br label %823

747:                                              ; preds = %786, %771, %756, %751, %727, %720
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %4, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %5, align 4
  br label %822

751:                                              ; preds = %731, %726
  %752 = load i64, ptr %64, align 8, !tbaa !15
  %753 = sitofp i64 %752 to x86_fp80
  %754 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %753)
          to label %755 unwind label %747

755:                                              ; preds = %751
  br i1 %754, label %766, label %756

756:                                              ; preds = %755
  %757 = load i64, ptr %64, align 8, !tbaa !15
  %758 = sitofp i64 %757 to x86_fp80
  %759 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %758)
          to label %760 unwind label %747

760:                                              ; preds = %756
  br i1 %759, label %761, label %766

761:                                              ; preds = %760
  %762 = load i64, ptr %64, align 8, !tbaa !15
  %763 = load i64, ptr %65, align 8, !tbaa !15
  %764 = icmp eq i64 %762, %763
  br i1 %764, label %765, label %766

765:                                              ; preds = %761
  store i8 1, ptr %67, align 1, !tbaa !11
  br label %782

766:                                              ; preds = %761, %760, %755
  %767 = load i64, ptr %66, align 8, !tbaa !15
  %768 = sitofp i64 %767 to double
  %769 = fcmp olt double %768, 0x3D06849B86A12B9B
  br i1 %769, label %770, label %771

770:                                              ; preds = %766
  store i8 1, ptr %67, align 1, !tbaa !11
  br label %781

771:                                              ; preds = %766
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %772 unwind label %747

772:                                              ; preds = %771
  %773 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %774 = load i64, ptr %64, align 8, !tbaa !15
  %775 = load i64, ptr %65, align 8, !tbaa !15
  invoke void @_Z15print_test_failIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %68, i32 noundef %773, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %774, i64 noundef %775, i64 noundef -9223372036854775808)
          to label %776 unwind label %777

776:                                              ; preds = %772
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %781

777:                                              ; preds = %772
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %4, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %822

781:                                              ; preds = %776, %770
  br label %782

782:                                              ; preds = %781, %765
  br label %783

783:                                              ; preds = %782, %732
  %784 = load i8, ptr %67, align 1, !tbaa !11, !range !13, !noundef !14
  %785 = trunc i8 %784 to i1
  br i1 %785, label %786, label %795

786:                                              ; preds = %783
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %787 unwind label %747

787:                                              ; preds = %786
  %788 = load i64, ptr %64, align 8, !tbaa !15
  %789 = load i64, ptr %66, align 8, !tbaa !15
  invoke void @_Z15print_test_passIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %69, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %788, i64 noundef %789, i64 noundef -9223372036854775808)
          to label %790 unwind label %791

790:                                              ; preds = %787
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %795

791:                                              ; preds = %787
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %4, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #7
  br label %822

795:                                              ; preds = %790, %783
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  %796 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %797 = add nsw i32 %796, 1
  store i32 %797, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %798 unwind label %826

798:                                              ; preds = %795
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %799 = call noundef i64 @_ZN4gcem3absIlEET_S1_(i64 noundef 9223372036854775807) #7
  store i64 %799, ptr %72, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  %800 = invoke noundef i64 @_ZSt3absl(i64 noundef 9223372036854775807)
          to label %801 unwind label %830

801:                                              ; preds = %798
  store i64 %800, ptr %73, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %802 = load i64, ptr %72, align 8, !tbaa !15
  %803 = load i64, ptr %73, align 8, !tbaa !15
  %804 = sub nsw i64 %802, %803
  %805 = invoke noundef i64 @_ZSt3absl(i64 noundef %804)
          to label %806 unwind label %834

806:                                              ; preds = %801
  %807 = load i64, ptr %73, align 8, !tbaa !15
  %808 = invoke noundef i64 @_ZSt3absl(i64 noundef %807)
          to label %809 unwind label %834

809:                                              ; preds = %806
  %810 = add nsw i64 1, %808
  %811 = sdiv i64 %805, %810
  store i64 %811, ptr %74, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #7
  store i8 0, ptr %75, align 1, !tbaa !11
  %812 = load i64, ptr %72, align 8, !tbaa !15
  %813 = sitofp i64 %812 to x86_fp80
  %814 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %813)
          to label %815 unwind label %838

815:                                              ; preds = %809
  br i1 %814, label %816, label %842

816:                                              ; preds = %815
  %817 = load i64, ptr %73, align 8, !tbaa !15
  %818 = sitofp i64 %817 to x86_fp80
  %819 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %818)
          to label %820 unwind label %838

820:                                              ; preds = %816
  br i1 %819, label %821, label %842

821:                                              ; preds = %820
  store i8 1, ptr %75, align 1, !tbaa !11
  br label %874

822:                                              ; preds = %791, %777, %747
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #7
  br label %823

823:                                              ; preds = %822, %743
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  br label %824

824:                                              ; preds = %823, %739
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  br label %825

825:                                              ; preds = %824, %735
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #7
  br label %1188

826:                                              ; preds = %795
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %4, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  br label %918

830:                                              ; preds = %798
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %4, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %5, align 4
  br label %917

834:                                              ; preds = %806, %801
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %4, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %5, align 4
  br label %916

838:                                              ; preds = %877, %862, %847, %842, %816, %809
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %4, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %5, align 4
  br label %915

842:                                              ; preds = %820, %815
  %843 = load i64, ptr %72, align 8, !tbaa !15
  %844 = sitofp i64 %843 to x86_fp80
  %845 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %844)
          to label %846 unwind label %838

846:                                              ; preds = %842
  br i1 %845, label %857, label %847

847:                                              ; preds = %846
  %848 = load i64, ptr %72, align 8, !tbaa !15
  %849 = sitofp i64 %848 to x86_fp80
  %850 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %849)
          to label %851 unwind label %838

851:                                              ; preds = %847
  br i1 %850, label %852, label %857

852:                                              ; preds = %851
  %853 = load i64, ptr %72, align 8, !tbaa !15
  %854 = load i64, ptr %73, align 8, !tbaa !15
  %855 = icmp eq i64 %853, %854
  br i1 %855, label %856, label %857

856:                                              ; preds = %852
  store i8 1, ptr %75, align 1, !tbaa !11
  br label %873

857:                                              ; preds = %852, %851, %846
  %858 = load i64, ptr %74, align 8, !tbaa !15
  %859 = sitofp i64 %858 to double
  %860 = fcmp olt double %859, 0x3D06849B86A12B9B
  br i1 %860, label %861, label %862

861:                                              ; preds = %857
  store i8 1, ptr %75, align 1, !tbaa !11
  br label %872

862:                                              ; preds = %857
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %863 unwind label %838

863:                                              ; preds = %862
  %864 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %865 = load i64, ptr %72, align 8, !tbaa !15
  %866 = load i64, ptr %73, align 8, !tbaa !15
  invoke void @_Z15print_test_failIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %76, i32 noundef %864, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %865, i64 noundef %866, i64 noundef 9223372036854775807)
          to label %867 unwind label %868

867:                                              ; preds = %863
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br label %872

868:                                              ; preds = %863
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %4, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #7
  br label %915

872:                                              ; preds = %867, %861
  br label %873

873:                                              ; preds = %872, %856
  br label %874

874:                                              ; preds = %873, %821
  %875 = load i8, ptr %75, align 1, !tbaa !11, !range !13, !noundef !14
  %876 = trunc i8 %875 to i1
  br i1 %876, label %877, label %886

877:                                              ; preds = %874
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %878 unwind label %838

878:                                              ; preds = %877
  %879 = load i64, ptr %72, align 8, !tbaa !15
  %880 = load i64, ptr %74, align 8, !tbaa !15
  invoke void @_Z15print_test_passIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %77, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %879, i64 noundef %880, i64 noundef 9223372036854775807)
          to label %881 unwind label %882

881:                                              ; preds = %878
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %886

882:                                              ; preds = %878
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %4, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #7
  br label %915

886:                                              ; preds = %881, %874
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  %887 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %888 = add nsw i32 %887, 1
  store i32 %888, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %889 unwind label %919

889:                                              ; preds = %886
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  %890 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %891 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %890) #7
  store double %891, ptr %80, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %892 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %893 = invoke noundef double @_ZSt3absd(double noundef %892)
          to label %894 unwind label %923

894:                                              ; preds = %889
  store double %893, ptr %81, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #7
  %895 = load double, ptr %80, align 8, !tbaa !9
  %896 = load double, ptr %81, align 8, !tbaa !9
  %897 = fsub double %895, %896
  %898 = invoke noundef double @_ZSt3absd(double noundef %897)
          to label %899 unwind label %927

899:                                              ; preds = %894
  %900 = load double, ptr %81, align 8, !tbaa !9
  %901 = invoke noundef double @_ZSt3absd(double noundef %900)
          to label %902 unwind label %927

902:                                              ; preds = %899
  %903 = fadd double 1.000000e+00, %901
  %904 = fdiv double %898, %903
  store double %904, ptr %82, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #7
  store i8 0, ptr %83, align 1, !tbaa !11
  %905 = load double, ptr %80, align 8, !tbaa !9
  %906 = fpext double %905 to x86_fp80
  %907 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %906)
          to label %908 unwind label %931

908:                                              ; preds = %902
  br i1 %907, label %909, label %935

909:                                              ; preds = %908
  %910 = load double, ptr %81, align 8, !tbaa !9
  %911 = fpext double %910 to x86_fp80
  %912 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %911)
          to label %913 unwind label %931

913:                                              ; preds = %909
  br i1 %912, label %914, label %935

914:                                              ; preds = %913
  store i8 1, ptr %83, align 1, !tbaa !11
  br label %967

915:                                              ; preds = %882, %868, %838
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  br label %916

916:                                              ; preds = %915, %834
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %917

917:                                              ; preds = %916, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  br label %918

918:                                              ; preds = %917, %826
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #7
  br label %1188

919:                                              ; preds = %886
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %4, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  br label %1014

923:                                              ; preds = %889
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %4, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %5, align 4
  br label %1013

927:                                              ; preds = %899, %894
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %4, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %5, align 4
  br label %1012

931:                                              ; preds = %970, %954, %940, %935, %909, %902
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %4, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %5, align 4
  br label %1011

935:                                              ; preds = %913, %908
  %936 = load double, ptr %80, align 8, !tbaa !9
  %937 = fpext double %936 to x86_fp80
  %938 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %937)
          to label %939 unwind label %931

939:                                              ; preds = %935
  br i1 %938, label %950, label %940

940:                                              ; preds = %939
  %941 = load double, ptr %80, align 8, !tbaa !9
  %942 = fpext double %941 to x86_fp80
  %943 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %942)
          to label %944 unwind label %931

944:                                              ; preds = %940
  br i1 %943, label %945, label %950

945:                                              ; preds = %944
  %946 = load double, ptr %80, align 8, !tbaa !9
  %947 = load double, ptr %81, align 8, !tbaa !9
  %948 = fcmp oeq double %946, %947
  br i1 %948, label %949, label %950

949:                                              ; preds = %945
  store i8 1, ptr %83, align 1, !tbaa !11
  br label %966

950:                                              ; preds = %945, %944, %939
  %951 = load double, ptr %82, align 8, !tbaa !9
  %952 = fcmp olt double %951, 0x3D06849B86A12B9B
  br i1 %952, label %953, label %954

953:                                              ; preds = %950
  store i8 1, ptr %83, align 1, !tbaa !11
  br label %965

954:                                              ; preds = %950
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %955 unwind label %931

955:                                              ; preds = %954
  %956 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %957 = load double, ptr %80, align 8, !tbaa !9
  %958 = load double, ptr %81, align 8, !tbaa !9
  %959 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %84, i32 noundef %956, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %957, double noundef %958, double noundef %959)
          to label %960 unwind label %961

960:                                              ; preds = %955
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %965

961:                                              ; preds = %955
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %4, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #7
  br label %1011

965:                                              ; preds = %960, %953
  br label %966

966:                                              ; preds = %965, %949
  br label %967

967:                                              ; preds = %966, %914
  %968 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %969 = trunc i8 %968 to i1
  br i1 %969, label %970, label %980

970:                                              ; preds = %967
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %971 unwind label %931

971:                                              ; preds = %970
  %972 = load double, ptr %80, align 8, !tbaa !9
  %973 = load double, ptr %82, align 8, !tbaa !9
  %974 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %85, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %972, double noundef %973, double noundef %974)
          to label %975 unwind label %976

975:                                              ; preds = %971
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %980

976:                                              ; preds = %971
  %977 = landingpad { ptr, i32 }
          cleanup
  %978 = extractvalue { ptr, i32 } %977, 0
  store ptr %978, ptr %4, align 8
  %979 = extractvalue { ptr, i32 } %977, 1
  store i32 %979, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %1011

980:                                              ; preds = %975, %967
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  %981 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %982 = add nsw i32 %981, 1
  store i32 %982, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %87)
          to label %983 unwind label %1015

983:                                              ; preds = %980
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %984 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %985 = fneg double %984
  %986 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %985) #7
  store double %986, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %987 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %988 = fneg double %987
  %989 = invoke noundef double @_ZSt3absd(double noundef %988)
          to label %990 unwind label %1019

990:                                              ; preds = %983
  store double %989, ptr %89, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %991 = load double, ptr %88, align 8, !tbaa !9
  %992 = load double, ptr %89, align 8, !tbaa !9
  %993 = fsub double %991, %992
  %994 = invoke noundef double @_ZSt3absd(double noundef %993)
          to label %995 unwind label %1023

995:                                              ; preds = %990
  %996 = load double, ptr %89, align 8, !tbaa !9
  %997 = invoke noundef double @_ZSt3absd(double noundef %996)
          to label %998 unwind label %1023

998:                                              ; preds = %995
  %999 = fadd double 1.000000e+00, %997
  %1000 = fdiv double %994, %999
  store double %1000, ptr %90, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #7
  store i8 0, ptr %91, align 1, !tbaa !11
  %1001 = load double, ptr %88, align 8, !tbaa !9
  %1002 = fpext double %1001 to x86_fp80
  %1003 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1002)
          to label %1004 unwind label %1027

1004:                                             ; preds = %998
  br i1 %1003, label %1005, label %1031

1005:                                             ; preds = %1004
  %1006 = load double, ptr %89, align 8, !tbaa !9
  %1007 = fpext double %1006 to x86_fp80
  %1008 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1007)
          to label %1009 unwind label %1027

1009:                                             ; preds = %1005
  br i1 %1008, label %1010, label %1031

1010:                                             ; preds = %1009
  store i8 1, ptr %91, align 1, !tbaa !11
  br label %1064

1011:                                             ; preds = %976, %961, %931
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #7
  br label %1012

1012:                                             ; preds = %1011, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  br label %1013

1013:                                             ; preds = %1012, %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %1014

1014:                                             ; preds = %1013, %919
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #7
  br label %1188

1015:                                             ; preds = %980
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %4, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %87) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #7
  br label %1110

1019:                                             ; preds = %983
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %4, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %5, align 4
  br label %1109

1023:                                             ; preds = %995, %990
  %1024 = landingpad { ptr, i32 }
          cleanup
  %1025 = extractvalue { ptr, i32 } %1024, 0
  store ptr %1025, ptr %4, align 8
  %1026 = extractvalue { ptr, i32 } %1024, 1
  store i32 %1026, ptr %5, align 4
  br label %1108

1027:                                             ; preds = %1067, %1050, %1036, %1031, %1005, %998
  %1028 = landingpad { ptr, i32 }
          cleanup
  %1029 = extractvalue { ptr, i32 } %1028, 0
  store ptr %1029, ptr %4, align 8
  %1030 = extractvalue { ptr, i32 } %1028, 1
  store i32 %1030, ptr %5, align 4
  br label %1107

1031:                                             ; preds = %1009, %1004
  %1032 = load double, ptr %88, align 8, !tbaa !9
  %1033 = fpext double %1032 to x86_fp80
  %1034 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1033)
          to label %1035 unwind label %1027

1035:                                             ; preds = %1031
  br i1 %1034, label %1046, label %1036

1036:                                             ; preds = %1035
  %1037 = load double, ptr %88, align 8, !tbaa !9
  %1038 = fpext double %1037 to x86_fp80
  %1039 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %1038)
          to label %1040 unwind label %1027

1040:                                             ; preds = %1036
  br i1 %1039, label %1041, label %1046

1041:                                             ; preds = %1040
  %1042 = load double, ptr %88, align 8, !tbaa !9
  %1043 = load double, ptr %89, align 8, !tbaa !9
  %1044 = fcmp oeq double %1042, %1043
  br i1 %1044, label %1045, label %1046

1045:                                             ; preds = %1041
  store i8 1, ptr %91, align 1, !tbaa !11
  br label %1063

1046:                                             ; preds = %1041, %1040, %1035
  %1047 = load double, ptr %90, align 8, !tbaa !9
  %1048 = fcmp olt double %1047, 0x3D06849B86A12B9B
  br i1 %1048, label %1049, label %1050

1049:                                             ; preds = %1046
  store i8 1, ptr %91, align 1, !tbaa !11
  br label %1062

1050:                                             ; preds = %1046
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %1051 unwind label %1027

1051:                                             ; preds = %1050
  %1052 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1053 = load double, ptr %88, align 8, !tbaa !9
  %1054 = load double, ptr %89, align 8, !tbaa !9
  %1055 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %1056 = fneg double %1055
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %92, i32 noundef %1052, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %1053, double noundef %1054, double noundef %1056)
          to label %1057 unwind label %1058

1057:                                             ; preds = %1051
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %1062

1058:                                             ; preds = %1051
  %1059 = landingpad { ptr, i32 }
          cleanup
  %1060 = extractvalue { ptr, i32 } %1059, 0
  store ptr %1060, ptr %4, align 8
  %1061 = extractvalue { ptr, i32 } %1059, 1
  store i32 %1061, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %1107

1062:                                             ; preds = %1057, %1049
  br label %1063

1063:                                             ; preds = %1062, %1045
  br label %1064

1064:                                             ; preds = %1063, %1010
  %1065 = load i8, ptr %91, align 1, !tbaa !11, !range !13, !noundef !14
  %1066 = trunc i8 %1065 to i1
  br i1 %1066, label %1067, label %1078

1067:                                             ; preds = %1064
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(32) %86)
          to label %1068 unwind label %1027

1068:                                             ; preds = %1067
  %1069 = load double, ptr %88, align 8, !tbaa !9
  %1070 = load double, ptr %90, align 8, !tbaa !9
  %1071 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %1072 = fneg double %1071
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %93, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %1069, double noundef %1070, double noundef %1072)
          to label %1073 unwind label %1074

1073:                                             ; preds = %1068
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #7
  br label %1078

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

1078:                                             ; preds = %1073, %1064
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #7
  %1079 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %1081 unwind label %1111

1081:                                             ; preds = %1078
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %1082 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %1083 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %1082) #7
  store double %1083, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1084 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %1085 = invoke noundef double @_ZSt3absd(double noundef %1084)
          to label %1086 unwind label %1115

1086:                                             ; preds = %1081
  store double %1085, ptr %97, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #7
  %1087 = load double, ptr %96, align 8, !tbaa !9
  %1088 = load double, ptr %97, align 8, !tbaa !9
  %1089 = fsub double %1087, %1088
  %1090 = invoke noundef double @_ZSt3absd(double noundef %1089)
          to label %1091 unwind label %1119

1091:                                             ; preds = %1086
  %1092 = load double, ptr %97, align 8, !tbaa !9
  %1093 = invoke noundef double @_ZSt3absd(double noundef %1092)
          to label %1094 unwind label %1119

1094:                                             ; preds = %1091
  %1095 = fadd double 1.000000e+00, %1093
  %1096 = fdiv double %1090, %1095
  store double %1096, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #7
  store i8 0, ptr %99, align 1, !tbaa !11
  %1097 = load double, ptr %96, align 8, !tbaa !9
  %1098 = fpext double %1097 to x86_fp80
  %1099 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1098)
          to label %1100 unwind label %1123

1100:                                             ; preds = %1094
  br i1 %1099, label %1101, label %1127

1101:                                             ; preds = %1100
  %1102 = load double, ptr %97, align 8, !tbaa !9
  %1103 = fpext double %1102 to x86_fp80
  %1104 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1103)
          to label %1105 unwind label %1123

1105:                                             ; preds = %1101
  br i1 %1104, label %1106, label %1127

1106:                                             ; preds = %1105
  store i8 1, ptr %99, align 1, !tbaa !11
  br label %1159

1107:                                             ; preds = %1074, %1058, %1027
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #7
  br label %1108

1108:                                             ; preds = %1107, %1023
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  br label %1109

1109:                                             ; preds = %1108, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #7
  br label %1110

1110:                                             ; preds = %1109, %1015
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #7
  br label %1188

1111:                                             ; preds = %1078
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %4, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %5, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #7
  br label %1178

1115:                                             ; preds = %1081
  %1116 = landingpad { ptr, i32 }
          cleanup
  %1117 = extractvalue { ptr, i32 } %1116, 0
  store ptr %1117, ptr %4, align 8
  %1118 = extractvalue { ptr, i32 } %1116, 1
  store i32 %1118, ptr %5, align 4
  br label %1177

1119:                                             ; preds = %1091, %1086
  %1120 = landingpad { ptr, i32 }
          cleanup
  %1121 = extractvalue { ptr, i32 } %1120, 0
  store ptr %1121, ptr %4, align 8
  %1122 = extractvalue { ptr, i32 } %1120, 1
  store i32 %1122, ptr %5, align 4
  br label %1176

1123:                                             ; preds = %1162, %1146, %1132, %1127, %1101, %1094
  %1124 = landingpad { ptr, i32 }
          cleanup
  %1125 = extractvalue { ptr, i32 } %1124, 0
  store ptr %1125, ptr %4, align 8
  %1126 = extractvalue { ptr, i32 } %1124, 1
  store i32 %1126, ptr %5, align 4
  br label %1175

1127:                                             ; preds = %1105, %1100
  %1128 = load double, ptr %96, align 8, !tbaa !9
  %1129 = fpext double %1128 to x86_fp80
  %1130 = invoke noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %1129)
          to label %1131 unwind label %1123

1131:                                             ; preds = %1127
  br i1 %1130, label %1142, label %1132

1132:                                             ; preds = %1131
  %1133 = load double, ptr %96, align 8, !tbaa !9
  %1134 = fpext double %1133 to x86_fp80
  %1135 = invoke noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %1134)
          to label %1136 unwind label %1123

1136:                                             ; preds = %1132
  br i1 %1135, label %1137, label %1142

1137:                                             ; preds = %1136
  %1138 = load double, ptr %96, align 8, !tbaa !9
  %1139 = load double, ptr %97, align 8, !tbaa !9
  %1140 = fcmp oeq double %1138, %1139
  br i1 %1140, label %1141, label %1142

1141:                                             ; preds = %1137
  store i8 1, ptr %99, align 1, !tbaa !11
  br label %1158

1142:                                             ; preds = %1137, %1136, %1131
  %1143 = load double, ptr %98, align 8, !tbaa !9
  %1144 = fcmp olt double %1143, 0x3D06849B86A12B9B
  br i1 %1144, label %1145, label %1146

1145:                                             ; preds = %1142
  store i8 1, ptr %99, align 1, !tbaa !11
  br label %1157

1146:                                             ; preds = %1142
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %1147 unwind label %1123

1147:                                             ; preds = %1146
  %1148 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %1149 = load double, ptr %96, align 8, !tbaa !9
  %1150 = load double, ptr %97, align 8, !tbaa !9
  %1151 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef %100, i32 noundef %1148, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %1149, double noundef %1150, double noundef %1151)
          to label %1152 unwind label %1153

1152:                                             ; preds = %1147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  br label %1157

1153:                                             ; preds = %1147
  %1154 = landingpad { ptr, i32 }
          cleanup
  %1155 = extractvalue { ptr, i32 } %1154, 0
  store ptr %1155, ptr %4, align 8
  %1156 = extractvalue { ptr, i32 } %1154, 1
  store i32 %1156, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #7
  br label %1175

1157:                                             ; preds = %1152, %1145
  br label %1158

1158:                                             ; preds = %1157, %1141
  br label %1159

1159:                                             ; preds = %1158, %1106
  %1160 = load i8, ptr %99, align 1, !tbaa !11, !range !13, !noundef !14
  %1161 = trunc i8 %1160 to i1
  br i1 %1161, label %1162, label %1172

1162:                                             ; preds = %1159
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(32) %94)
          to label %1163 unwind label %1123

1163:                                             ; preds = %1162
  %1164 = load double, ptr %96, align 8, !tbaa !9
  %1165 = load double, ptr %98, align 8, !tbaa !9
  %1166 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef %101, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %1164, double noundef %1165, double noundef %1166)
          to label %1167 unwind label %1168

1167:                                             ; preds = %1163
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %1172

1168:                                             ; preds = %1163
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %4, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #7
  br label %1175

1172:                                             ; preds = %1167, %1159
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %1173 unwind label %1179

1173:                                             ; preds = %1172
  invoke void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %102)
          to label %1174 unwind label %1183

1174:                                             ; preds = %1173
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #7
  ret i32 0

1175:                                             ; preds = %1168, %1153, %1123
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #7
  br label %1176

1176:                                             ; preds = %1175, %1119
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  br label %1177

1177:                                             ; preds = %1176, %1115
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  br label %1178

1178:                                             ; preds = %1177, %1111
  call void @llvm.lifetime.end.p0(i64 32, ptr %94) #7
  br label %1188

1179:                                             ; preds = %1172
  %1180 = landingpad { ptr, i32 }
          cleanup
  %1181 = extractvalue { ptr, i32 } %1180, 0
  store ptr %1181, ptr %4, align 8
  %1182 = extractvalue { ptr, i32 } %1180, 1
  store i32 %1182, ptr %5, align 4
  br label %1187

1183:                                             ; preds = %1173
  %1184 = landingpad { ptr, i32 }
          cleanup
  %1185 = extractvalue { ptr, i32 } %1184, 0
  store ptr %1185, ptr %4, align 8
  %1186 = extractvalue { ptr, i32 } %1184, 1
  store i32 %1186, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #7
  br label %1187

1187:                                             ; preds = %1183, %1179
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #7
  br label %1188

1188:                                             ; preds = %1187, %1178, %1110, %1014, %918, %825, %734, %653, %575, %497, %410, %320, %230, %140
  %1189 = load ptr, ptr %4, align 8
  %1190 = load i32, ptr %5, align 4
  %1191 = insertvalue { ptr, i32 } poison, ptr %1189, 0
  %1192 = insertvalue { ptr, i32 } %1191, i32 %1190, 1
  resume { ptr, i32 } %1192
}

; 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 dso_local noundef double @_ZN4gcem3absIdEET_S1_(double noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double 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_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double 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_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #6

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #3 align 2

; 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 @_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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"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 }

@GCEM_TEST_NUMBER = external dso_local local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [4 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 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::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  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 %53 unwind label %70

53:                                               ; preds = %0
  invoke void @_Z11print_beginNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %1)
          to label %54 unwind label %72

54:                                               ; preds = %53
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #7
  %55 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %56 = add nsw i32 %55, 1
  store i32 %56, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %57 unwind label %75

57:                                               ; preds = %54
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  %58 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef 0.000000e+00) #7
  %59 = call noundef double @_ZSt3absd(double noundef 0.000000e+00)
  %60 = fsub double %58, %59
  %61 = call noundef double @_ZSt3absd(double noundef %60)
  %62 = call noundef double @_ZSt3absd(double noundef %59)
  %63 = fadd double %62, 1.000000e+00
  %64 = fdiv double %61, %63
  %65 = fpext double %58 to x86_fp80
  %66 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %65)
  br i1 %66, label %67, label %79

67:                                               ; preds = %57
  %68 = fpext double %59 to x86_fp80
  %69 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %68)
  br i1 %69, label %91, label %79

70:                                               ; preds = %0
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %74

72:                                               ; preds = %53
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  br label %74

74:                                               ; preds = %72, %70
  %.pn = phi { ptr, i32 } [ %73, %72 ], [ %71, %70 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #7
  br label %512

75:                                               ; preds = %54
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #7
  br label %111

77:                                               ; preds = %91, %86
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %110

79:                                               ; preds = %67, %57
  %80 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %65)
  br i1 %80, label %85, label %81

81:                                               ; preds = %79
  %82 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %65)
  %83 = fcmp oeq double %58, %59
  %or.cond = and i1 %83, %82
  %84 = fcmp olt double %64, 0x3D06849B86A12B9B
  %or.cond293 = or i1 %84, %or.cond
  br i1 %or.cond293, label %91, label %86

85:                                               ; preds = %79
  %.old = fcmp olt double %64, 0x3D06849B86A12B9B
  br i1 %.old, label %91, label %86

86:                                               ; preds = %81, %85
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %87 unwind label %77

87:                                               ; preds = %86
  %88 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %5, i32 noundef %88, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %58, double noundef %59, double noundef 0.000000e+00)
          to label %.critedge unwind label %89

89:                                               ; preds = %87
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %110

91:                                               ; preds = %67, %81, %85
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %92 unwind label %77

92:                                               ; preds = %91
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %6, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %58, double noundef %64, double noundef 0.000000e+00)
          to label %.critedge unwind label %93

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

.critedge:                                        ; preds = %92, %87
  %.sink = phi ptr [ %5, %87 ], [ %6, %92 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  %95 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %97 unwind label %112

97:                                               ; preds = %.critedge
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  %98 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef -0.000000e+00) #7
  %99 = call noundef double @_ZSt3absd(double noundef -0.000000e+00)
  %100 = fsub double %98, %99
  %101 = call noundef double @_ZSt3absd(double noundef %100)
  %102 = call noundef double @_ZSt3absd(double noundef %99)
  %103 = fadd double %102, 1.000000e+00
  %104 = fdiv double %101, %103
  %105 = fpext double %98 to x86_fp80
  %106 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %105)
  br i1 %106, label %107, label %116

107:                                              ; preds = %97
  %108 = fpext double %99 to x86_fp80
  %109 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %108)
  br i1 %109, label %128, label %116

110:                                              ; preds = %93, %89, %77
  %.pn221 = phi { ptr, i32 } [ %94, %93 ], [ %78, %77 ], [ %90, %89 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %111

111:                                              ; preds = %110, %75
  %.pn221.pn = phi { ptr, i32 } [ %.pn221, %110 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %512

112:                                              ; preds = %.critedge
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  br label %148

114:                                              ; preds = %128, %123
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %147

116:                                              ; preds = %107, %97
  %117 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %105)
  br i1 %117, label %122, label %118

118:                                              ; preds = %116
  %119 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %105)
  %120 = fcmp oeq double %98, %99
  %or.cond260 = and i1 %120, %119
  %121 = fcmp olt double %104, 0x3D06849B86A12B9B
  %or.cond295 = or i1 %121, %or.cond260
  br i1 %or.cond295, label %128, label %123

122:                                              ; preds = %116
  %.old294 = fcmp olt double %104, 0x3D06849B86A12B9B
  br i1 %.old294, label %128, label %123

123:                                              ; preds = %118, %122
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %124 unwind label %114

124:                                              ; preds = %123
  %125 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %9, i32 noundef %125, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %98, double noundef %99, double noundef -0.000000e+00)
          to label %.critedge262 unwind label %126

126:                                              ; preds = %124
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %147

128:                                              ; preds = %107, %118, %122
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %129 unwind label %114

129:                                              ; preds = %128
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %10, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %98, double noundef %104, double noundef -0.000000e+00)
          to label %.critedge262 unwind label %130

130:                                              ; preds = %129
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %147

.critedge262:                                     ; preds = %129, %124
  %.sink316 = phi ptr [ %9, %124 ], [ %10, %129 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink316) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  %132 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %134 unwind label %149

134:                                              ; preds = %.critedge262
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  %135 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef 1.000000e+00) #7
  %136 = call noundef double @_ZSt3absd(double noundef 1.000000e+00)
  %137 = fsub double %135, %136
  %138 = call noundef double @_ZSt3absd(double noundef %137)
  %139 = call noundef double @_ZSt3absd(double noundef %136)
  %140 = fadd double %139, 1.000000e+00
  %141 = fdiv double %138, %140
  %142 = fpext double %135 to x86_fp80
  %143 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %142)
  br i1 %143, label %144, label %153

144:                                              ; preds = %134
  %145 = fpext double %136 to x86_fp80
  %146 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %145)
  br i1 %146, label %165, label %153

147:                                              ; preds = %130, %126, %114
  %.pn224 = phi { ptr, i32 } [ %131, %130 ], [ %115, %114 ], [ %127, %126 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %148

148:                                              ; preds = %147, %112
  %.pn224.pn = phi { ptr, i32 } [ %.pn224, %147 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %512

149:                                              ; preds = %.critedge262
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  br label %185

151:                                              ; preds = %165, %160
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %184

153:                                              ; preds = %144, %134
  %154 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %142)
  br i1 %154, label %159, label %155

155:                                              ; preds = %153
  %156 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %142)
  %157 = fcmp oeq double %135, %136
  %or.cond263 = and i1 %157, %156
  %158 = fcmp olt double %141, 0x3D06849B86A12B9B
  %or.cond297 = or i1 %158, %or.cond263
  br i1 %or.cond297, label %165, label %160

159:                                              ; preds = %153
  %.old296 = fcmp olt double %141, 0x3D06849B86A12B9B
  br i1 %.old296, label %165, label %160

160:                                              ; preds = %155, %159
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %161 unwind label %151

161:                                              ; preds = %160
  %162 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %13, i32 noundef %162, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %135, double noundef %136, double noundef 1.000000e+00)
          to label %.critedge265 unwind label %163

163:                                              ; preds = %161
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %184

165:                                              ; preds = %144, %155, %159
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %166 unwind label %151

166:                                              ; preds = %165
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %14, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %135, double noundef %141, double noundef 1.000000e+00)
          to label %.critedge265 unwind label %167

167:                                              ; preds = %166
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  br label %184

.critedge265:                                     ; preds = %166, %161
  %.sink317 = phi ptr [ %13, %161 ], [ %14, %166 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink317) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  %169 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %171 unwind label %186

171:                                              ; preds = %.critedge265
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  %172 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef -1.000000e+00) #7
  %173 = call noundef double @_ZSt3absd(double noundef -1.000000e+00)
  %174 = fsub double %172, %173
  %175 = call noundef double @_ZSt3absd(double noundef %174)
  %176 = call noundef double @_ZSt3absd(double noundef %173)
  %177 = fadd double %176, 1.000000e+00
  %178 = fdiv double %175, %177
  %179 = fpext double %172 to x86_fp80
  %180 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %179)
  br i1 %180, label %181, label %190

181:                                              ; preds = %171
  %182 = fpext double %173 to x86_fp80
  %183 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %182)
  br i1 %183, label %202, label %190

184:                                              ; preds = %167, %163, %151
  %.pn227 = phi { ptr, i32 } [ %168, %167 ], [ %152, %151 ], [ %164, %163 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %185

185:                                              ; preds = %184, %149
  %.pn227.pn = phi { ptr, i32 } [ %.pn227, %184 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %512

186:                                              ; preds = %.critedge265
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  br label %216

188:                                              ; preds = %202, %197
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %215

190:                                              ; preds = %181, %171
  %191 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %179)
  br i1 %191, label %196, label %192

192:                                              ; preds = %190
  %193 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %179)
  %194 = fcmp oeq double %172, %173
  %or.cond266 = and i1 %194, %193
  %195 = fcmp olt double %178, 0x3D06849B86A12B9B
  %or.cond299 = or i1 %195, %or.cond266
  br i1 %or.cond299, label %202, label %197

196:                                              ; preds = %190
  %.old298 = fcmp olt double %178, 0x3D06849B86A12B9B
  br i1 %.old298, label %202, label %197

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

198:                                              ; preds = %197
  %199 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %17, i32 noundef %199, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %172, double noundef %173, double noundef -1.000000e+00)
          to label %.critedge268 unwind label %200

200:                                              ; preds = %198
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %215

202:                                              ; preds = %181, %192, %196
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %203 unwind label %188

203:                                              ; preds = %202
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %18, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %172, double noundef %178, double noundef -1.000000e+00)
          to label %.critedge268 unwind label %204

204:                                              ; preds = %203
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %215

.critedge268:                                     ; preds = %203, %198
  %.sink318 = phi ptr [ %17, %198 ], [ %18, %203 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink318) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  %206 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %208 unwind label %217

208:                                              ; preds = %.critedge268
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  %209 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef 0) #7
  %210 = call i32 @llvm.abs.i32(i32 %209, i1 true)
  %211 = sitofp i32 %209 to x86_fp80
  %212 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %211)
  br i1 %212, label %213, label %221

213:                                              ; preds = %208
  %214 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef 0xK00000000000000000000)
  br i1 %214, label %232, label %221

215:                                              ; preds = %204, %200, %188
  %.pn230 = phi { ptr, i32 } [ %205, %204 ], [ %189, %188 ], [ %201, %200 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %216

216:                                              ; preds = %215, %186
  %.pn230.pn = phi { ptr, i32 } [ %.pn230, %215 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %512

217:                                              ; preds = %.critedge268
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %248

219:                                              ; preds = %232, %227
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %247

221:                                              ; preds = %213, %208
  %222 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %211)
  br i1 %222, label %226, label %223

223:                                              ; preds = %221
  %224 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %211)
  %225 = icmp eq i32 %209, 0
  br i1 %225, label %232, label %227

226:                                              ; preds = %221
  %.old300 = icmp eq i32 %209, 0
  br i1 %.old300, label %232, label %227

227:                                              ; preds = %223, %226
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %228 unwind label %219

228:                                              ; preds = %227
  %229 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %21, i32 noundef %229, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %209, i32 noundef 0, i32 noundef 0)
          to label %.critedge271 unwind label %230

230:                                              ; preds = %228
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %247

232:                                              ; preds = %213, %223, %226
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %233 unwind label %219

233:                                              ; preds = %232
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %22, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %209, i32 noundef %210, i32 noundef 0)
          to label %.critedge271 unwind label %234

234:                                              ; preds = %233
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %247

.critedge271:                                     ; preds = %233, %228
  %.sink319 = phi ptr [ %21, %228 ], [ %22, %233 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink319) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  %236 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %237 = add nsw i32 %236, 1
  store i32 %237, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %238 unwind label %249

238:                                              ; preds = %.critedge271
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  %239 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef 1) #7
  %240 = add nsw i32 %239, -1
  %241 = call i32 @llvm.abs.i32(i32 %240, i1 true)
  %242 = lshr i32 %241, 1
  %243 = sitofp i32 %239 to x86_fp80
  %244 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %243)
  br i1 %244, label %245, label %253

245:                                              ; preds = %238
  %246 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef 0xK3FFF8000000000000000)
  br i1 %246, label %265, label %253

247:                                              ; preds = %234, %230, %219
  %.pn233 = phi { ptr, i32 } [ %235, %234 ], [ %220, %219 ], [ %231, %230 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %248

248:                                              ; preds = %247, %217
  %.pn233.pn = phi { ptr, i32 } [ %.pn233, %247 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %512

249:                                              ; preds = %.critedge271
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #7
  br label %281

251:                                              ; preds = %265, %260
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %280

253:                                              ; preds = %245, %238
  %254 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %243)
  br i1 %254, label %259, label %255

255:                                              ; preds = %253
  %256 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %243)
  %257 = icmp eq i32 %239, 1
  %or.cond272 = and i1 %257, %256
  %258 = icmp ult i32 %241, 2
  %or.cond303 = select i1 %or.cond272, i1 true, i1 %258
  br i1 %or.cond303, label %265, label %260

259:                                              ; preds = %253
  %.old302 = icmp ult i32 %241, 2
  br i1 %.old302, label %265, label %260

260:                                              ; preds = %255, %259
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %261 unwind label %251

261:                                              ; preds = %260
  %262 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %25, i32 noundef %262, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %239, i32 noundef 1, i32 noundef 1)
          to label %.critedge274 unwind label %263

263:                                              ; preds = %261
  %264 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %280

265:                                              ; preds = %245, %255, %259
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %266 unwind label %251

266:                                              ; preds = %265
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %26, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %239, i32 noundef %242, i32 noundef 1)
          to label %.critedge274 unwind label %267

267:                                              ; preds = %266
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %280

.critedge274:                                     ; preds = %266, %261
  %.sink320 = phi ptr [ %25, %261 ], [ %26, %266 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink320) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  %269 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %271 unwind label %282

271:                                              ; preds = %.critedge274
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  %272 = call noundef i32 @_ZN4gcem3absIiEET_S1_(i32 noundef -1) #7
  %273 = add nsw i32 %272, -1
  %274 = call i32 @llvm.abs.i32(i32 %273, i1 true)
  %275 = lshr i32 %274, 1
  %276 = sitofp i32 %272 to x86_fp80
  %277 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %276)
  br i1 %277, label %278, label %286

278:                                              ; preds = %271
  %279 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef 0xK3FFF8000000000000000)
  br i1 %279, label %298, label %286

280:                                              ; preds = %267, %263, %251
  %.pn236 = phi { ptr, i32 } [ %268, %267 ], [ %252, %251 ], [ %264, %263 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %281

281:                                              ; preds = %280, %249
  %.pn236.pn = phi { ptr, i32 } [ %.pn236, %280 ], [ %250, %249 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #7
  br label %512

282:                                              ; preds = %.critedge274
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  br label %318

284:                                              ; preds = %298, %293
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %317

286:                                              ; preds = %278, %271
  %287 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %276)
  br i1 %287, label %292, label %288

288:                                              ; preds = %286
  %289 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %276)
  %290 = icmp eq i32 %272, 1
  %or.cond275 = and i1 %290, %289
  %291 = icmp ult i32 %274, 2
  %or.cond305 = select i1 %or.cond275, i1 true, i1 %291
  br i1 %or.cond305, label %298, label %293

292:                                              ; preds = %286
  %.old304 = icmp ult i32 %274, 2
  br i1 %.old304, label %298, label %293

293:                                              ; preds = %288, %292
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %294 unwind label %284

294:                                              ; preds = %293
  %295 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %29, i32 noundef %295, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %272, i32 noundef 1, i32 noundef -1)
          to label %.critedge277 unwind label %296

296:                                              ; preds = %294
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %317

298:                                              ; preds = %278, %288, %292
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %299 unwind label %284

299:                                              ; preds = %298
  invoke void @_Z15print_test_passIiiiEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %30, i32 noundef 3, i32 noundef 6, i32 noundef 18, i32 noundef %272, i32 noundef %275, i32 noundef -1)
          to label %.critedge277 unwind label %300

300:                                              ; preds = %299
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %317

.critedge277:                                     ; preds = %299, %294
  %.sink321 = phi ptr [ %29, %294 ], [ %30, %299 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink321) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  %302 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %304 unwind label %319

304:                                              ; preds = %.critedge277
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  %305 = call noundef i64 @_ZN4gcem3absIlEET_S1_(i64 noundef -9223372036854775808) #7
  %306 = call noundef i64 @_ZSt3absl(i64 noundef -9223372036854775808)
  %307 = sub nsw i64 %305, %306
  %308 = call noundef i64 @_ZSt3absl(i64 noundef %307)
  %309 = call noundef i64 @_ZSt3absl(i64 noundef %306)
  %310 = add nsw i64 %309, 1
  %311 = sdiv i64 %308, %310
  %312 = sitofp i64 %305 to x86_fp80
  %313 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %312)
  br i1 %313, label %314, label %323

314:                                              ; preds = %304
  %315 = sitofp i64 %306 to x86_fp80
  %316 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %315)
  br i1 %316, label %335, label %323

317:                                              ; preds = %300, %296, %284
  %.pn239 = phi { ptr, i32 } [ %301, %300 ], [ %285, %284 ], [ %297, %296 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  br label %318

318:                                              ; preds = %317, %282
  %.pn239.pn = phi { ptr, i32 } [ %.pn239, %317 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %512

319:                                              ; preds = %.critedge277
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #7
  br label %355

321:                                              ; preds = %335, %330
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %354

323:                                              ; preds = %314, %304
  %324 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %312)
  br i1 %324, label %329, label %325

325:                                              ; preds = %323
  %326 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %312)
  %327 = icmp eq i64 %305, %306
  %or.cond278 = and i1 %327, %326
  %328 = icmp slt i64 %311, 1
  %or.cond307 = or i1 %328, %or.cond278
  br i1 %or.cond307, label %335, label %330

329:                                              ; preds = %323
  %.old306 = icmp slt i64 %311, 1
  br i1 %.old306, label %335, label %330

330:                                              ; preds = %325, %329
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %331 unwind label %321

331:                                              ; preds = %330
  %332 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %33, i32 noundef %332, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %305, i64 noundef %306, i64 noundef -9223372036854775808)
          to label %.critedge280 unwind label %333

333:                                              ; preds = %331
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %354

335:                                              ; preds = %314, %325, %329
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %336 unwind label %321

336:                                              ; preds = %335
  invoke void @_Z15print_test_passIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %34, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %305, i64 noundef %311, i64 noundef -9223372036854775808)
          to label %.critedge280 unwind label %337

337:                                              ; preds = %336
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  br label %354

.critedge280:                                     ; preds = %336, %331
  %.sink322 = phi ptr [ %33, %331 ], [ %34, %336 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink322) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  %339 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %340 = add nsw i32 %339, 1
  store i32 %340, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %341 unwind label %356

341:                                              ; preds = %.critedge280
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  %342 = call noundef i64 @_ZN4gcem3absIlEET_S1_(i64 noundef 9223372036854775807) #7
  %343 = call noundef i64 @_ZSt3absl(i64 noundef 9223372036854775807)
  %344 = sub nsw i64 %342, %343
  %345 = call noundef i64 @_ZSt3absl(i64 noundef %344)
  %346 = call noundef i64 @_ZSt3absl(i64 noundef %343)
  %347 = add nsw i64 %346, 1
  %348 = sdiv i64 %345, %347
  %349 = sitofp i64 %342 to x86_fp80
  %350 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %349)
  br i1 %350, label %351, label %360

351:                                              ; preds = %341
  %352 = sitofp i64 %343 to x86_fp80
  %353 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %352)
  br i1 %353, label %372, label %360

354:                                              ; preds = %337, %333, %321
  %.pn242 = phi { ptr, i32 } [ %338, %337 ], [ %322, %321 ], [ %334, %333 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %355

355:                                              ; preds = %354, %319
  %.pn242.pn = phi { ptr, i32 } [ %.pn242, %354 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #7
  br label %512

356:                                              ; preds = %.critedge280
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  br label %394

358:                                              ; preds = %372, %367
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %393

360:                                              ; preds = %351, %341
  %361 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %349)
  br i1 %361, label %366, label %362

362:                                              ; preds = %360
  %363 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %349)
  %364 = icmp eq i64 %342, %343
  %or.cond281 = and i1 %364, %363
  %365 = icmp slt i64 %348, 1
  %or.cond309 = or i1 %365, %or.cond281
  br i1 %or.cond309, label %372, label %367

366:                                              ; preds = %360
  %.old308 = icmp slt i64 %348, 1
  br i1 %.old308, label %372, label %367

367:                                              ; preds = %362, %366
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %368 unwind label %358

368:                                              ; preds = %367
  %369 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  invoke void @_Z15print_test_failIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %37, i32 noundef %369, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %342, i64 noundef %343, i64 noundef 9223372036854775807)
          to label %.critedge283 unwind label %370

370:                                              ; preds = %368
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %393

372:                                              ; preds = %351, %362, %366
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %373 unwind label %358

373:                                              ; preds = %372
  invoke void @_Z15print_test_passIlllEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %38, i32 noundef 3, i32 noundef 6, i32 noundef 18, i64 noundef %342, i64 noundef %348, i64 noundef 9223372036854775807)
          to label %.critedge283 unwind label %374

374:                                              ; preds = %373
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %393

.critedge283:                                     ; preds = %373, %368
  %.sink323 = phi ptr [ %37, %368 ], [ %38, %373 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink323) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  %376 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %378 unwind label %395

378:                                              ; preds = %.critedge283
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  %379 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %380 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %379) #7
  %381 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  %382 = call noundef double @_ZSt3absd(double noundef %381)
  %383 = fsub double %380, %382
  %384 = call noundef double @_ZSt3absd(double noundef %383)
  %385 = call noundef double @_ZSt3absd(double noundef %382)
  %386 = fadd double %385, 1.000000e+00
  %387 = fdiv double %384, %386
  %388 = fpext double %380 to x86_fp80
  %389 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %388)
  br i1 %389, label %390, label %399

390:                                              ; preds = %378
  %391 = fpext double %382 to x86_fp80
  %392 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %391)
  br i1 %392, label %412, label %399

393:                                              ; preds = %374, %370, %358
  %.pn245 = phi { ptr, i32 } [ %375, %374 ], [ %359, %358 ], [ %371, %370 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %394

394:                                              ; preds = %393, %356
  %.pn245.pn = phi { ptr, i32 } [ %.pn245, %393 ], [ %357, %356 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  br label %512

395:                                              ; preds = %.critedge283
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #7
  br label %437

397:                                              ; preds = %412, %406
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %436

399:                                              ; preds = %390, %378
  %400 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %388)
  br i1 %400, label %405, label %401

401:                                              ; preds = %399
  %402 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %388)
  %403 = fcmp oeq double %380, %382
  %or.cond284 = and i1 %403, %402
  %404 = fcmp olt double %387, 0x3D06849B86A12B9B
  %or.cond311 = or i1 %404, %or.cond284
  br i1 %or.cond311, label %412, label %406

405:                                              ; preds = %399
  %.old310 = fcmp olt double %387, 0x3D06849B86A12B9B
  br i1 %.old310, label %412, label %406

406:                                              ; preds = %401, %405
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %407 unwind label %397

407:                                              ; preds = %406
  %408 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %409 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %41, i32 noundef %408, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %380, double noundef %382, double noundef %409)
          to label %.critedge286 unwind label %410

410:                                              ; preds = %407
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %436

412:                                              ; preds = %390, %401, %405
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %413 unwind label %397

413:                                              ; preds = %412
  %414 = call noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() #7
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %42, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %380, double noundef %387, double noundef %414)
          to label %.critedge286 unwind label %415

415:                                              ; preds = %413
  %416 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  br label %436

.critedge286:                                     ; preds = %413, %407
  %.sink324 = phi ptr [ %41, %407 ], [ %42, %413 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink324) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  %417 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %419 unwind label %438

419:                                              ; preds = %.critedge286
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  %420 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %421 = fneg double %420
  %422 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %421) #7
  %423 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %424 = fneg double %423
  %425 = call noundef double @_ZSt3absd(double noundef %424)
  %426 = fsub double %422, %425
  %427 = call noundef double @_ZSt3absd(double noundef %426)
  %428 = call noundef double @_ZSt3absd(double noundef %425)
  %429 = fadd double %428, 1.000000e+00
  %430 = fdiv double %427, %429
  %431 = fpext double %422 to x86_fp80
  %432 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %431)
  br i1 %432, label %433, label %442

433:                                              ; preds = %419
  %434 = fpext double %425 to x86_fp80
  %435 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %434)
  br i1 %435, label %456, label %442

436:                                              ; preds = %415, %410, %397
  %.pn248 = phi { ptr, i32 } [ %416, %415 ], [ %398, %397 ], [ %411, %410 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %437

437:                                              ; preds = %436, %395
  %.pn248.pn = phi { ptr, i32 } [ %.pn248, %436 ], [ %396, %395 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  br label %512

438:                                              ; preds = %.critedge286
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #7
  br label %480

440:                                              ; preds = %456, %449
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %479

442:                                              ; preds = %433, %419
  %443 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %431)
  br i1 %443, label %448, label %444

444:                                              ; preds = %442
  %445 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %431)
  %446 = fcmp oeq double %422, %425
  %or.cond287 = and i1 %446, %445
  %447 = fcmp olt double %430, 0x3D06849B86A12B9B
  %or.cond313 = or i1 %447, %or.cond287
  br i1 %or.cond313, label %456, label %449

448:                                              ; preds = %442
  %.old312 = fcmp olt double %430, 0x3D06849B86A12B9B
  br i1 %.old312, label %456, label %449

449:                                              ; preds = %444, %448
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %450 unwind label %440

450:                                              ; preds = %449
  %451 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %452 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %453 = fneg double %452
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %45, i32 noundef %451, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %422, double noundef %425, double noundef %453)
          to label %.critedge289 unwind label %454

454:                                              ; preds = %450
  %455 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %479

456:                                              ; preds = %433, %444, %448
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %457 unwind label %440

457:                                              ; preds = %456
  %458 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %459 = fneg double %458
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %46, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %422, double noundef %430, double noundef %459)
          to label %.critedge289 unwind label %460

460:                                              ; preds = %457
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %479

.critedge289:                                     ; preds = %457, %450
  %.sink325 = phi ptr [ %45, %450 ], [ %46, %457 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink325) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  %462 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %48) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %464 unwind label %481

464:                                              ; preds = %.critedge289
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  %465 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %466 = call noundef double @_ZN4gcem3absIdEET_S1_(double noundef %465) #7
  %467 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  %468 = call noundef double @_ZSt3absd(double noundef %467)
  %469 = fsub double %466, %468
  %470 = call noundef double @_ZSt3absd(double noundef %469)
  %471 = call noundef double @_ZSt3absd(double noundef %468)
  %472 = fadd double %471, 1.000000e+00
  %473 = fdiv double %470, %472
  %474 = fpext double %466 to x86_fp80
  %475 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %474)
  br i1 %475, label %476, label %485

476:                                              ; preds = %464
  %477 = fpext double %468 to x86_fp80
  %478 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %477)
  br i1 %478, label %498, label %485

479:                                              ; preds = %460, %454, %440
  %.pn251 = phi { ptr, i32 } [ %461, %460 ], [ %441, %440 ], [ %455, %454 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  br label %480

480:                                              ; preds = %479, %438
  %.pn251.pn = phi { ptr, i32 } [ %.pn251, %479 ], [ %439, %438 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #7
  br label %512

481:                                              ; preds = %.critedge289
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %48) #7
  br label %506

483:                                              ; preds = %498, %492
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %505

485:                                              ; preds = %476, %464
  %486 = call noundef zeroext i1 @_ZSt5isnane(x86_fp80 noundef %474)
  br i1 %486, label %491, label %487

487:                                              ; preds = %485
  %488 = call noundef zeroext i1 @_ZSt5isinfe(x86_fp80 noundef %474)
  %489 = fcmp oeq double %466, %468
  %or.cond290 = and i1 %489, %488
  %490 = fcmp olt double %473, 0x3D06849B86A12B9B
  %or.cond315 = or i1 %490, %or.cond290
  br i1 %or.cond315, label %498, label %492

491:                                              ; preds = %485
  %.old314 = fcmp olt double %473, 0x3D06849B86A12B9B
  br i1 %.old314, label %498, label %492

492:                                              ; preds = %487, %491
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %493 unwind label %483

493:                                              ; preds = %492
  %494 = load i32, ptr @GCEM_TEST_NUMBER, align 4, !tbaa !5
  %495 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  invoke void @_Z15print_test_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef nonnull %49, i32 noundef %494, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %466, double noundef %468, double noundef %495)
          to label %.critedge292 unwind label %496

496:                                              ; preds = %493
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %505

498:                                              ; preds = %476, %487, %491
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %499 unwind label %483

499:                                              ; preds = %498
  %500 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #7
  invoke void @_Z15print_test_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef nonnull %50, i32 noundef 3, i32 noundef 6, i32 noundef 18, double noundef %466, double noundef %473, double noundef %500)
          to label %.critedge292 unwind label %501

501:                                              ; preds = %499
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %505

.critedge292:                                     ; preds = %499, %493
  %.sink326 = phi ptr [ %49, %493 ], [ %50, %499 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink326) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %503 unwind label %507

503:                                              ; preds = %.critedge292
  invoke void @_Z11print_finalNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull %51)
          to label %504 unwind label %509

504:                                              ; preds = %503
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #7
  ret i32 0

505:                                              ; preds = %501, %496, %483
  %.pn254 = phi { ptr, i32 } [ %502, %501 ], [ %484, %483 ], [ %497, %496 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #7
  br label %506

506:                                              ; preds = %505, %481
  %.pn254.pn = phi { ptr, i32 } [ %.pn254, %505 ], [ %482, %481 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #7
  br label %512

507:                                              ; preds = %.critedge292
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %503
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %511

511:                                              ; preds = %509, %507
  %.pn257 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #7
  br label %512

512:                                              ; preds = %511, %506, %480, %437, %394, %355, %318, %281, %248, %216, %185, %148, %111, %74
  %.pn257.pn = phi { ptr, i32 } [ %.pn257, %511 ], [ %.pn254.pn, %506 ], [ %.pn251.pn, %480 ], [ %.pn248.pn, %437 ], [ %.pn245.pn, %394 ], [ %.pn242.pn, %355 ], [ %.pn239.pn, %318 ], [ %.pn236.pn, %281 ], [ %.pn233.pn, %248 ], [ %.pn230.pn, %216 ], [ %.pn227.pn, %185 ], [ %.pn224.pn, %148 ], [ %.pn221.pn, %111 ], [ %.pn, %74 ]
  resume { ptr, i32 } %.pn257.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 dso_local noundef double @_ZN4gcem3absIdEET_S1_(double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double 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_failIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double 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_passIdddEvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiiiT_T0_T1_(ptr noundef, i32 noundef, i32 noundef, i32 noundef, double noundef, double noundef, double noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #6

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE9quiet_NaNEv() local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #3 align 2

; 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 @_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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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