; LLVM IR from gnikit/md-sim :: src/phase_transition.ll (ZN16phase_transition15crystallisationER12options_type)

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.stat_file = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.options_type = type <{ i64, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector.3", i64, i64, i64, i64, i64, double, double, double, double, double, double, i8, [7 x i8], double, double, double, double, double, double, double, double, double, i8, [7 x i8], %struct.io_options_type, %struct.rdf_options_type, %struct.compression_options_type, %struct.test_options_type, [7 x i8] }>
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.io_options_type = type { i64, i8, i8, i8, i8, i8, i8, i8, i8, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i64, %"class.std::__cxx11::basic_string" }
%struct.rdf_options_type = type { i64, i64 }
%struct.compression_options_type = type { i8, double, double, i8, i64 }
%struct.test_options_type = type { i8 }
%class.phase_transition = type { %class.MD, %"class.std::basic_ofstream" }
%class.MD = type { %class.vector_3d, %class.vector_3d, %class.vector_3d, %class.vector_3d, %class.vector_3d, %class.vector_3d, %class.vector_3d, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %struct.options_type, ptr, double, i64, %class.stat_file }
%class.vector_3d = type { i8, %"class.std::vector", %"class.std::vector", %"class.std::vector" }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.13 }
%union.anon.13 = type { i32 }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16phase_transition15crystallisationER12options_type(ptr noundef nonnull align 8 dereferenceable(2216) %0, ptr noundef nonnull align 8 dereferenceable(561) %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i64, align 8
  %11 = alloca %class.stat_file, align 8
  %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::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.0", align 1
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %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::vector", align 8
  %24 = alloca %class.stat_file, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %27 = load ptr, ptr %3, align 8
  %28 = load ptr, ptr %4, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.options_type, ptr %28, i32 0, i32 33
  %30 = getelementptr inbounds %struct.compression_options_type, ptr %29, i32 0, i32 0
  store i8 1, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.options_type, ptr %31, i32 0, i32 20
  %33 = load double, ptr %32, align 8, !tbaa !24
  store double %33, ptr %5, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  store double 0.000000e+00, ptr %6, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #8
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.options_type, ptr %34, i32 0, i32 31
  %36 = getelementptr inbounds %struct.io_options_type, ptr %35, i32 0, i32 11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %36)
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN16phase_transition19error_check_optionsER12options_type(ptr noundef nonnull align 8 dereferenceable(2216) %27, ptr noundef nonnull align 8 dereferenceable(561) %37)
          to label %38 unwind label %99

38:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.options_type, ptr %39, i32 0, i32 33
  %41 = getelementptr inbounds %struct.compression_options_type, ptr %40, i32 0, i32 1
  %42 = load double, ptr %41, align 8, !tbaa !26
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.options_type, ptr %43, i32 0, i32 20
  %45 = load double, ptr %44, align 8, !tbaa !24
  %46 = fsub double %42, %45
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.options_type, ptr %47, i32 0, i32 33
  %49 = getelementptr inbounds %struct.compression_options_type, ptr %48, i32 0, i32 2
  %50 = load double, ptr %49, align 8, !tbaa !27
  %51 = fdiv double %46, %50
  %52 = call double @llvm.ceil.f64(double %51)
  %53 = invoke noundef double @_ZSt3absd(double noundef %52)
          to label %54 unwind label %103

54:                                               ; preds = %38
  %55 = fadd double %53, 1.000000e+00
  %56 = fptoui double %55 to i64
  store i64 %56, ptr %10, align 8, !tbaa !28
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.options_type, ptr %57, i32 0, i32 31
  %59 = getelementptr inbounds %struct.io_options_type, ptr %58, i32 0, i32 9
  %60 = load i8, ptr %59, align 8, !tbaa !29, !range !30, !noundef !31
  %61 = trunc i8 %60 to i1
  br i1 %61, label %62, label %192

62:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 312, ptr %11) #8
  invoke void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312) %11)
          to label %63 unwind label %107

63:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #8
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.options_type, ptr %64, i32 0, i32 31
  %66 = getelementptr inbounds %struct.io_options_type, ptr %65, i32 0, i32 10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str)
          to label %67 unwind label %111

67:                                               ; preds = %63
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.options_type, ptr %68, i32 0, i32 31
  %70 = getelementptr inbounds %struct.io_options_type, ptr %69, i32 0, i32 11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %71 unwind label %115

71:                                               ; preds = %67
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.1)
          to label %72 unwind label %119

72:                                               ; preds = %71
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.options_type, ptr %73, i32 0, i32 7
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.options_type, ptr %75, i32 0, i32 11
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.options_type, ptr %77, i32 0, i32 20
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.options_type, ptr %79, i32 0, i32 21
  %81 = load ptr, ptr %4, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.options_type, ptr %81, i32 0, i32 23
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.options_type, ptr %83, i32 0, i32 24
  invoke void @_ZN9stat_file11file_namingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKmS9_RKdSB_SB_SB_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(312) %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %85 unwind label %123

85:                                               ; preds = %72
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  %86 = getelementptr inbounds %class.phase_transition, ptr %27, i32 0, i32 1
  %87 = invoke noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 16, i32 noundef 32)
          to label %88 unwind label %130

88:                                               ; preds = %85
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %86, ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef %87)
          to label %89 unwind label %130

89:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %90 unwind label %134

90:                                               ; preds = %89
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.options_type, ptr %91, i32 0, i32 31
  %93 = getelementptr inbounds %struct.io_options_type, ptr %92, i32 0, i32 1
  %94 = load i8, ptr %93, align 8, !tbaa !32, !range !30, !noundef !31
  %95 = trunc i8 %94 to i1
  br i1 %95, label %96, label %142

96:                                               ; preds = %90
  %97 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.3)
          to label %98 unwind label %138

98:                                               ; preds = %96
  br label %142

99:                                               ; preds = %2
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %8, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %9, align 4
  br label %385

103:                                              ; preds = %382, %379, %38
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %8, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %9, align 4
  br label %384

107:                                              ; preds = %62
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %8, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %9, align 4
  br label %191

111:                                              ; preds = %63
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %8, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %9, align 4
  br label %129

115:                                              ; preds = %67
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %8, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %9, align 4
  br label %128

119:                                              ; preds = %71
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %8, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %9, align 4
  br label %127

123:                                              ; preds = %72
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %8, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %127

127:                                              ; preds = %123, %119
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %128

128:                                              ; preds = %127, %115
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %129

129:                                              ; preds = %128, %111
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  br label %190

130:                                              ; preds = %88, %85
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %8, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %9, align 4
  br label %189

134:                                              ; preds = %89
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %8, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %9, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #8
  br label %188

138:                                              ; preds = %185, %182, %179, %170, %161, %159, %157, %148, %96
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %8, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %188

142:                                              ; preds = %98, %90
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.options_type, ptr %143, i32 0, i32 31
  %145 = getelementptr inbounds %struct.io_options_type, ptr %144, i32 0, i32 3
  %146 = load i8, ptr %145, align 2, !tbaa !33, !range !30, !noundef !31
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %151

148:                                              ; preds = %142
  %149 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.4)
          to label %150 unwind label %138

150:                                              ; preds = %148
  br label %151

151:                                              ; preds = %150, %142
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.options_type, ptr %152, i32 0, i32 31
  %154 = getelementptr inbounds %struct.io_options_type, ptr %153, i32 0, i32 7
  %155 = load i8, ptr %154, align 2, !tbaa !34, !range !30, !noundef !31
  %156 = trunc i8 %155 to i1
  br i1 %156, label %157, label %164

157:                                              ; preds = %151
  %158 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.5)
          to label %159 unwind label %138

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.6)
          to label %161 unwind label %138

161:                                              ; preds = %159
  %162 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.7)
          to label %163 unwind label %138

163:                                              ; preds = %161
  br label %164

164:                                              ; preds = %163, %151
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.options_type, ptr %165, i32 0, i32 31
  %167 = getelementptr inbounds %struct.io_options_type, ptr %166, i32 0, i32 4
  %168 = load i8, ptr %167, align 1, !tbaa !35, !range !30, !noundef !31
  %169 = trunc i8 %168 to i1
  br i1 %169, label %170, label %173

170:                                              ; preds = %164
  %171 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.8)
          to label %172 unwind label %138

172:                                              ; preds = %170
  br label %173

173:                                              ; preds = %172, %164
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.options_type, ptr %174, i32 0, i32 31
  %176 = getelementptr inbounds %struct.io_options_type, ptr %175, i32 0, i32 5
  %177 = load i8, ptr %176, align 4, !tbaa !36, !range !30, !noundef !31
  %178 = trunc i8 %177 to i1
  br i1 %178, label %179, label %182

179:                                              ; preds = %173
  %180 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.9)
          to label %181 unwind label %138

181:                                              ; preds = %179
  br label %182

182:                                              ; preds = %181, %173
  %183 = getelementptr inbounds %class.phase_transition, ptr %27, i32 0, i32 1
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %185 unwind label %138

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %187 unwind label %138

187:                                              ; preds = %185
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %11) #8
  call void @llvm.lifetime.end.p0(i64 312, ptr %11) #8
  br label %192

188:                                              ; preds = %138, %134
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  br label %189

189:                                              ; preds = %188, %130
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %190

190:                                              ; preds = %189, %129
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %11) #8
  br label %191

191:                                              ; preds = %190, %107
  call void @llvm.lifetime.end.p0(i64 312, ptr %11) #8
  br label %384

192:                                              ; preds = %187, %54
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store i64 0, ptr %18, align 8, !tbaa !28
  br label %193

193:                                              ; preds = %367, %192
  %194 = load i64, ptr %18, align 8, !tbaa !28
  %195 = load i64, ptr %10, align 8, !tbaa !28
  %196 = icmp ult i64 %194, %195
  br i1 %196, label %198, label %197

197:                                              ; preds = %193
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %373

198:                                              ; preds = %193
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.10)
          to label %200 unwind label %238

200:                                              ; preds = %198
  %201 = load i64, ptr %18, align 8, !tbaa !28
  %202 = add i64 %201, 1
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %199, i64 noundef %202)
          to label %204 unwind label %238

204:                                              ; preds = %200
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef @.str)
          to label %206 unwind label %238

206:                                              ; preds = %204
  %207 = load i64, ptr %10, align 8, !tbaa !28
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %205, i64 noundef %207)
          to label %209 unwind label %238

209:                                              ; preds = %206
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %211 unwind label %238

211:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  %212 = load i64, ptr %18, align 8, !tbaa !28
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, i64 noundef %212)
          to label %213 unwind label %242

213:                                              ; preds = %211
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %214 unwind label %246

214:                                              ; preds = %213
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.11)
          to label %215 unwind label %250

215:                                              ; preds = %214
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.options_type, ptr %216, i32 0, i32 31
  %218 = getelementptr inbounds %struct.io_options_type, ptr %217, i32 0, i32 11
  %219 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %218, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %220 unwind label %256

220:                                              ; preds = %215
  %221 = load double, ptr %5, align 8, !tbaa !25
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.options_type, ptr %222, i32 0, i32 20
  store double %221, ptr %223, align 8, !tbaa !24
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.options_type, ptr %224, i32 0, i32 31
  %226 = getelementptr inbounds %struct.io_options_type, ptr %225, i32 0, i32 12
  %227 = load i8, ptr %226, align 8, !tbaa !37, !range !30, !noundef !31
  %228 = trunc i8 %227 to i1
  br i1 %228, label %229, label %260

229:                                              ; preds = %220
  %230 = load i64, ptr %18, align 8, !tbaa !28
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.options_type, ptr %231, i32 0, i32 7
  %233 = load i64, ptr %232, align 8, !tbaa !38
  %234 = mul i64 %230, %233
  %235 = load ptr, ptr %4, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.options_type, ptr %235, i32 0, i32 31
  %237 = getelementptr inbounds %struct.io_options_type, ptr %236, i32 0, i32 13
  store i64 %234, ptr %237, align 8, !tbaa !39
  br label %260

238:                                              ; preds = %209, %206, %204, %200, %198
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %8, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %9, align 4
  br label %372

242:                                              ; preds = %211
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %8, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %9, align 4
  br label %255

246:                                              ; preds = %213
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %8, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %9, align 4
  br label %254

250:                                              ; preds = %214
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %8, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %254

254:                                              ; preds = %250, %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %255

255:                                              ; preds = %254, %242
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %371

256:                                              ; preds = %262, %260, %215
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %8, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %9, align 4
  br label %370

260:                                              ; preds = %229, %220
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN2MD11set_optionsERK12options_type(ptr noundef nonnull align 8 dereferenceable(1704) %27, ptr noundef nonnull align 8 dereferenceable(561) %261)
          to label %262 unwind label %256

262:                                              ; preds = %260
  invoke void @_ZN2MD10simulationEv(ptr noundef nonnull align 8 dereferenceable(1704) %27)
          to label %263 unwind label %256

263:                                              ; preds = %262
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.options_type, ptr %264, i32 0, i32 31
  %266 = getelementptr inbounds %struct.io_options_type, ptr %265, i32 0, i32 9
  %267 = load i8, ptr %266, align 8, !tbaa !29, !range !30, !noundef !31
  %268 = trunc i8 %267 to i1
  br i1 %268, label %269, label %291

269:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #8
  invoke void @_ZN2MD13get_run_statsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %23, ptr noundef nonnull align 8 dereferenceable(1704) %27)
          to label %270 unwind label %277

270:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 312, ptr %24) #8
  invoke void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312) %24)
          to label %271 unwind label %281

271:                                              ; preds = %270
  %272 = getelementptr inbounds %class.MD, ptr %27, i32 0, i32 16
  %273 = getelementptr inbounds %class.phase_transition, ptr %27, i32 0, i32 1
  %274 = load i64, ptr %18, align 8, !tbaa !28
  %275 = trunc i64 %274 to i32
  invoke void @_ZN9stat_file15write_file_lineERKSt6vectorIdSaIdEERSt14basic_ofstreamIcSt11char_traitsIcEEi(ptr noundef nonnull align 8 dereferenceable(312) %24, ptr noundef nonnull align 8 dereferenceable(24) %272, ptr noundef nonnull align 8 dereferenceable(248) %273, i32 noundef %275)
          to label %276 unwind label %285

276:                                              ; preds = %271
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %24) #8
  call void @llvm.lifetime.end.p0(i64 312, ptr %24) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  br label %291

277:                                              ; preds = %269
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %8, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %9, align 4
  br label %290

281:                                              ; preds = %270
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %8, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %9, align 4
  br label %289

285:                                              ; preds = %271
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %8, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %9, align 4
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %24) #8
  br label %289

289:                                              ; preds = %285, %281
  call void @llvm.lifetime.end.p0(i64 312, ptr %24) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  br label %290

290:                                              ; preds = %289, %277
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  br label %370

291:                                              ; preds = %276, %263
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.options_type, ptr %292, i32 0, i32 15
  %294 = load double, ptr %293, align 8, !tbaa !40
  store double %294, ptr %6, align 8, !tbaa !25
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.options_type, ptr %295, i32 0, i32 33
  %297 = getelementptr inbounds %struct.compression_options_type, ptr %296, i32 0, i32 2
  %298 = load double, ptr %297, align 8, !tbaa !27
  %299 = load double, ptr %5, align 8, !tbaa !25
  %300 = fadd double %299, %298
  store double %300, ptr %5, align 8, !tbaa !25
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.options_type, ptr %301, i32 0, i32 11
  %303 = load i64, ptr %302, align 8, !tbaa !41
  %304 = uitofp i64 %303 to double
  %305 = load double, ptr %5, align 8, !tbaa !25
  %306 = fdiv double %304, %305
  %307 = call double @pow(double noundef %306, double noundef 0x3FD5555555555555) #8
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.options_type, ptr %308, i32 0, i32 15
  store double %307, ptr %309, align 8, !tbaa !40
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.options_type, ptr %310, i32 0, i32 15
  %312 = load double, ptr %311, align 8, !tbaa !40
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.options_type, ptr %313, i32 0, i32 14
  store double %312, ptr %314, align 8, !tbaa !42
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.options_type, ptr %315, i32 0, i32 13
  store double %312, ptr %316, align 8, !tbaa !43
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.options_type, ptr %317, i32 0, i32 12
  store double %312, ptr %318, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.options_type, ptr %319, i32 0, i32 15
  %321 = load double, ptr %320, align 8, !tbaa !40
  %322 = load double, ptr %6, align 8, !tbaa !25
  %323 = fdiv double %321, %322
  store double %323, ptr %25, align 8, !tbaa !25
  %324 = load double, ptr %25, align 8, !tbaa !25
  %325 = load ptr, ptr %4, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.options_type, ptr %325, i32 0, i32 27
  %327 = load double, ptr %326, align 8, !tbaa !45
  %328 = fmul double %327, %324
  store double %328, ptr %326, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store i64 0, ptr %26, align 8, !tbaa !28
  br label %329

329:                                              ; preds = %358, %291
  %330 = load i64, ptr %26, align 8, !tbaa !28
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.options_type, ptr %331, i32 0, i32 11
  %333 = load i64, ptr %332, align 8, !tbaa !41
  %334 = icmp ult i64 %330, %333
  br i1 %334, label %336, label %335

335:                                              ; preds = %329
  store i32 5, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %361

336:                                              ; preds = %329
  %337 = load double, ptr %25, align 8, !tbaa !25
  %338 = getelementptr inbounds %class.MD, ptr %27, i32 0, i32 0
  %339 = getelementptr inbounds %class.vector_3d, ptr %338, i32 0, i32 1
  %340 = load i64, ptr %26, align 8, !tbaa !28
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %339, i64 noundef %340) #8
  %342 = load double, ptr %341, align 8, !tbaa !25
  %343 = fmul double %342, %337
  store double %343, ptr %341, align 8, !tbaa !25
  %344 = load double, ptr %25, align 8, !tbaa !25
  %345 = getelementptr inbounds %class.MD, ptr %27, i32 0, i32 0
  %346 = getelementptr inbounds %class.vector_3d, ptr %345, i32 0, i32 2
  %347 = load i64, ptr %26, align 8, !tbaa !28
  %348 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %346, i64 noundef %347) #8
  %349 = load double, ptr %348, align 8, !tbaa !25
  %350 = fmul double %349, %344
  store double %350, ptr %348, align 8, !tbaa !25
  %351 = load double, ptr %25, align 8, !tbaa !25
  %352 = getelementptr inbounds %class.MD, ptr %27, i32 0, i32 0
  %353 = getelementptr inbounds %class.vector_3d, ptr %352, i32 0, i32 3
  %354 = load i64, ptr %26, align 8, !tbaa !28
  %355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %354) #8
  %356 = load double, ptr %355, align 8, !tbaa !25
  %357 = fmul double %356, %351
  store double %357, ptr %355, align 8, !tbaa !25
  br label %358

358:                                              ; preds = %336
  %359 = load i64, ptr %26, align 8, !tbaa !28
  %360 = add i64 %359, 1
  store i64 %360, ptr %26, align 8, !tbaa !28
  br label %329, !llvm.loop !46

361:                                              ; preds = %335
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.options_type, ptr %362, i32 0, i32 33
  %364 = getelementptr inbounds %struct.compression_options_type, ptr %363, i32 0, i32 4
  %365 = load i64, ptr %364, align 8, !tbaa !48
  %366 = add i64 %365, 1
  store i64 %366, ptr %364, align 8, !tbaa !48
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %367

367:                                              ; preds = %361
  %368 = load i64, ptr %18, align 8, !tbaa !28
  %369 = add i64 %368, 1
  store i64 %369, ptr %18, align 8, !tbaa !28
  br label %193, !llvm.loop !49

370:                                              ; preds = %290, %256
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %371

371:                                              ; preds = %370, %255
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %372

372:                                              ; preds = %371, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %384

373:                                              ; preds = %197
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.options_type, ptr %374, i32 0, i32 31
  %376 = getelementptr inbounds %struct.io_options_type, ptr %375, i32 0, i32 9
  %377 = load i8, ptr %376, align 8, !tbaa !29, !range !30, !noundef !31
  %378 = trunc i8 %377 to i1
  br i1 %378, label %379, label %382

379:                                              ; preds = %373
  %380 = getelementptr inbounds %class.phase_transition, ptr %27, i32 0, i32 1
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %380)
          to label %381 unwind label %103

381:                                              ; preds = %379
  br label %382

382:                                              ; preds = %381, %373
  invoke void @_ZN2MD12reset_valuesEb(ptr noundef nonnull align 8 dereferenceable(1704) %27, i1 noundef zeroext true)
          to label %383 unwind label %103

383:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  ret void

384:                                              ; preds = %372, %191, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %385

385:                                              ; preds = %384, %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %386

386:                                              ; preds = %385
  %387 = load ptr, ptr %8, align 8
  %388 = load i32, ptr %9, align 4
  %389 = insertvalue { ptr, i32 } poison, ptr %387, 0
  %390 = insertvalue { ptr, i32 } %389, i32 %388, 1
  resume { ptr, i32 } %390
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #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 #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16phase_transition19error_check_optionsER12options_type(ptr noundef nonnull align 8 dereferenceable(2216), ptr noundef nonnull align 8 dereferenceable(561)) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #3

declare void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312)) unnamed_addr #4

declare void @_ZN9stat_file11file_namingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKmS9_RKdSB_SB_SB_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 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 #0 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare void @_ZN2MD11set_optionsERK12options_type(ptr noundef nonnull align 8 dereferenceable(1704), ptr noundef nonnull align 8 dereferenceable(561)) #4

declare void @_ZN2MD10simulationEv(ptr noundef nonnull align 8 dereferenceable(1704)) #4

declare void @_ZN2MD13get_run_statsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(1704)) #4

declare void @_ZN9stat_file15write_file_lineERKSt6vectorIdSaIdEERSt14basic_ofstreamIcSt11char_traitsIcEEi(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(248), i32 noundef) #4

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #7

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) #0 align 2

declare void @_ZN2MD12reset_valuesEb(ptr noundef nonnull align 8 dereferenceable(1704), i1 noundef zeroext) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !19, i64 520}
!10 = !{!"_ZTS12options_type", !11, i64 0, !12, i64 8, !12, i64 40, !12, i64 72, !12, i64 104, !12, i64 136, !14, i64 168, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !18, i64 232, !18, i64 240, !18, i64 248, !18, i64 256, !18, i64 264, !18, i64 272, !19, i64 280, !18, i64 288, !18, i64 296, !18, i64 304, !18, i64 312, !18, i64 320, !18, i64 328, !18, i64 336, !18, i64 344, !18, i64 352, !19, i64 360, !20, i64 368, !21, i64 504, !22, i64 520, !23, i64 560}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !11, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"_ZTSSt6vectorImSaImEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseImSaImEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"double", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTS15io_options_type", !11, i64 0, !19, i64 8, !19, i64 9, !19, i64 10, !19, i64 11, !19, i64 12, !19, i64 13, !19, i64 14, !19, i64 15, !19, i64 16, !12, i64 24, !12, i64 56, !19, i64 88, !11, i64 96, !12, i64 104}
!21 = !{!"_ZTS16rdf_options_type", !11, i64 0, !11, i64 8}
!22 = !{!"_ZTS24compression_options_type", !19, i64 0, !18, i64 8, !18, i64 16, !19, i64 24, !11, i64 32}
!23 = !{!"_ZTS17test_options_type", !19, i64 0}
!24 = !{!10, !18, i64 288}
!25 = !{!18, !18, i64 0}
!26 = !{!10, !18, i64 528}
!27 = !{!10, !18, i64 536}
!28 = !{!11, !11, i64 0}
!29 = !{!10, !19, i64 384}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!10, !19, i64 376}
!33 = !{!10, !19, i64 378}
!34 = !{!10, !19, i64 382}
!35 = !{!10, !19, i64 379}
!36 = !{!10, !19, i64 380}
!37 = !{!10, !19, i64 456}
!38 = !{!10, !11, i64 192}
!39 = !{!10, !11, i64 464}
!40 = !{!10, !18, i64 256}
!41 = !{!10, !11, i64 224}
!42 = !{!10, !18, i64 248}
!43 = !{!10, !18, i64 240}
!44 = !{!10, !18, i64 232}
!45 = !{!10, !18, i64 344}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!10, !11, i64 552}
!49 = distinct !{!49, !47}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"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.stat_file = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector.8" }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16phase_transition15crystallisationER12options_type(ptr noundef nonnull align 8 dereferenceable(2216) %0, ptr noundef nonnull align 8 dereferenceable(561) %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %class.stat_file, align 8
  %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::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %class.stat_file, align 8
  %16 = getelementptr inbounds i8, ptr %1, i64 520
  store i8 1, ptr %16, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %1, i64 288
  %18 = load double, ptr %17, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  %19 = getelementptr inbounds i8, ptr %1, i64 424
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %19)
  invoke void @_ZN16phase_transition19error_check_optionsER12options_type(ptr noundef nonnull align 8 dereferenceable(2216) %0, ptr noundef nonnull align 8 dereferenceable(561) %1)
          to label %20 unwind label %56

20:                                               ; preds = %2
  %21 = getelementptr inbounds i8, ptr %1, i64 528
  %22 = load double, ptr %21, align 8, !tbaa !24
  %23 = load double, ptr %17, align 8, !tbaa !23
  %24 = fsub double %22, %23
  %25 = getelementptr inbounds i8, ptr %1, i64 536
  %26 = load double, ptr %25, align 8, !tbaa !25
  %27 = fdiv double %24, %26
  %28 = call double @llvm.ceil.f64(double %27)
  %29 = call noundef double @_ZSt3absd(double noundef %28)
  %30 = fadd double %29, 1.000000e+00
  %31 = fptoui double %30 to i64
  %32 = getelementptr inbounds i8, ptr %1, i64 384
  %33 = load i8, ptr %32, align 8, !tbaa !26, !range !27, !noundef !28
  %34 = trunc nuw i8 %33 to i1
  br i1 %34, label %35, label %116

35:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 312, ptr nonnull %4) #8
  invoke void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312) %4)
          to label %36 unwind label %60

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  %37 = getelementptr inbounds i8, ptr %1, i64 392
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str)
          to label %38 unwind label %62

38:                                               ; preds = %36
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %39 unwind label %64

39:                                               ; preds = %38
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.1)
          to label %40 unwind label %66

40:                                               ; preds = %39
  %41 = getelementptr inbounds i8, ptr %1, i64 192
  %42 = getelementptr inbounds i8, ptr %1, i64 224
  %43 = getelementptr inbounds i8, ptr %1, i64 296
  %44 = getelementptr inbounds i8, ptr %1, i64 312
  %45 = getelementptr inbounds i8, ptr %1, i64 320
  invoke void @_ZN9stat_file11file_namingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKmS9_RKdSB_SB_SB_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(312) %4, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %46 unwind label %68

46:                                               ; preds = %40
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  %47 = getelementptr inbounds i8, ptr %0, i64 1704
  %48 = call noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 16, i32 noundef 32)
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %47, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %48)
          to label %49 unwind label %73

49:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %50 unwind label %75

50:                                               ; preds = %49
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  %51 = getelementptr inbounds i8, ptr %1, i64 376
  %52 = load i8, ptr %51, align 8, !tbaa !29, !range !27, !noundef !28
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %54, label %79

54:                                               ; preds = %50
  %55 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.3)
          to label %79 unwind label %77

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

58:                                               ; preds = %216, %214
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %218

60:                                               ; preds = %35
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %115

62:                                               ; preds = %36
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %72

64:                                               ; preds = %38
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %71

66:                                               ; preds = %39
  %67 = landingpad { ptr, i32 }
          cleanup
  br label %70

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

70:                                               ; preds = %68, %66
  %.pn = phi { ptr, i32 } [ %69, %68 ], [ %67, %66 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %71

71:                                               ; preds = %70, %64
  %.pn.pn = phi { ptr, i32 } [ %.pn, %70 ], [ %65, %64 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %72

72:                                               ; preds = %71, %62
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %71 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %114

73:                                               ; preds = %46
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %113

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

77:                                               ; preds = %109, %107, %105, %99, %93, %91, %89, %83, %54
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %112

79:                                               ; preds = %54, %50
  %80 = getelementptr inbounds i8, ptr %1, i64 378
  %81 = load i8, ptr %80, align 2, !tbaa !30, !range !27, !noundef !28
  %82 = trunc nuw i8 %81 to i1
  br i1 %82, label %83, label %85

83:                                               ; preds = %79
  %84 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.4)
          to label %85 unwind label %77

85:                                               ; preds = %83, %79
  %86 = getelementptr inbounds i8, ptr %1, i64 382
  %87 = load i8, ptr %86, align 2, !tbaa !31, !range !27, !noundef !28
  %88 = trunc nuw i8 %87 to i1
  br i1 %88, label %89, label %95

89:                                               ; preds = %85
  %90 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.5)
          to label %91 unwind label %77

91:                                               ; preds = %89
  %92 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.6)
          to label %93 unwind label %77

93:                                               ; preds = %91
  %94 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.7)
          to label %95 unwind label %77

95:                                               ; preds = %93, %85
  %96 = getelementptr inbounds i8, ptr %1, i64 379
  %97 = load i8, ptr %96, align 1, !tbaa !32, !range !27, !noundef !28
  %98 = trunc nuw i8 %97 to i1
  br i1 %98, label %99, label %101

99:                                               ; preds = %95
  %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.8)
          to label %101 unwind label %77

101:                                              ; preds = %99, %95
  %102 = getelementptr inbounds i8, ptr %1, i64 380
  %103 = load i8, ptr %102, align 4, !tbaa !33, !range !27, !noundef !28
  %104 = trunc nuw i8 %103 to i1
  br i1 %104, label %105, label %107

105:                                              ; preds = %101
  %106 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.9)
          to label %107 unwind label %77

107:                                              ; preds = %105, %101
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %109 unwind label %77

109:                                              ; preds = %107
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %111 unwind label %77

111:                                              ; preds = %109
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %4) #8
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %4) #8
  br label %116

112:                                              ; preds = %77, %75
  %.pn87 = phi { ptr, i32 } [ %78, %77 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %113

113:                                              ; preds = %112, %73
  %.pn87.pn = phi { ptr, i32 } [ %.pn87, %112 ], [ %74, %73 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %114

114:                                              ; preds = %113, %72
  %.pn87.pn.pn = phi { ptr, i32 } [ %.pn87.pn, %113 ], [ %.pn.pn.pn, %72 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %4) #8
  br label %115

115:                                              ; preds = %114, %60
  %.pn87.pn.pn.pn = phi { ptr, i32 } [ %.pn87.pn.pn, %114 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %4) #8
  br label %218

116:                                              ; preds = %111, %20
  %.not = icmp eq i64 %31, 0
  br i1 %.not, label %._crit_edge108, label %.lr.ph107

.lr.ph107:                                        ; preds = %116
  %117 = getelementptr inbounds i8, ptr %1, i64 456
  %118 = getelementptr inbounds i8, ptr %1, i64 192
  %119 = getelementptr inbounds i8, ptr %1, i64 464
  %120 = getelementptr inbounds i8, ptr %0, i64 776
  %121 = getelementptr inbounds i8, ptr %0, i64 1704
  %122 = getelementptr inbounds i8, ptr %1, i64 256
  %123 = getelementptr inbounds i8, ptr %1, i64 224
  %124 = getelementptr inbounds i8, ptr %1, i64 232
  %125 = getelementptr inbounds i8, ptr %1, i64 344
  %126 = getelementptr inbounds i8, ptr %0, i64 8
  %127 = getelementptr inbounds i8, ptr %0, i64 32
  %128 = getelementptr inbounds i8, ptr %0, i64 56
  %129 = getelementptr inbounds i8, ptr %1, i64 552
  br label %132

._crit_edge108:                                   ; preds = %._crit_edge, %116
  %130 = load i8, ptr %32, align 8, !tbaa !26, !range !27, !noundef !28
  %131 = trunc nuw i8 %130 to i1
  br i1 %131, label %214, label %216

132:                                              ; preds = %.lr.ph107, %._crit_edge
  %.064105 = phi double [ %18, %.lr.ph107 ], [ %187, %._crit_edge ]
  %.065104 = phi i64 [ 0, %.lr.ph107 ], [ %135, %._crit_edge ]
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.10)
          to label %134 unwind label %154

134:                                              ; preds = %132
  %135 = add nuw i64 %.065104, 1
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %133, i64 noundef %135)
          to label %137 unwind label %154

137:                                              ; preds = %134
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull @.str)
          to label %139 unwind label %154

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %138, i64 noundef %31)
          to label %141 unwind label %154

141:                                              ; preds = %139
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %143 unwind label %154

143:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, i64 noundef %.065104)
          to label %144 unwind label %156

144:                                              ; preds = %143
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %145 unwind label %158

145:                                              ; preds = %144
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.11)
          to label %146 unwind label %160

146:                                              ; preds = %145
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  %147 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %148 unwind label %164

148:                                              ; preds = %146
  store double %.064105, ptr %17, align 8, !tbaa !23
  %149 = load i8, ptr %117, align 8, !tbaa !34, !range !27, !noundef !28
  %150 = trunc nuw i8 %149 to i1
  br i1 %150, label %151, label %166

151:                                              ; preds = %148
  %152 = load i64, ptr %118, align 8, !tbaa !35
  %153 = mul i64 %152, %.065104
  store i64 %153, ptr %119, align 8, !tbaa !36
  br label %166

154:                                              ; preds = %141, %139, %137, %134, %132
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %218

156:                                              ; preds = %143
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %163

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

160:                                              ; preds = %145
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %162

162:                                              ; preds = %160, %158
  %.pn92 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %163

163:                                              ; preds = %162, %156
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %162 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %213

164:                                              ; preds = %167, %166, %146
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %212

166:                                              ; preds = %151, %148
  invoke void @_ZN2MD11set_optionsERK12options_type(ptr noundef nonnull align 8 dereferenceable(1704) %0, ptr noundef nonnull align 8 dereferenceable(561) %1)
          to label %167 unwind label %164

167:                                              ; preds = %166
  invoke void @_ZN2MD10simulationEv(ptr noundef nonnull align 8 dereferenceable(1704) %0)
          to label %168 unwind label %164

168:                                              ; preds = %167
  %169 = load i8, ptr %32, align 8, !tbaa !26, !range !27, !noundef !28
  %170 = trunc nuw i8 %169 to i1
  br i1 %170, label %171, label %184

171:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #8
  invoke void @_ZN2MD13get_run_statsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %14, ptr noundef nonnull align 8 dereferenceable(1704) %0)
          to label %172 unwind label %176

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 312, ptr nonnull %15) #8
  invoke void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312) %15)
          to label %173 unwind label %178

173:                                              ; preds = %172
  %174 = trunc i64 %.065104 to i32
  invoke void @_ZN9stat_file15write_file_lineERKSt6vectorIdSaIdEERSt14basic_ofstreamIcSt11char_traitsIcEEi(ptr noundef nonnull align 8 dereferenceable(312) %15, ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(248) %121, i32 noundef %174)
          to label %175 unwind label %180

175:                                              ; preds = %173
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %15) #8
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %15) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %184

176:                                              ; preds = %171
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %183

178:                                              ; preds = %172
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %173
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312) %15) #8
  br label %182

182:                                              ; preds = %180, %178
  %.pn95 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %15) #8
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  br label %183

183:                                              ; preds = %182, %176
  %.pn95.pn = phi { ptr, i32 } [ %.pn95, %182 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #8
  br label %212

184:                                              ; preds = %175, %168
  %185 = load double, ptr %122, align 8, !tbaa !37
  %186 = load double, ptr %25, align 8, !tbaa !25
  %187 = fadd double %.064105, %186
  %188 = load i64, ptr %123, align 8, !tbaa !38
  %189 = uitofp i64 %188 to double
  %190 = fdiv double %189, %187
  %191 = call double @pow(double noundef %190, double noundef 0x3FD5555555555555) #8
  %192 = insertelement <4 x double> poison, double %191, i64 0
  %193 = shufflevector <4 x double> %192, <4 x double> poison, <4 x i32> zeroinitializer
  store <4 x double> %193, ptr %124, align 8, !tbaa !39
  %194 = fdiv double %191, %185
  %195 = load double, ptr %125, align 8, !tbaa !40
  %196 = fmul double %194, %195
  store double %196, ptr %125, align 8, !tbaa !40
  %197 = load i64, ptr %123, align 8, !tbaa !38
  %.not109 = icmp eq i64 %197, 0
  br i1 %.not109, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %184
  %198 = load i64, ptr %129, align 8, !tbaa !41
  %199 = add i64 %198, 1
  store i64 %199, ptr %129, align 8, !tbaa !41
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %exitcond.not = icmp eq i64 %135, %31
  br i1 %exitcond.not, label %._crit_edge108, label %132, !llvm.loop !42

.lr.ph:                                           ; preds = %184, %.lr.ph
  %.0103 = phi i64 [ %209, %.lr.ph ], [ 0, %184 ]
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %.0103) #8
  %201 = load double, ptr %200, align 8, !tbaa !39
  %202 = fmul double %194, %201
  store double %202, ptr %200, align 8, !tbaa !39
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %127, i64 noundef %.0103) #8
  %204 = load double, ptr %203, align 8, !tbaa !39
  %205 = fmul double %194, %204
  store double %205, ptr %203, align 8, !tbaa !39
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %.0103) #8
  %207 = load double, ptr %206, align 8, !tbaa !39
  %208 = fmul double %194, %207
  store double %208, ptr %206, align 8, !tbaa !39
  %209 = add nuw i64 %.0103, 1
  %210 = load i64, ptr %123, align 8, !tbaa !38
  %211 = icmp ult i64 %209, %210
  br i1 %211, label %.lr.ph, label %._crit_edge, !llvm.loop !44

212:                                              ; preds = %183, %164
  %.pn95.pn.pn = phi { ptr, i32 } [ %.pn95.pn, %183 ], [ %165, %164 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %213

213:                                              ; preds = %212, %163
  %.pn95.pn.pn.pn = phi { ptr, i32 } [ %.pn95.pn.pn, %212 ], [ %.pn92.pn, %163 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %218

214:                                              ; preds = %._crit_edge108
  %215 = getelementptr inbounds i8, ptr %0, i64 1704
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %215)
          to label %216 unwind label %58

216:                                              ; preds = %214, %._crit_edge108
  invoke void @_ZN2MD12reset_valuesEb(ptr noundef nonnull align 8 dereferenceable(1704) %0, i1 noundef zeroext true)
          to label %217 unwind label %58

217:                                              ; preds = %216
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  ret void

218:                                              ; preds = %58, %115, %213, %154, %56
  %.pn95.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %57, %56 ], [ %59, %58 ], [ %.pn87.pn.pn.pn, %115 ], [ %.pn95.pn.pn.pn, %213 ], [ %155, %154 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn95.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #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 #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16phase_transition19error_check_optionsER12options_type(ptr noundef nonnull align 8 dereferenceable(2216), ptr noundef nonnull align 8 dereferenceable(561)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #3

declare void @_ZN9stat_fileC1Ev(ptr noundef nonnull align 8 dereferenceable(312)) unnamed_addr #4

declare void @_ZN9stat_file11file_namingERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKmS9_RKdSB_SB_SB_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 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 #0 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9stat_fileD2Ev(ptr noundef nonnull align 8 dereferenceable(312)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

declare void @_ZN2MD11set_optionsERK12options_type(ptr noundef nonnull align 8 dereferenceable(1704), ptr noundef nonnull align 8 dereferenceable(561)) local_unnamed_addr #4

declare void @_ZN2MD10simulationEv(ptr noundef nonnull align 8 dereferenceable(1704)) local_unnamed_addr #4

declare void @_ZN2MD13get_run_statsEv(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(1704)) local_unnamed_addr #4

declare void @_ZN9stat_file15write_file_lineERKSt6vectorIdSaIdEERSt14basic_ofstreamIcSt11char_traitsIcEEi(ptr noundef nonnull align 8 dereferenceable(312), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(248), i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) local_unnamed_addr #0 align 2

declare void @_ZN2MD12reset_valuesEb(ptr noundef nonnull align 8 dereferenceable(1704), i1 noundef zeroext) local_unnamed_addr #4

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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, !18, i64 520}
!6 = !{!"_ZTS12options_type", !7, i64 0, !10, i64 8, !10, i64 40, !10, i64 72, !10, i64 104, !10, i64 136, !13, i64 168, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !17, i64 232, !17, i64 240, !17, i64 248, !17, i64 256, !17, i64 264, !17, i64 272, !18, i64 280, !17, i64 288, !17, i64 296, !17, i64 304, !17, i64 312, !17, i64 320, !17, i64 328, !17, i64 336, !17, i64 344, !17, i64 352, !18, i64 360, !19, i64 368, !20, i64 504, !21, i64 520, !22, i64 560}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !11, i64 0, !7, i64 8, !8, i64 16}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"_ZTSSt6vectorImSaImEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseImSaImEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!17 = !{!"double", !8, i64 0}
!18 = !{!"bool", !8, i64 0}
!19 = !{!"_ZTS15io_options_type", !7, i64 0, !18, i64 8, !18, i64 9, !18, i64 10, !18, i64 11, !18, i64 12, !18, i64 13, !18, i64 14, !18, i64 15, !18, i64 16, !10, i64 24, !10, i64 56, !18, i64 88, !7, i64 96, !10, i64 104}
!20 = !{!"_ZTS16rdf_options_type", !7, i64 0, !7, i64 8}
!21 = !{!"_ZTS24compression_options_type", !18, i64 0, !17, i64 8, !17, i64 16, !18, i64 24, !7, i64 32}
!22 = !{!"_ZTS17test_options_type", !18, i64 0}
!23 = !{!6, !17, i64 288}
!24 = !{!6, !17, i64 528}
!25 = !{!6, !17, i64 536}
!26 = !{!6, !18, i64 384}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!6, !18, i64 376}
!30 = !{!6, !18, i64 378}
!31 = !{!6, !18, i64 382}
!32 = !{!6, !18, i64 379}
!33 = !{!6, !18, i64 380}
!34 = !{!6, !18, i64 456}
!35 = !{!6, !7, i64 192}
!36 = !{!6, !7, i64 464}
!37 = !{!6, !17, i64 256}
!38 = !{!6, !7, i64 224}
!39 = !{!17, !17, i64 0}
!40 = !{!6, !17, i64 344}
!41 = !{!6, !7, i64 552}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass