; LLVM IR from ImperialCollegeLondon/pnflow :: src/pnm/pnflow/polygon/polygonImb.ll (ZNK7Polygon26Pc_pistonType_ImbHingCLineEv)

; 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.std::allocator.2" = type { i8 }
%class.ElemModel = type { ptr, double, double, ptr, ptr, double, ptr, i8, i8, i8, i8, i32, double, double, double, double, double, double, double, %"struct.std::pair", %"struct.std::pair" }
%"struct.std::pair" = type { double, double }
%class.VoidElem = type { %class.ElemModel, double, double, double, double }
%class.Polygon = type { %class.VoidElem, i32, %"class.std::vector.16", ptr, ptr, i16, i8, double }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = 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 }
%class.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair.0" }
%"struct.std::pair.0" = type { i32, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external constant double, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZN9ElemModel12MAX_NEWT_ITRE = external constant i32, align 4
@__FUNCTION__._ZNK7Polygon26Pc_pistonType_ImbHingCLineEv = external hidden unnamed_addr constant [27 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN9ElemModel7EPSILONE = external constant double, align 8
@.str.22 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.25 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef, ptr noundef, i32 noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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)) #0

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

; 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) #0

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 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 dso_local noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984)) #3 align 2

; Function Attrs: nounwind
declare double @cos(double noundef) #4

; 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) #0

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

declare void @_ZNK10CornerApex18getCApexDistConAngERdS0_dddbbb(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

; Function Attrs: nounwind
declare double @sin(double noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK7Polygon26Pc_pistonType_ImbHingCLineEv(ptr noundef nonnull align 8 dereferenceable(248) %0) #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca ptr, align 8
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca i32, align 4
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca i32, align 4
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca i1, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i1, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca i1, align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca i1, align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca i1, align 1
  %31 = alloca %"class.std::allocator.2", align 1
  %32 = alloca i1, align 1
  %33 = alloca i1, align 1
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i1, align 1
  %37 = alloca i1, align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::allocator.2", align 1
  %41 = alloca i1, align 1
  %42 = alloca i1, align 1
  %43 = alloca i1, align 1
  %44 = alloca i1, align 1
  %45 = alloca i1, align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca i1, align 1
  %48 = alloca %"class.std::allocator.2", align 1
  %49 = alloca i1, align 1
  %50 = alloca i1, align 1
  %51 = alloca i1, align 1
  %52 = alloca i1, align 1
  %53 = alloca i1, align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca i1, align 1
  %56 = alloca i32, align 4
  %57 = alloca i1, align 1
  %58 = alloca i1, align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca i1, align 1
  %62 = alloca %"class.std::allocator.2", align 1
  %63 = alloca i1, align 1
  %64 = alloca i1, align 1
  %65 = alloca i1, align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca i1, align 1
  %68 = alloca %"class.std::allocator.2", align 1
  %69 = alloca i1, align 1
  %70 = alloca i1, align 1
  %71 = alloca i1, align 1
  %72 = alloca i1, align 1
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %77 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  %78 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !9
  %80 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %79)
  store double %80, ptr %4, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  store double 1.000000e+03, ptr %5, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %81 = load double, ptr %4, align 8, !tbaa !15
  %82 = fmul double 1.100000e+00, %81
  %83 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %84 = load double, ptr %83, align 8, !tbaa !16
  %85 = call double @cos(double noundef %84) #8
  %86 = fmul double 2.000000e+00, %85
  %87 = fmul double %82, %86
  %88 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 5
  %89 = load double, ptr %88, align 8, !tbaa !18
  %90 = fdiv double %87, %89
  store double %90, ptr %6, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %91 = load double, ptr %6, align 8, !tbaa !15
  store double %91, ptr %9, align 8, !tbaa !15
  store i32 0, ptr %8, align 4, !tbaa !19
  br label %92

92:                                               ; preds = %593, %1
  %93 = load i32, ptr %8, align 4, !tbaa !19
  %94 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4, !tbaa !19
  %95 = add nsw i32 %94, 1
  %96 = icmp slt i32 %93, %95
  br i1 %96, label %97, label %596

97:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store double 0.000000e+00, ptr %10, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  store double 0.000000e+00, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  store double 0.000000e+00, ptr %12, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  store double 0.000000e+00, ptr %13, align 8, !tbaa !15
  %98 = load double, ptr %6, align 8, !tbaa !15
  store double %98, ptr %7, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !19
  br label %99

99:                                               ; preds = %503, %97
  %100 = load i32, ptr %14, align 4, !tbaa !19
  %101 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 1
  %102 = load i32, ptr %101, align 8, !tbaa !20
  %103 = icmp slt i32 %100, %102
  br i1 %103, label %105, label %104

104:                                              ; preds = %99
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %506

105:                                              ; preds = %99
  %106 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %107 = load ptr, ptr %106, align 8, !tbaa !27
  %108 = load i32, ptr %14, align 4, !tbaa !19
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %class.CornerApex, ptr %107, i64 %109
  %111 = call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %110)
  br i1 %111, label %112, label %502

112:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %113 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %114 = load double, ptr %113, align 8, !tbaa !16
  store double %114, ptr %16, align 8, !tbaa !15
  %115 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %116 = load ptr, ptr %115, align 8, !tbaa !27
  %117 = load i32, ptr %14, align 4, !tbaa !19
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds %class.CornerApex, ptr %116, i64 %118
  %120 = load double, ptr %7, align 8, !tbaa !15
  %121 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 2
  %122 = load i32, ptr %14, align 4, !tbaa !19
  %123 = sext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %123) #8
  %125 = load double, ptr %124, align 8, !tbaa !15
  %126 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !9
  %128 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %127)
  call void @_ZNK10CornerApex18getCApexDistConAngERdS0_dddbbb(ptr noundef nonnull align 8 dereferenceable(144) %119, ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16, double noundef %120, double noundef %125, double noundef %128, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %129 = load double, ptr %15, align 8, !tbaa !15
  %130 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 2
  %131 = load i32, ptr %14, align 4, !tbaa !19
  %132 = sext i32 %131 to i64
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %130, i64 noundef %132) #8
  %134 = load double, ptr %133, align 8, !tbaa !15
  %135 = call double @sin(double noundef %134) #8
  %136 = fmul double %129, %135
  %137 = load double, ptr %7, align 8, !tbaa !15
  %138 = fmul double %136, %137
  %139 = load double, ptr %4, align 8, !tbaa !15
  %140 = fdiv double %138, %139
  store double %140, ptr %17, align 8, !tbaa !15
  %141 = load double, ptr %17, align 8, !tbaa !15
  %142 = fcmp oge double %141, -1.000000e+00
  store i1 false, ptr %20, align 1
  store i1 false, ptr %22, align 1
  store i1 false, ptr %24, align 1
  store i1 false, ptr %26, align 1
  store i1 false, ptr %28, align 1
  store i1 false, ptr %30, align 1
  store i1 false, ptr %32, align 1
  store i1 false, ptr %33, align 1
  store i1 false, ptr %36, align 1
  store i1 false, ptr %37, align 1
  store i1 false, ptr %39, align 1
  store i1 false, ptr %41, align 1
  store i1 false, ptr %42, align 1
  store i1 false, ptr %43, align 1
  store i1 false, ptr %44, align 1
  store i1 false, ptr %45, align 1
  store i1 false, ptr %47, align 1
  store i1 false, ptr %49, align 1
  store i1 false, ptr %50, align 1
  store i1 false, ptr %51, align 1
  store i1 false, ptr %52, align 1
  store i1 false, ptr %53, align 1
  store i1 false, ptr %55, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i1 false, ptr %57, align 1
  store i1 false, ptr %58, align 1
  store i1 false, ptr %61, align 1
  store i1 false, ptr %63, align 1
  store i1 false, ptr %64, align 1
  store i1 false, ptr %65, align 1
  store i1 false, ptr %67, align 1
  store i1 false, ptr %69, align 1
  store i1 false, ptr %70, align 1
  store i1 false, ptr %71, align 1
  store i1 false, ptr %72, align 1
  br i1 %142, label %143, label %146

143:                                              ; preds = %112
  %144 = load double, ptr %17, align 8, !tbaa !15
  %145 = fcmp ole double %144, 1.000000e+00
  br i1 %145, label %162, label %146

146:                                              ; preds = %143, %112
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  store i1 true, ptr %20, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  store i1 true, ptr %22, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  store i1 true, ptr %28, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  store i1 true, ptr %30, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  store i1 true, ptr %32, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  store i1 true, ptr %33, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %147 unwind label %306

147:                                              ; preds = %146
  store i1 true, ptr %36, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str.1)
          to label %148 unwind label %310

148:                                              ; preds = %147
  store i1 true, ptr %37, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  store i1 true, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  store i1 true, ptr %41, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  store i1 true, ptr %42, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @__FUNCTION__._ZNK7Polygon26Pc_pistonType_ImbHingCLineEv, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %149 unwind label %314

149:                                              ; preds = %148
  store i1 true, ptr %43, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %150 unwind label %318

150:                                              ; preds = %149
  store i1 true, ptr %44, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.2)
          to label %151 unwind label %322

151:                                              ; preds = %150
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #8
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  store i1 true, ptr %49, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  store i1 true, ptr %50, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %152 unwind label %326

152:                                              ; preds = %151
  store i1 true, ptr %51, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %153 unwind label %330

153:                                              ; preds = %152
  store i1 true, ptr %52, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.4)
          to label %154 unwind label %334

154:                                              ; preds = %153
  store i1 true, ptr %53, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  store i1 true, ptr %55, align 1
  store i32 342, ptr %56, align 4, !tbaa !19
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %155 unwind label %338

155:                                              ; preds = %154
  store i1 true, ptr %57, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %156 unwind label %342

156:                                              ; preds = %155
  store i1 true, ptr %58, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #8
  store i1 true, ptr %63, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  store i1 true, ptr %64, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %157 unwind label %346

157:                                              ; preds = %156
  store i1 true, ptr %65, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #8
  store i1 true, ptr %67, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  store i1 true, ptr %69, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  store i1 true, ptr %70, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %158 unwind label %350

158:                                              ; preds = %157
  store i1 true, ptr %71, align 1
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %159 unwind label %354

159:                                              ; preds = %158
  store i1 true, ptr %72, align 1
  %160 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %18, ptr noundef %59, i32 noundef 0)
          to label %161 unwind label %358

161:                                              ; preds = %159
  br label %162

162:                                              ; preds = %161, %143
  %163 = phi i1 [ true, %143 ], [ %160, %161 ]
  %164 = xor i1 %163, true
  %165 = load i1, ptr %72, align 1
  br i1 %165, label %166, label %167

166:                                              ; preds = %162
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %167

167:                                              ; preds = %166, %162
  %168 = load i1, ptr %71, align 1
  br i1 %168, label %169, label %170

169:                                              ; preds = %167
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %170

170:                                              ; preds = %169, %167
  %171 = load i1, ptr %70, align 1
  br i1 %171, label %172, label %173

172:                                              ; preds = %170
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  br label %173

173:                                              ; preds = %172, %170
  %174 = load i1, ptr %69, align 1
  br i1 %174, label %175, label %176

175:                                              ; preds = %173
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %176

176:                                              ; preds = %175, %173
  %177 = load i1, ptr %67, align 1
  br i1 %177, label %178, label %179

178:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  br label %179

179:                                              ; preds = %178, %176
  %180 = load i1, ptr %65, align 1
  br i1 %180, label %181, label %182

181:                                              ; preds = %179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %182

182:                                              ; preds = %181, %179
  %183 = load i1, ptr %64, align 1
  br i1 %183, label %184, label %185

184:                                              ; preds = %182
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  br label %185

185:                                              ; preds = %184, %182
  %186 = load i1, ptr %63, align 1
  br i1 %186, label %187, label %188

187:                                              ; preds = %185
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #8
  br label %188

188:                                              ; preds = %187, %185
  %189 = load i1, ptr %61, align 1
  br i1 %189, label %190, label %191

190:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  br label %191

191:                                              ; preds = %190, %188
  %192 = load i1, ptr %58, align 1
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %194

194:                                              ; preds = %193, %191
  %195 = load i1, ptr %57, align 1
  br i1 %195, label %196, label %197

196:                                              ; preds = %194
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %197

197:                                              ; preds = %196, %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  %198 = load i1, ptr %55, align 1
  br i1 %198, label %199, label %200

199:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  br label %200

200:                                              ; preds = %199, %197
  %201 = load i1, ptr %53, align 1
  br i1 %201, label %202, label %203

202:                                              ; preds = %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %203

203:                                              ; preds = %202, %200
  %204 = load i1, ptr %52, align 1
  br i1 %204, label %205, label %206

205:                                              ; preds = %203
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %206

206:                                              ; preds = %205, %203
  %207 = load i1, ptr %51, align 1
  br i1 %207, label %208, label %209

208:                                              ; preds = %206
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %209

209:                                              ; preds = %208, %206
  %210 = load i1, ptr %50, align 1
  br i1 %210, label %211, label %212

211:                                              ; preds = %209
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  br label %212

212:                                              ; preds = %211, %209
  %213 = load i1, ptr %49, align 1
  br i1 %213, label %214, label %215

214:                                              ; preds = %212
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  br label %215

215:                                              ; preds = %214, %212
  %216 = load i1, ptr %47, align 1
  br i1 %216, label %217, label %218

217:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  br label %218

218:                                              ; preds = %217, %215
  %219 = load i1, ptr %45, align 1
  br i1 %219, label %220, label %221

220:                                              ; preds = %218
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %221

221:                                              ; preds = %220, %218
  %222 = load i1, ptr %44, align 1
  br i1 %222, label %223, label %224

223:                                              ; preds = %221
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %224

224:                                              ; preds = %223, %221
  %225 = load i1, ptr %43, align 1
  br i1 %225, label %226, label %227

226:                                              ; preds = %224
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %227

227:                                              ; preds = %226, %224
  %228 = load i1, ptr %42, align 1
  br i1 %228, label %229, label %230

229:                                              ; preds = %227
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  br label %230

230:                                              ; preds = %229, %227
  %231 = load i1, ptr %41, align 1
  br i1 %231, label %232, label %233

232:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %233

233:                                              ; preds = %232, %230
  %234 = load i1, ptr %39, align 1
  br i1 %234, label %235, label %236

235:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %236

236:                                              ; preds = %235, %233
  %237 = load i1, ptr %37, align 1
  br i1 %237, label %238, label %239

238:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %239

239:                                              ; preds = %238, %236
  %240 = load i1, ptr %36, align 1
  br i1 %240, label %241, label %242

241:                                              ; preds = %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %242

242:                                              ; preds = %241, %239
  %243 = load i1, ptr %33, align 1
  br i1 %243, label %244, label %245

244:                                              ; preds = %242
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  br label %245

245:                                              ; preds = %244, %242
  %246 = load i1, ptr %32, align 1
  br i1 %246, label %247, label %248

247:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %248

248:                                              ; preds = %247, %245
  %249 = load i1, ptr %30, align 1
  br i1 %249, label %250, label %251

250:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  br label %251

251:                                              ; preds = %250, %248
  %252 = load i1, ptr %28, align 1
  br i1 %252, label %253, label %254

253:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  br label %254

254:                                              ; preds = %253, %251
  %255 = load i1, ptr %26, align 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %257

257:                                              ; preds = %256, %254
  %258 = load i1, ptr %24, align 1
  br i1 %258, label %259, label %260

259:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  br label %260

260:                                              ; preds = %259, %257
  %261 = load i1, ptr %22, align 1
  br i1 %261, label %262, label %263

262:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %263

263:                                              ; preds = %262, %260
  %264 = load i1, ptr %20, align 1
  br i1 %264, label %265, label %266

265:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %266

266:                                              ; preds = %265, %263
  %267 = load double, ptr %17, align 8, !tbaa !15
  %268 = fcmp oge double %267, -1.000000e+00
  br i1 %268, label %269, label %272

269:                                              ; preds = %266
  %270 = load double, ptr %17, align 8, !tbaa !15
  %271 = fcmp ole double %270, 1.000000e+00
  br i1 %271, label %477, label %272

272:                                              ; preds = %269, %266
  %273 = load double, ptr %17, align 8, !tbaa !15
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, double noundef %273)
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef @.str.16)
  %276 = load double, ptr %15, align 8, !tbaa !15
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %275, double noundef %276)
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef @.str.17)
  %279 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 2
  %280 = load i32, ptr %14, align 4, !tbaa !19
  %281 = sext i32 %280 to i64
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %279, i64 noundef %281) #8
  %283 = load double, ptr %282, align 8, !tbaa !15
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %278, double noundef %283)
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef @.str.18)
  %286 = load double, ptr %4, align 8, !tbaa !15
  %287 = load double, ptr %7, align 8, !tbaa !15
  %288 = fdiv double %286, %287
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %285, double noundef %288)
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.19)
  %292 = load double, ptr %7, align 8, !tbaa !15
  %293 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %291, double noundef %292)
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.20)
  %296 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 7
  %297 = load double, ptr %296, align 8, !tbaa !28
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %295, double noundef %297)
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.21)
  %301 = load double, ptr %4, align 8, !tbaa !15
  %302 = load double, ptr %7, align 8, !tbaa !15
  %303 = fdiv double %301, %302
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %300, double noundef %303)
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %477

306:                                              ; preds = %146
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %34, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %35, align 4
  br label %452

310:                                              ; preds = %147
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %34, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %35, align 4
  br label %448

314:                                              ; preds = %148
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %34, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %35, align 4
  br label %435

318:                                              ; preds = %149
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %34, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %35, align 4
  br label %431

322:                                              ; preds = %150
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %34, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %35, align 4
  br label %427

326:                                              ; preds = %151
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %34, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %35, align 4
  br label %414

330:                                              ; preds = %152
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %34, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %35, align 4
  br label %410

334:                                              ; preds = %153
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %34, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %35, align 4
  br label %406

338:                                              ; preds = %154
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %34, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %35, align 4
  br label %399

342:                                              ; preds = %155
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %34, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %35, align 4
  br label %395

346:                                              ; preds = %156
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %34, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %35, align 4
  br label %382

350:                                              ; preds = %157
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %34, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %35, align 4
  br label %369

354:                                              ; preds = %158
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %34, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %35, align 4
  br label %365

358:                                              ; preds = %159
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %34, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %35, align 4
  %362 = load i1, ptr %72, align 1
  br i1 %362, label %363, label %364

363:                                              ; preds = %358
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %364

364:                                              ; preds = %363, %358
  br label %365

365:                                              ; preds = %364, %354
  %366 = load i1, ptr %71, align 1
  br i1 %366, label %367, label %368

367:                                              ; preds = %365
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %368

368:                                              ; preds = %367, %365
  br label %369

369:                                              ; preds = %368, %350
  %370 = load i1, ptr %70, align 1
  br i1 %370, label %371, label %372

371:                                              ; preds = %369
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #8
  br label %372

372:                                              ; preds = %371, %369
  %373 = load i1, ptr %69, align 1
  br i1 %373, label %374, label %375

374:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %375

375:                                              ; preds = %374, %372
  %376 = load i1, ptr %67, align 1
  br i1 %376, label %377, label %378

377:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  br label %378

378:                                              ; preds = %377, %375
  %379 = load i1, ptr %65, align 1
  br i1 %379, label %380, label %381

380:                                              ; preds = %378
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %381

381:                                              ; preds = %380, %378
  br label %382

382:                                              ; preds = %381, %346
  %383 = load i1, ptr %64, align 1
  br i1 %383, label %384, label %385

384:                                              ; preds = %382
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #8
  br label %385

385:                                              ; preds = %384, %382
  %386 = load i1, ptr %63, align 1
  br i1 %386, label %387, label %388

387:                                              ; preds = %385
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #8
  br label %388

388:                                              ; preds = %387, %385
  %389 = load i1, ptr %61, align 1
  br i1 %389, label %390, label %391

390:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  br label %391

391:                                              ; preds = %390, %388
  %392 = load i1, ptr %58, align 1
  br i1 %392, label %393, label %394

393:                                              ; preds = %391
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %394

394:                                              ; preds = %393, %391
  br label %395

395:                                              ; preds = %394, %342
  %396 = load i1, ptr %57, align 1
  br i1 %396, label %397, label %398

397:                                              ; preds = %395
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %398

398:                                              ; preds = %397, %395
  br label %399

399:                                              ; preds = %398, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  %400 = load i1, ptr %55, align 1
  br i1 %400, label %401, label %402

401:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  br label %402

402:                                              ; preds = %401, %399
  %403 = load i1, ptr %53, align 1
  br i1 %403, label %404, label %405

404:                                              ; preds = %402
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %405

405:                                              ; preds = %404, %402
  br label %406

406:                                              ; preds = %405, %334
  %407 = load i1, ptr %52, align 1
  br i1 %407, label %408, label %409

408:                                              ; preds = %406
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %409

409:                                              ; preds = %408, %406
  br label %410

410:                                              ; preds = %409, %330
  %411 = load i1, ptr %51, align 1
  br i1 %411, label %412, label %413

412:                                              ; preds = %410
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %413

413:                                              ; preds = %412, %410
  br label %414

414:                                              ; preds = %413, %326
  %415 = load i1, ptr %50, align 1
  br i1 %415, label %416, label %417

416:                                              ; preds = %414
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  br label %417

417:                                              ; preds = %416, %414
  %418 = load i1, ptr %49, align 1
  br i1 %418, label %419, label %420

419:                                              ; preds = %417
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  br label %420

420:                                              ; preds = %419, %417
  %421 = load i1, ptr %47, align 1
  br i1 %421, label %422, label %423

422:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  br label %423

423:                                              ; preds = %422, %420
  %424 = load i1, ptr %45, align 1
  br i1 %424, label %425, label %426

425:                                              ; preds = %423
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %426

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

427:                                              ; preds = %426, %322
  %428 = load i1, ptr %44, align 1
  br i1 %428, label %429, label %430

429:                                              ; preds = %427
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %430

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

431:                                              ; preds = %430, %318
  %432 = load i1, ptr %43, align 1
  br i1 %432, label %433, label %434

433:                                              ; preds = %431
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %434

434:                                              ; preds = %433, %431
  br label %435

435:                                              ; preds = %434, %314
  %436 = load i1, ptr %42, align 1
  br i1 %436, label %437, label %438

437:                                              ; preds = %435
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  br label %438

438:                                              ; preds = %437, %435
  %439 = load i1, ptr %41, align 1
  br i1 %439, label %440, label %441

440:                                              ; preds = %438
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %441

441:                                              ; preds = %440, %438
  %442 = load i1, ptr %39, align 1
  br i1 %442, label %443, label %444

443:                                              ; preds = %441
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %444

444:                                              ; preds = %443, %441
  %445 = load i1, ptr %37, align 1
  br i1 %445, label %446, label %447

446:                                              ; preds = %444
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %447

447:                                              ; preds = %446, %444
  br label %448

448:                                              ; preds = %447, %310
  %449 = load i1, ptr %36, align 1
  br i1 %449, label %450, label %451

450:                                              ; preds = %448
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %451

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

452:                                              ; preds = %451, %306
  %453 = load i1, ptr %33, align 1
  br i1 %453, label %454, label %455

454:                                              ; preds = %452
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  br label %455

455:                                              ; preds = %454, %452
  %456 = load i1, ptr %32, align 1
  br i1 %456, label %457, label %458

457:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %458

458:                                              ; preds = %457, %455
  %459 = load i1, ptr %30, align 1
  br i1 %459, label %460, label %461

460:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  br label %461

461:                                              ; preds = %460, %458
  %462 = load i1, ptr %28, align 1
  br i1 %462, label %463, label %464

463:                                              ; preds = %461
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  br label %464

464:                                              ; preds = %463, %461
  %465 = load i1, ptr %26, align 1
  br i1 %465, label %466, label %467

466:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  br label %467

467:                                              ; preds = %466, %464
  %468 = load i1, ptr %24, align 1
  br i1 %468, label %469, label %470

469:                                              ; preds = %467
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  br label %470

470:                                              ; preds = %469, %467
  %471 = load i1, ptr %22, align 1
  br i1 %471, label %472, label %473

472:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  br label %473

473:                                              ; preds = %472, %470
  %474 = load i1, ptr %20, align 1
  br i1 %474, label %475, label %476

475:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %476

476:                                              ; preds = %475, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  br label %706

477:                                              ; preds = %272, %269
  %478 = load double, ptr %15, align 8, !tbaa !15
  %479 = load double, ptr %16, align 8, !tbaa !15
  %480 = call double @cos(double noundef %479) #8
  %481 = load double, ptr %10, align 8, !tbaa !15
  %482 = call double @llvm.fmuladd.f64(double %478, double %480, double %481)
  store double %482, ptr %10, align 8, !tbaa !15
  %483 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !15
  %484 = fdiv double %483, 2.000000e+00
  %485 = load double, ptr %16, align 8, !tbaa !15
  %486 = fsub double %484, %485
  %487 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 2
  %488 = load i32, ptr %14, align 4, !tbaa !19
  %489 = sext i32 %488 to i64
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %487, i64 noundef %489) #8
  %491 = load double, ptr %490, align 8, !tbaa !15
  %492 = fsub double %486, %491
  %493 = load double, ptr %11, align 8, !tbaa !15
  %494 = fadd double %493, %492
  store double %494, ptr %11, align 8, !tbaa !15
  %495 = load double, ptr %17, align 8, !tbaa !15
  %496 = call double @asin(double noundef %495) #8
  %497 = load double, ptr %12, align 8, !tbaa !15
  %498 = fadd double %497, %496
  store double %498, ptr %12, align 8, !tbaa !15
  %499 = load double, ptr %15, align 8, !tbaa !15
  %500 = load double, ptr %13, align 8, !tbaa !15
  %501 = fadd double %500, %499
  store double %501, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %502

502:                                              ; preds = %477, %105
  br label %503

503:                                              ; preds = %502
  %504 = load i32, ptr %14, align 4, !tbaa !19
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %14, align 4, !tbaa !19
  br label %99, !llvm.loop !29

506:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %507 = load double, ptr %12, align 8, !tbaa !15
  %508 = load double, ptr %11, align 8, !tbaa !15
  %509 = fneg double %508
  %510 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %507, double %509)
  store double %510, ptr %73, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %511 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %512 = load double, ptr %511, align 8, !tbaa !16
  %513 = call double @cos(double noundef %512) #8
  %514 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 5
  %515 = load double, ptr %514, align 8, !tbaa !18
  %516 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 1
  %517 = load double, ptr %516, align 8, !tbaa !31
  %518 = fmul double 2.000000e+00, %517
  %519 = fdiv double %515, %518
  %520 = load double, ptr %13, align 8, !tbaa !15
  %521 = fmul double 2.000000e+00, %520
  %522 = fneg double %521
  %523 = call double @llvm.fmuladd.f64(double %513, double %519, double %522)
  %524 = load double, ptr %10, align 8, !tbaa !15
  %525 = fadd double %523, %524
  store double %525, ptr %74, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %526 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 5
  %527 = load double, ptr %526, align 8, !tbaa !18
  %528 = fneg double %527
  %529 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 5
  %530 = load double, ptr %529, align 8, !tbaa !18
  %531 = fmul double %528, %530
  %532 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 1
  %533 = load double, ptr %532, align 8, !tbaa !31
  %534 = fmul double 4.000000e+00, %533
  %535 = fdiv double %531, %534
  store double %535, ptr %75, align 8, !tbaa !15
  %536 = load double, ptr %74, align 8, !tbaa !15
  %537 = load double, ptr %74, align 8, !tbaa !15
  %538 = load double, ptr %73, align 8, !tbaa !15
  %539 = fmul double 4.000000e+00, %538
  %540 = load double, ptr %75, align 8, !tbaa !15
  %541 = fmul double %539, %540
  %542 = fneg double %541
  %543 = call double @llvm.fmuladd.f64(double %536, double %537, double %542)
  %544 = fcmp ogt double %543, 0.000000e+00
  br i1 %544, label %545, label %563

545:                                              ; preds = %506
  %546 = load double, ptr %4, align 8, !tbaa !15
  %547 = load double, ptr %73, align 8, !tbaa !15
  %548 = fmul double 2.000000e+00, %547
  %549 = fmul double %546, %548
  %550 = load double, ptr %74, align 8, !tbaa !15
  %551 = fneg double %550
  %552 = load double, ptr %74, align 8, !tbaa !15
  %553 = load double, ptr %74, align 8, !tbaa !15
  %554 = load double, ptr %73, align 8, !tbaa !15
  %555 = fmul double 4.000000e+00, %554
  %556 = load double, ptr %75, align 8, !tbaa !15
  %557 = fmul double %555, %556
  %558 = fneg double %557
  %559 = call double @llvm.fmuladd.f64(double %552, double %553, double %558)
  %560 = call double @sqrt(double noundef %559) #8
  %561 = fadd double %551, %560
  %562 = fdiv double %549, %561
  store double %562, ptr %9, align 8, !tbaa !15
  br label %571

563:                                              ; preds = %506
  %564 = load double, ptr %4, align 8, !tbaa !15
  %565 = load double, ptr %73, align 8, !tbaa !15
  %566 = fmul double 2.000000e+00, %565
  %567 = fmul double %564, %566
  %568 = load double, ptr %74, align 8, !tbaa !15
  %569 = fneg double %568
  %570 = fdiv double %567, %569
  store double %570, ptr %9, align 8, !tbaa !15
  br label %571

571:                                              ; preds = %563, %545
  %572 = load double, ptr %9, align 8, !tbaa !15
  store double %572, ptr %6, align 8, !tbaa !15
  %573 = load double, ptr %6, align 8, !tbaa !15
  %574 = load double, ptr %7, align 8, !tbaa !15
  %575 = fsub double %573, %574
  %576 = load double, ptr %7, align 8, !tbaa !15
  %577 = call noundef double @_ZSt3absd(double noundef %576)
  %578 = load double, ptr %6, align 8, !tbaa !15
  %579 = call noundef double @_ZSt3absd(double noundef %578)
  %580 = fadd double %577, %579
  %581 = fadd double %580, 1.000000e-03
  %582 = fdiv double %575, %581
  %583 = call double @llvm.fabs.f64(double %582)
  %584 = fmul double 2.000000e+00, %583
  store double %584, ptr %5, align 8, !tbaa !15
  %585 = load double, ptr %5, align 8, !tbaa !15
  %586 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8, !tbaa !15
  %587 = fcmp olt double %585, %586
  br i1 %587, label %588, label %589

588:                                              ; preds = %571
  store i32 2, ptr %76, align 4
  br label %590

589:                                              ; preds = %571
  store i32 0, ptr %76, align 4
  br label %590

590:                                              ; preds = %589, %588
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  %591 = load i32, ptr %76, align 4
  switch i32 %591, label %711 [
    i32 0, label %592
    i32 2, label %596
  ]

592:                                              ; preds = %590
  br label %593

593:                                              ; preds = %592
  %594 = load i32, ptr %8, align 4, !tbaa !19
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %8, align 4, !tbaa !19
  br label %92, !llvm.loop !32

596:                                              ; preds = %590, %92
  %597 = load double, ptr %5, align 8, !tbaa !15
  %598 = fcmp olt double %597, 1.000000e-04
  br i1 %598, label %599, label %601

599:                                              ; preds = %596
  %600 = load double, ptr %6, align 8, !tbaa !15
  store double %600, ptr %2, align 8
  store i32 1, ptr %76, align 4
  br label %704

601:                                              ; preds = %596
  %602 = load double, ptr %5, align 8, !tbaa !15
  %603 = fcmp olt double %602, 1.000000e-01
  br i1 %603, label %604, label %617

604:                                              ; preds = %601
  %605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.22)
  %606 = load double, ptr %5, align 8, !tbaa !15
  %607 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %605, double noundef %606)
  %608 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef @.str.23)
  %609 = load double, ptr %6, align 8, !tbaa !15
  %610 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %608, double noundef %609)
  %611 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef @.str.24)
  %612 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %613 = load double, ptr %612, align 8, !tbaa !16
  %614 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %611, double noundef %613)
  %615 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %616 = load double, ptr %6, align 8, !tbaa !15
  store double %616, ptr %2, align 8
  store i32 1, ptr %76, align 4
  br label %704

617:                                              ; preds = %601
  br label %618

618:                                              ; preds = %617
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %620 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %619, ptr noundef @.str.25)
  %621 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %620, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %622 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %621, ptr noundef @.str.26)
  %623 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %623, ptr noundef @.str.27)
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %624, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %625, ptr noundef @.str.28)
  %627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %628 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef @.str.29)
  %629 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %630 = load ptr, ptr %629, align 8, !tbaa !27
  %631 = getelementptr inbounds %class.CornerApex, ptr %630, i64 0
  %632 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK10CornerApex13trappedCornerEv(ptr noundef nonnull align 8 dereferenceable(144) %631)
  %633 = getelementptr inbounds %"struct.std::pair.0", ptr %632, i32 0, i32 0
  %634 = load i32, ptr %633, align 8, !tbaa !33
  %635 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %628, i32 noundef %634)
  %636 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %637 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef @.str.30)
  %638 = load double, ptr %5, align 8, !tbaa !15
  %639 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %637, double noundef %638)
  %640 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %639, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef @.str.31)
  %642 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %643 = load double, ptr %642, align 8, !tbaa !16
  %644 = fmul double %643, 1.800000e+02
  %645 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !15
  %646 = fdiv double %644, %645
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %641, double noundef %646)
  %648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %647, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %649 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %648, ptr noundef @.str.31)
  %650 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 3
  %651 = load double, ptr %650, align 8, !tbaa !16
  %652 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %649, double noundef %651)
  %653 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %652, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %654 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef @.str.31)
  %655 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 4
  %656 = load double, ptr %655, align 8, !tbaa !35
  %657 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %654, double noundef %656)
  %658 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %657, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %659 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef @.str.32)
  %660 = getelementptr inbounds %class.ElemModel, ptr %77, i32 0, i32 5
  %661 = load double, ptr %660, align 8, !tbaa !18
  %662 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %659, double noundef %661)
  %663 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %663, ptr noundef @.str.33)
  %665 = load double, ptr %7, align 8, !tbaa !15
  %666 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %664, double noundef %665)
  %667 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %668 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %667, ptr noundef @.str.34)
  %669 = load double, ptr %6, align 8, !tbaa !15
  %670 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %668, double noundef %669)
  %671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %670, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %672 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %671, ptr noundef @.str.35)
  %673 = getelementptr inbounds %class.VoidElem, ptr %77, i32 0, i32 1
  %674 = load double, ptr %673, align 8, !tbaa !31
  %675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %672, double noundef %674)
  %676 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %677 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %676, ptr noundef @.str.36)
  %678 = load i32, ptr %8, align 4, !tbaa !19
  %679 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %677, i32 noundef %678)
  %680 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %679, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %681 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %680, ptr noundef @.str.37)
  %682 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %683 = load ptr, ptr %682, align 8, !tbaa !27
  %684 = getelementptr inbounds %class.CornerApex, ptr %683, i64 0
  %685 = call noundef double @_ZNK4Apex11advancingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %684)
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %681, double noundef %685)
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %686, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %688 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %687, ptr noundef @.str.38)
  %689 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %690 = load ptr, ptr %689, align 8, !tbaa !27
  %691 = getelementptr inbounds %class.CornerApex, ptr %690, i64 0
  %692 = call noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %691)
  %693 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %688, double noundef %692)
  %694 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %693, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %695 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %694, ptr noundef @.str.38)
  %696 = getelementptr inbounds %class.Polygon, ptr %77, i32 0, i32 3
  %697 = load ptr, ptr %696, align 8, !tbaa !27
  %698 = getelementptr inbounds %class.CornerApex, ptr %697, i64 0
  %699 = call noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %698)
  %700 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %695, double noundef %699)
  %701 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %702 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %701, ptr noundef @.str.25)
  %703 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %702, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  store double 0.000000e+00, ptr %2, align 8
  store i32 1, ptr %76, align 4
  br label %704

704:                                              ; preds = %618, %604, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  %705 = load double, ptr %2, align 8
  ret double %705

706:                                              ; preds = %476
  %707 = load ptr, ptr %34, align 8
  %708 = load i32, ptr %35, align 4
  %709 = insertvalue { ptr, i32 } poison, ptr %707, 0
  %710 = insertvalue { ptr, i32 } %709, i32 %708, 1
  resume { ptr, i32 } %710

711:                                              ; preds = %590
  unreachable
}

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK10CornerApex13trappedCornerEv(ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 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)) #0

; Function Attrs: nounwind
declare double @asin(double noundef) #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11advancingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 32}
!10 = !{!"_ZTS9ElemModel", !11, i64 8, !11, i64 16, !6, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !12, i64 56, !12, i64 57, !12, i64 58, !12, i64 59, !13, i64 60, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !14, i64 120, !14, i64 136}
!11 = !{!"double", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSSt4pairIddE", !11, i64 0, !11, i64 8}
!15 = !{!11, !11, i64 0}
!16 = !{!17, !11, i64 168}
!17 = !{!"_ZTS8VoidElem", !10, i64 0, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176}
!18 = !{!10, !11, i64 40}
!19 = !{!13, !13, i64 0}
!20 = !{!21, !13, i64 184}
!21 = !{!"_ZTS7Polygon", !17, i64 0, !13, i64 184, !22, i64 192, !6, i64 216, !6, i64 224, !26, i64 232, !7, i64 234, !11, i64 240}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"short", !7, i64 0}
!27 = !{!21, !6, i64 216}
!28 = !{!21, !11, i64 240}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!17, !11, i64 152}
!32 = distinct !{!32, !30}
!33 = !{!34, !13, i64 0}
!34 = !{!"_ZTSSt4pairIidE", !13, i64 0, !11, i64 8}
!35 = !{!17, !11, i64 176}


; 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.std::allocator.2" = type { i8 }
%class.CornerApex = type { %class.Apex, ptr, double, double, double, ptr }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair.0" }
%"struct.std::pair.0" = type { i32, double }

@.str = external hidden unnamed_addr constant [11 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZN9ElemModel2PIE = external local_unnamed_addr constant double, align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@_ZN9ElemModel12MAX_NEWT_ITRE = external local_unnamed_addr constant i32, align 4
@__FUNCTION__._ZNK7Polygon26Pc_pistonType_ImbHingCLineEv = external hidden unnamed_addr constant [27 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN9ElemModel7EPSILONE = external local_unnamed_addr constant double, align 8
@.str.22 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.25 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 #0

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

; 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 #0

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 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 dso_local noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #4

; 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 #0

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

declare void @_ZNK10CornerApex18getCApexDistConAngERdS0_dddbbb(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), double noundef, double noundef, double noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_ZNK7Polygon26Pc_pistonType_ImbHingCLineEv(ptr noundef nonnull align 8 dereferenceable(248) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca double, align 8
  %3 = alloca double, align 8
  %4 = alloca %"class.std::__cxx11::basic_string", 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::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator.2", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator.2", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator.2", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator.2", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator.2", align 1
  %23 = getelementptr inbounds i8, ptr %0, i64 32
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  %25 = tail call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %24)
  %26 = fmul double %25, 1.100000e+00
  %27 = getelementptr inbounds i8, ptr %0, i64 168
  %28 = load double, ptr %27, align 8, !tbaa !14
  %29 = tail call double @cos(double noundef %28) #8
  %30 = fmul double %29, 2.000000e+00
  %31 = fmul double %26, %30
  %32 = getelementptr inbounds i8, ptr %0, i64 40
  %33 = load double, ptr %32, align 8, !tbaa !16
  %34 = fdiv double %31, %33
  %35 = load i32, ptr @_ZN9ElemModel12MAX_NEWT_ITRE, align 4, !tbaa !17
  %.not333 = icmp slt i32 %35, 0
  br i1 %.not333, label %.thread, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %1
  %36 = getelementptr inbounds i8, ptr %0, i64 184
  %37 = getelementptr inbounds i8, ptr %0, i64 216
  %38 = getelementptr inbounds i8, ptr %0, i64 192
  %39 = getelementptr inbounds i8, ptr %0, i64 240
  %40 = load double, ptr @_ZN9ElemModel2PIE, align 8
  %41 = fmul double %40, 5.000000e-01
  %42 = getelementptr inbounds i8, ptr %0, i64 152
  %43 = load double, ptr @_ZN9ElemModel7EPSILONE, align 8
  %44 = add nuw i32 %35, 1
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %201
  %.0142335 = phi double [ %34, %.preheader.lr.ph ], [ %191, %201 ]
  %.0205334 = phi i32 [ 0, %.preheader.lr.ph ], [ %202, %201 ]
  %45 = load i32, ptr %36, align 8, !tbaa !18
  %46 = icmp sgt i32 %45, 0
  br i1 %46, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %47 = fdiv double %25, %.0142335
  br label %69

._crit_edge:                                      ; preds = %181, %.preheader
  %.0202.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.1203, %181 ]
  %.0200.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.1201, %181 ]
  %.0198.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.1199, %181 ]
  %.0196.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.1197, %181 ]
  %48 = fneg double %.0200.lcssa
  %49 = call double @llvm.fmuladd.f64(double %.0198.lcssa, double 2.000000e+00, double %48)
  %50 = load double, ptr %27, align 8, !tbaa !14
  %51 = call double @cos(double noundef %50) #8
  %52 = load double, ptr %32, align 8, !tbaa !16
  %53 = load double, ptr %42, align 8, !tbaa !25
  %54 = fmul double %53, 2.000000e+00
  %55 = fdiv double %52, %54
  %56 = fmul double %.0196.lcssa, -2.000000e+00
  %57 = call double @llvm.fmuladd.f64(double %51, double %55, double %56)
  %58 = fadd double %.0202.lcssa, %57
  %59 = fneg double %52
  %60 = fmul double %52, %59
  %61 = fmul double %53, 4.000000e+00
  %62 = fdiv double %60, %61
  %63 = fmul double %49, -4.000000e+00
  %64 = fmul double %63, %62
  %65 = call double @llvm.fmuladd.f64(double %58, double %58, double %64)
  %66 = fcmp ogt double %65, 0.000000e+00
  %67 = fmul double %49, 2.000000e+00
  %68 = fmul double %25, %67
  br i1 %66, label %185, label %188

69:                                               ; preds = %.lr.ph, %181
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %181 ]
  %.0196328 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1197, %181 ]
  %.0198327 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1199, %181 ]
  %.0200326 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1201, %181 ]
  %.0202325 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1203, %181 ]
  %70 = load ptr, ptr %37, align 8, !tbaa !26
  %71 = getelementptr inbounds %class.CornerApex, ptr %70, i64 %indvars.iv
  %72 = call noundef zeroext i1 @_ZNK10CornerApex12cornerExistsEv(ptr noundef nonnull align 8 dereferenceable(144) %71)
  br i1 %72, label %73, label %181

73:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %74 = load double, ptr %27, align 8, !tbaa !14
  store double %74, ptr %3, align 8, !tbaa !27
  %75 = load ptr, ptr %37, align 8, !tbaa !26
  %76 = getelementptr inbounds %class.CornerApex, ptr %75, i64 %indvars.iv
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #8
  %78 = load double, ptr %77, align 8, !tbaa !27
  %79 = load ptr, ptr %23, align 8, !tbaa !5
  %80 = call noundef double @_ZNK7GNMData7sigmaOWEv(ptr noundef nonnull align 8 dereferenceable(984) %79)
  call void @_ZNK10CornerApex18getCApexDistConAngERdS0_dddbbb(ptr noundef nonnull align 8 dereferenceable(144) %76, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, double noundef %.0142335, double noundef %78, double noundef %80, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false)
  %81 = load double, ptr %2, align 8, !tbaa !27
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #8
  %83 = load double, ptr %82, align 8, !tbaa !27
  %84 = call double @sin(double noundef %83) #8
  %85 = fmul double %81, %84
  %86 = fmul double %.0142335, %85
  %87 = fdiv double %86, %25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #8
  %88 = call double @llvm.fabs.f64(double %87)
  %or.cond = fcmp ugt double %88, 1.000000e+00
  br i1 %or.cond, label %89, label %104

89:                                               ; preds = %73
  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
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %90 unwind label %126

90:                                               ; preds = %89
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.1)
          to label %91 unwind label %128

91:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @__FUNCTION__._ZNK7Polygon26Pc_pistonType_ImbHingCLineEv, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %92 unwind label %130

92:                                               ; preds = %91
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %93 unwind label %132

93:                                               ; preds = %92
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(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 @.str.2)
          to label %94 unwind label %134

94:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %95 unwind label %136

95:                                               ; preds = %94
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %14)
          to label %96 unwind label %138

96:                                               ; preds = %95
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.4)
          to label %97 unwind label %140

97:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #8
  store i32 342, ptr %17, align 4, !tbaa !17
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %98 unwind label %142

98:                                               ; preds = %97
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %99 unwind label %144

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %100 unwind label %146

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.15, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %101 unwind label %148

101:                                              ; preds = %100
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %102 unwind label %150

102:                                              ; preds = %101
  %103 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %4, ptr noundef nonnull %18, i32 noundef 0)
          to label %.critedge232 unwind label %152

104:                                              ; preds = %73
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  br label %.critedge254

.critedge232:                                     ; preds = %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  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) %14) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, double noundef %87)
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull @.str.16)
  %107 = load double, ptr %2, align 8, !tbaa !27
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %106, double noundef %107)
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @.str.17)
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #8
  %111 = load double, ptr %110, align 8, !tbaa !27
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %109, double noundef %111)
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull @.str.18)
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %113, double noundef %47)
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19)
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %116, double noundef %.0142335)
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.20)
  %120 = load double, ptr %39, align 8, !tbaa !28
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %119, double noundef %120)
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.21)
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %123, double noundef %47)
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.critedge254

126:                                              ; preds = %89
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %166

128:                                              ; preds = %90
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %165

130:                                              ; preds = %91
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %164

132:                                              ; preds = %92
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %163

134:                                              ; preds = %93
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %162

136:                                              ; preds = %94
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %161

138:                                              ; preds = %95
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %160

140:                                              ; preds = %96
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %159

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

144:                                              ; preds = %98
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %157

146:                                              ; preds = %99
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %156

148:                                              ; preds = %100
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %155

150:                                              ; preds = %101
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %154

152:                                              ; preds = %102
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %154

154:                                              ; preds = %150, %152
  %.pn = phi { ptr, i32 } [ %153, %152 ], [ %151, %150 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %155

155:                                              ; preds = %148, %154
  %.pn.pn = phi { ptr, i32 } [ %.pn, %154 ], [ %149, %148 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %156

156:                                              ; preds = %146, %155
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %155 ], [ %147, %146 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  br label %157

157:                                              ; preds = %144, %156
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %156 ], [ %145, %144 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %158

158:                                              ; preds = %157, %142
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %157 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  br label %159

159:                                              ; preds = %140, %158
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %158 ], [ %141, %140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %160

160:                                              ; preds = %138, %159
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %159 ], [ %139, %138 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %161

161:                                              ; preds = %136, %160
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %160 ], [ %137, %136 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %162

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

163:                                              ; preds = %132, %162
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %162 ], [ %133, %132 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %164

164:                                              ; preds = %130, %163
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %163 ], [ %131, %130 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %165

165:                                              ; preds = %128, %164
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %164 ], [ %129, %128 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %166

166:                                              ; preds = %126, %165
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %165 ], [ %127, %126 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #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
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

.critedge254:                                     ; preds = %104, %.critedge232
  %167 = load double, ptr %2, align 8, !tbaa !27
  %168 = load double, ptr %3, align 8, !tbaa !27
  %169 = call double @cos(double noundef %168) #8
  %170 = call double @llvm.fmuladd.f64(double %167, double %169, double %.0202325)
  %171 = load double, ptr %3, align 8, !tbaa !27
  %172 = fsub double %41, %171
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %indvars.iv) #8
  %174 = load double, ptr %173, align 8, !tbaa !27
  %175 = fsub double %172, %174
  %176 = fadd double %.0200326, %175
  %177 = call double @asin(double noundef %87) #8
  %178 = fadd double %.0198327, %177
  %179 = load double, ptr %2, align 8, !tbaa !27
  %180 = fadd double %.0196328, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  br label %181

181:                                              ; preds = %69, %.critedge254
  %.1203 = phi double [ %170, %.critedge254 ], [ %.0202325, %69 ]
  %.1201 = phi double [ %176, %.critedge254 ], [ %.0200326, %69 ]
  %.1199 = phi double [ %178, %.critedge254 ], [ %.0198327, %69 ]
  %.1197 = phi double [ %180, %.critedge254 ], [ %.0196328, %69 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %182 = load i32, ptr %36, align 8, !tbaa !18
  %183 = sext i32 %182 to i64
  %184 = icmp slt i64 %indvars.iv.next, %183
  br i1 %184, label %69, label %._crit_edge, !llvm.loop !29

185:                                              ; preds = %._crit_edge
  %186 = call double @sqrt(double noundef %65) #8
  %187 = fsub double %186, %58
  br label %190

188:                                              ; preds = %._crit_edge
  %189 = fneg double %58
  br label %190

190:                                              ; preds = %188, %185
  %.sink = phi double [ %189, %188 ], [ %187, %185 ]
  %191 = fdiv double %68, %.sink
  %192 = fsub double %191, %.0142335
  %193 = call noundef double @_ZSt3absd(double noundef %.0142335)
  %194 = call noundef double @_ZSt3absd(double noundef %191)
  %195 = fadd double %193, %194
  %196 = fadd double %195, 1.000000e-03
  %197 = fdiv double %192, %196
  %198 = call double @llvm.fabs.f64(double %197)
  %199 = fmul double %198, 2.000000e+00
  %200 = fcmp olt double %199, %43
  br i1 %200, label %._crit_edge336, label %201

201:                                              ; preds = %190
  %202 = add nuw i32 %.0205334, 1
  %exitcond.not = icmp eq i32 %.0205334, %35
  br i1 %exitcond.not, label %._crit_edge336, label %.preheader, !llvm.loop !31

._crit_edge336:                                   ; preds = %201, %190
  %.0205.lcssa = phi i32 [ %44, %201 ], [ %.0205334, %190 ]
  %203 = fcmp olt double %199, 1.000000e-04
  br i1 %203, label %284, label %204

204:                                              ; preds = %._crit_edge336
  %205 = fcmp olt double %199, 1.000000e-01
  br i1 %205, label %206, label %.thread

206:                                              ; preds = %204
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.22)
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %207, double noundef %199)
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull @.str.23)
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %209, double noundef %191)
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @.str.24)
  %212 = load double, ptr %27, align 8, !tbaa !14
  %213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %211, double noundef %212)
  br label %.sink.split

.thread:                                          ; preds = %1, %204
  %.0205.lcssa365376 = phi i32 [ %.0205.lcssa, %204 ], [ 0, %1 ]
  %.1194366375 = phi double [ %.0142335, %204 ], [ undef, %1 ]
  %.1143367374 = phi double [ %191, %204 ], [ %34, %1 ]
  %.1368373 = phi double [ %199, %204 ], [ 1.000000e+03, %1 ]
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull @.str.25)
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull @.str.26)
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @.str.27)
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %219, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull @.str.28)
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull @.str.29)
  %224 = getelementptr inbounds i8, ptr %0, i64 216
  %225 = load ptr, ptr %224, align 8, !tbaa !26
  %226 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK10CornerApex13trappedCornerEv(ptr noundef nonnull align 8 dereferenceable(144) %225)
  %227 = load i32, ptr %226, align 8, !tbaa !32
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %223, i32 noundef %227)
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull @.str.30)
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %230, double noundef %.1368373)
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull @.str.31)
  %234 = load double, ptr %27, align 8, !tbaa !14
  %235 = fmul double %234, 1.800000e+02
  %236 = load double, ptr @_ZN9ElemModel2PIE, align 8, !tbaa !27
  %237 = fdiv double %235, %236
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %233, double noundef %237)
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull @.str.31)
  %241 = load double, ptr %27, align 8, !tbaa !14
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %240, double noundef %241)
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull @.str.31)
  %245 = getelementptr inbounds i8, ptr %0, i64 176
  %246 = load double, ptr %245, align 8, !tbaa !34
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %244, double noundef %246)
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull @.str.32)
  %250 = load double, ptr %32, align 8, !tbaa !16
  %251 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %249, double noundef %250)
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull @.str.33)
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %253, double noundef %.1194366375)
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull @.str.34)
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %256, double noundef %.1143367374)
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull @.str.35)
  %260 = getelementptr inbounds i8, ptr %0, i64 152
  %261 = load double, ptr %260, align 8, !tbaa !25
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %259, double noundef %261)
  %263 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull @.str.36)
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %264, i32 noundef %.0205.lcssa365376)
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull @.str.37)
  %268 = load ptr, ptr %224, align 8, !tbaa !26
  %269 = call noundef double @_ZNK4Apex11advancingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %268)
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %267, double noundef %269)
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull @.str.38)
  %273 = load ptr, ptr %224, align 8, !tbaa !26
  %274 = call noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104) %273)
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %272, double noundef %274)
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull @.str.38)
  %278 = load ptr, ptr %224, align 8, !tbaa !26
  %279 = call noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %278)
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %277, double noundef %279)
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull @.str.25)
  br label %.sink.split

.sink.split:                                      ; preds = %206, %.thread
  %.sink391 = phi ptr [ %282, %.thread ], [ %213, %206 ]
  %.0140.ph = phi double [ 0.000000e+00, %.thread ], [ %191, %206 ]
  %283 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %.sink391, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %284

284:                                              ; preds = %.sink.split, %._crit_edge336
  %.0140 = phi double [ %191, %._crit_edge336 ], [ %.0140.ph, %.sink.split ]
  ret double %.0140
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK10CornerApex13trappedCornerEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #6

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

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

; 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 #3 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)) #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @asin(double noundef) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11advancingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK4Apex11receedingPcEv(ptr noundef nonnull align 8 dereferenceable(104)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2 align 2

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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, !10, i64 32}
!6 = !{!"_ZTS9ElemModel", !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !11, i64 56, !11, i64 57, !11, i64 58, !11, i64 59, !12, i64 60, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !13, i64 120, !13, i64 136}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTSSt4pairIddE", !7, i64 0, !7, i64 8}
!14 = !{!15, !7, i64 168}
!15 = !{!"_ZTS8VoidElem", !6, i64 0, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176}
!16 = !{!6, !7, i64 40}
!17 = !{!12, !12, i64 0}
!18 = !{!19, !12, i64 184}
!19 = !{!"_ZTS7Polygon", !15, i64 0, !12, i64 184, !20, i64 192, !10, i64 216, !10, i64 224, !24, i64 232, !8, i64 234, !7, i64 240}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!24 = !{!"short", !8, i64 0}
!25 = !{!15, !7, i64 152}
!26 = !{!19, !10, i64 216}
!27 = !{!7, !7, i64 0}
!28 = !{!19, !7, i64 240}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = !{!33, !12, i64 0}
!33 = !{!"_ZTSSt4pairIidE", !12, i64 0, !7, i64 8}
!34 = !{!15, !7, i64 176}


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