; LLVM IR from ImperialCollegeLondon/pnflow :: src/pnm/pnflow/polygon/layerApex.ll (ZN9LayerApex12createOLayerEddddddb)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Apex = type { ptr, i8, double, double, ptr, i32, double, double, double, double, i8, i8, i8, i8, %"struct.std::pair" }
%"struct.std::pair" = type { i32, double }
%class.LayerApex = type { %class.Apex, i32, ptr, double, ptr, double }

@_ZN4Apex2PIE = external constant double, align 8
@.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 [99 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
@__FUNCTION__._ZN9LayerApex12createOLayerEddddddb = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

; Function Attrs: nounwind
declare double @cos(double noundef) #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) #2

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress 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)) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152)) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN9LayerApex12createOLayerEddddddb(ptr noundef nonnull align 8 dereferenceable(144) %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, i1 noundef zeroext %7) #4 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca i1, align 1
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i8, align 1
  %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", 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", 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", 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", 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", 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 i32, align 4
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca i1, align 1
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca i1, align 1
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca i1, align 1
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca i1, align 1
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca i1, align 1
  %86 = alloca %"class.std::__cxx11::basic_string", align 8
  %87 = alloca i1, align 1
  %88 = alloca %"class.std::allocator", align 1
  %89 = alloca i1, align 1
  %90 = alloca i1, align 1
  %91 = alloca i1, align 1
  %92 = alloca i1, align 1
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca i1, align 1
  %95 = alloca %"class.std::allocator", align 1
  %96 = alloca i1, align 1
  %97 = alloca i1, align 1
  %98 = alloca i1, align 1
  %99 = alloca i1, align 1
  %100 = alloca i1, align 1
  %101 = alloca %"class.std::__cxx11::basic_string", align 8
  %102 = alloca i1, align 1
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca i1, align 1
  %105 = alloca i1, align 1
  %106 = alloca i1, align 1
  %107 = alloca i1, align 1
  %108 = alloca i1, align 1
  %109 = alloca %"class.std::__cxx11::basic_string", align 8
  %110 = alloca i1, align 1
  %111 = alloca i32, align 4
  %112 = alloca i1, align 1
  %113 = alloca i1, align 1
  %114 = alloca %"class.std::__cxx11::basic_string", align 8
  %115 = alloca %"class.std::__cxx11::basic_string", align 8
  %116 = alloca i1, align 1
  %117 = alloca %"class.std::allocator", align 1
  %118 = alloca i1, align 1
  %119 = alloca i1, align 1
  %120 = alloca i1, align 1
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca i1, align 1
  %123 = alloca %"class.std::allocator", align 1
  %124 = alloca i1, align 1
  %125 = alloca i1, align 1
  %126 = alloca i1, align 1
  %127 = alloca i1, align 1
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca i1, align 1
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca i1, align 1
  %133 = alloca %"class.std::__cxx11::basic_string", align 8
  %134 = alloca i1, align 1
  %135 = alloca %"class.std::__cxx11::basic_string", align 8
  %136 = alloca i1, align 1
  %137 = alloca %"class.std::__cxx11::basic_string", align 8
  %138 = alloca i1, align 1
  %139 = alloca %"class.std::__cxx11::basic_string", align 8
  %140 = alloca i1, align 1
  %141 = alloca %"class.std::allocator", align 1
  %142 = alloca i1, align 1
  %143 = alloca i1, align 1
  %144 = alloca i1, align 1
  %145 = alloca i1, align 1
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca i1, align 1
  %148 = alloca %"class.std::allocator", align 1
  %149 = alloca i1, align 1
  %150 = alloca i1, align 1
  %151 = alloca i1, align 1
  %152 = alloca i1, align 1
  %153 = alloca i1, align 1
  %154 = alloca %"class.std::__cxx11::basic_string", align 8
  %155 = alloca i1, align 1
  %156 = alloca %"class.std::allocator", align 1
  %157 = alloca i1, align 1
  %158 = alloca i1, align 1
  %159 = alloca i1, align 1
  %160 = alloca i1, align 1
  %161 = alloca i1, align 1
  %162 = alloca %"class.std::__cxx11::basic_string", align 8
  %163 = alloca i1, align 1
  %164 = alloca i32, align 4
  %165 = alloca i1, align 1
  %166 = alloca i1, align 1
  %167 = alloca %"class.std::__cxx11::basic_string", align 8
  %168 = alloca %"class.std::__cxx11::basic_string", align 8
  %169 = alloca i1, align 1
  %170 = alloca %"class.std::allocator", align 1
  %171 = alloca i1, align 1
  %172 = alloca i1, align 1
  %173 = alloca i1, align 1
  %174 = alloca %"class.std::__cxx11::basic_string", align 8
  %175 = alloca i1, align 1
  %176 = alloca %"class.std::allocator", align 1
  %177 = alloca i1, align 1
  %178 = alloca i1, align 1
  %179 = alloca i1, align 1
  %180 = alloca i1, align 1
  store ptr %0, ptr %10, align 8, !tbaa !5
  store double %1, ptr %11, align 8, !tbaa !9
  store double %2, ptr %12, align 8, !tbaa !9
  store double %3, ptr %13, align 8, !tbaa !9
  store double %4, ptr %14, align 8, !tbaa !9
  store double %5, ptr %15, align 8, !tbaa !9
  store double %6, ptr %16, align 8, !tbaa !9
  %181 = zext i1 %7 to i8
  store i8 %181, ptr %17, align 1, !tbaa !11
  %182 = load ptr, ptr %10, align 8
  %183 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  %184 = load i8, ptr %183, align 2, !tbaa !13, !range !17, !noundef !18
  %185 = trunc i8 %184 to i1
  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) #5
  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 %185, label %186, label %202

186:                                              ; preds = %8
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #5
  store i1 true, ptr %20, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #5
  store i1 true, ptr %22, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  store i1 true, ptr %24, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #5
  store i1 true, ptr %26, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #5
  store i1 true, ptr %28, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  store i1 true, ptr %30, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #5
  store i1 true, ptr %32, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  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 %187 unwind label %336

187:                                              ; preds = %186
  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 %188 unwind label %340

188:                                              ; preds = %187
  store i1 true, ptr %37, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #5
  store i1 true, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #5
  store i1 true, ptr %41, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  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__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %189 unwind label %344

189:                                              ; preds = %188
  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 %190 unwind label %348

190:                                              ; preds = %189
  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 %191 unwind label %352

191:                                              ; preds = %190
  store i1 true, ptr %45, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #5
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #5
  store i1 true, ptr %49, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  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 %192 unwind label %356

192:                                              ; preds = %191
  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 %193 unwind label %360

193:                                              ; preds = %192
  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 %194 unwind label %364

194:                                              ; preds = %193
  store i1 true, ptr %53, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #5
  store i1 true, ptr %55, align 1
  store i32 181, 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 %195 unwind label %368

195:                                              ; preds = %194
  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 %196 unwind label %372

196:                                              ; preds = %195
  store i1 true, ptr %58, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #5
  store i1 true, ptr %61, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #5
  store i1 true, ptr %63, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #5
  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 %197 unwind label %376

197:                                              ; preds = %196
  store i1 true, ptr %65, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #5
  store i1 true, ptr %67, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #5
  store i1 true, ptr %69, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #5
  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.10, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %198 unwind label %380

198:                                              ; preds = %197
  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 %199 unwind label %384

199:                                              ; preds = %198
  store i1 true, ptr %72, align 1
  %200 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %18, ptr noundef %59, i32 noundef 0)
          to label %201 unwind label %388

201:                                              ; preds = %199
  br label %202

202:                                              ; preds = %201, %8
  %203 = phi i1 [ true, %8 ], [ %200, %201 ]
  %204 = xor i1 %203, true
  %205 = load i1, ptr %72, align 1
  br i1 %205, label %206, label %207

206:                                              ; preds = %202
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  br label %207

207:                                              ; preds = %206, %202
  %208 = load i1, ptr %71, align 1
  br i1 %208, label %209, label %210

209:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #5
  br label %210

210:                                              ; preds = %209, %207
  %211 = load i1, ptr %70, align 1
  br i1 %211, label %212, label %213

212:                                              ; preds = %210
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #5
  br label %213

213:                                              ; preds = %212, %210
  %214 = load i1, ptr %69, align 1
  br i1 %214, label %215, label %216

215:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #5
  br label %216

216:                                              ; preds = %215, %213
  %217 = load i1, ptr %67, align 1
  br i1 %217, label %218, label %219

218:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #5
  br label %219

219:                                              ; preds = %218, %216
  %220 = load i1, ptr %65, align 1
  br i1 %220, label %221, label %222

221:                                              ; preds = %219
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #5
  br label %222

222:                                              ; preds = %221, %219
  %223 = load i1, ptr %64, align 1
  br i1 %223, label %224, label %225

224:                                              ; preds = %222
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #5
  br label %225

225:                                              ; preds = %224, %222
  %226 = load i1, ptr %63, align 1
  br i1 %226, label %227, label %228

227:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #5
  br label %228

228:                                              ; preds = %227, %225
  %229 = load i1, ptr %61, align 1
  br i1 %229, label %230, label %231

230:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #5
  br label %231

231:                                              ; preds = %230, %228
  %232 = load i1, ptr %58, align 1
  br i1 %232, label %233, label %234

233:                                              ; preds = %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #5
  br label %234

234:                                              ; preds = %233, %231
  %235 = load i1, ptr %57, align 1
  br i1 %235, label %236, label %237

236:                                              ; preds = %234
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #5
  br label %237

237:                                              ; preds = %236, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  %238 = load i1, ptr %55, align 1
  br i1 %238, label %239, label %240

239:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #5
  br label %240

240:                                              ; preds = %239, %237
  %241 = load i1, ptr %53, align 1
  br i1 %241, label %242, label %243

242:                                              ; preds = %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  br label %243

243:                                              ; preds = %242, %240
  %244 = load i1, ptr %52, align 1
  br i1 %244, label %245, label %246

245:                                              ; preds = %243
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %246

246:                                              ; preds = %245, %243
  %247 = load i1, ptr %51, align 1
  br i1 %247, label %248, label %249

248:                                              ; preds = %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #5
  br label %249

249:                                              ; preds = %248, %246
  %250 = load i1, ptr %50, align 1
  br i1 %250, label %251, label %252

251:                                              ; preds = %249
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  br label %252

252:                                              ; preds = %251, %249
  %253 = load i1, ptr %49, align 1
  br i1 %253, label %254, label %255

254:                                              ; preds = %252
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #5
  br label %255

255:                                              ; preds = %254, %252
  %256 = load i1, ptr %47, align 1
  br i1 %256, label %257, label %258

257:                                              ; preds = %255
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #5
  br label %258

258:                                              ; preds = %257, %255
  %259 = load i1, ptr %45, align 1
  br i1 %259, label %260, label %261

260:                                              ; preds = %258
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %261

261:                                              ; preds = %260, %258
  %262 = load i1, ptr %44, align 1
  br i1 %262, label %263, label %264

263:                                              ; preds = %261
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  br label %264

264:                                              ; preds = %263, %261
  %265 = load i1, ptr %43, align 1
  br i1 %265, label %266, label %267

266:                                              ; preds = %264
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #5
  br label %267

267:                                              ; preds = %266, %264
  %268 = load i1, ptr %42, align 1
  br i1 %268, label %269, label %270

269:                                              ; preds = %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  br label %270

270:                                              ; preds = %269, %267
  %271 = load i1, ptr %41, align 1
  br i1 %271, label %272, label %273

272:                                              ; preds = %270
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #5
  br label %273

273:                                              ; preds = %272, %270
  %274 = load i1, ptr %39, align 1
  br i1 %274, label %275, label %276

275:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #5
  br label %276

276:                                              ; preds = %275, %273
  %277 = load i1, ptr %37, align 1
  br i1 %277, label %278, label %279

278:                                              ; preds = %276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %279

279:                                              ; preds = %278, %276
  %280 = load i1, ptr %36, align 1
  br i1 %280, label %281, label %282

281:                                              ; preds = %279
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %282

282:                                              ; preds = %281, %279
  %283 = load i1, ptr %33, align 1
  br i1 %283, label %284, label %285

284:                                              ; preds = %282
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  br label %285

285:                                              ; preds = %284, %282
  %286 = load i1, ptr %32, align 1
  br i1 %286, label %287, label %288

287:                                              ; preds = %285
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %288

288:                                              ; preds = %287, %285
  %289 = load i1, ptr %30, align 1
  br i1 %289, label %290, label %291

290:                                              ; preds = %288
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %291

291:                                              ; preds = %290, %288
  %292 = load i1, ptr %28, align 1
  br i1 %292, label %293, label %294

293:                                              ; preds = %291
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %294

294:                                              ; preds = %293, %291
  %295 = load i1, ptr %26, align 1
  br i1 %295, label %296, label %297

296:                                              ; preds = %294
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  br label %297

297:                                              ; preds = %296, %294
  %298 = load i1, ptr %24, align 1
  br i1 %298, label %299, label %300

299:                                              ; preds = %297
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %300

300:                                              ; preds = %299, %297
  %301 = load i1, ptr %22, align 1
  br i1 %301, label %302, label %303

302:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  br label %303

303:                                              ; preds = %302, %300
  %304 = load i1, ptr %20, align 1
  br i1 %304, label %305, label %306

305:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  br label %306

306:                                              ; preds = %305, %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  %307 = load i8, ptr %17, align 1, !tbaa !11, !range !17, !noundef !18
  %308 = trunc i8 %307 to i1
  br i1 %308, label %309, label %311

309:                                              ; preds = %306
  %310 = load double, ptr %12, align 8, !tbaa !9
  br label %313

311:                                              ; preds = %306
  %312 = load double, ptr %13, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi double [ %310, %309 ], [ %312, %311 ]
  store double %314, ptr %73, align 8, !tbaa !9
  %315 = load double, ptr %73, align 8, !tbaa !9
  %316 = load double, ptr @_ZN4Apex2PIE, align 8, !tbaa !9
  %317 = fdiv double %316, 2.000000e+00
  %318 = load double, ptr %15, align 8, !tbaa !9
  %319 = fadd double %317, %318
  %320 = fcmp ogt double %315, %319
  br i1 %320, label %321, label %325

321:                                              ; preds = %313
  %322 = load double, ptr %73, align 8, !tbaa !9
  %323 = load double, ptr %14, align 8, !tbaa !9
  %324 = fcmp ogt double %322, %323
  br label %325

325:                                              ; preds = %321, %313
  %326 = phi i1 [ false, %313 ], [ %324, %321 ]
  %327 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  %328 = zext i1 %326 to i8
  store i8 %328, ptr %327, align 2, !tbaa !13
  %329 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 2
  %330 = load ptr, ptr %329, align 8, !tbaa !20
  %331 = call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %330)
  %332 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %331)
  %333 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 9
  store double %332, ptr %333, align 8, !tbaa !22
  %334 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %182)
  br i1 %334, label %507, label %335

335:                                              ; preds = %325
  store i1 false, ptr %9, align 1
  store i32 1, ptr %74, align 4
  br label %1171

336:                                              ; preds = %186
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %34, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %35, align 4
  br label %482

340:                                              ; preds = %187
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %34, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %35, align 4
  br label %478

344:                                              ; preds = %188
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %34, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %35, align 4
  br label %465

348:                                              ; preds = %189
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %34, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %35, align 4
  br label %461

352:                                              ; preds = %190
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %34, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %35, align 4
  br label %457

356:                                              ; preds = %191
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %34, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %35, align 4
  br label %444

360:                                              ; preds = %192
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %34, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %35, align 4
  br label %440

364:                                              ; preds = %193
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %34, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %35, align 4
  br label %436

368:                                              ; preds = %194
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %34, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %35, align 4
  br label %429

372:                                              ; preds = %195
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %34, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %35, align 4
  br label %425

376:                                              ; preds = %196
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %34, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %35, align 4
  br label %412

380:                                              ; preds = %197
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %34, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %35, align 4
  br label %399

384:                                              ; preds = %198
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %34, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %35, align 4
  br label %395

388:                                              ; preds = %199
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %34, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %35, align 4
  %392 = load i1, ptr %72, align 1
  br i1 %392, label %393, label %394

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

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

395:                                              ; preds = %394, %384
  %396 = load i1, ptr %71, 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) %66) #5
  br label %398

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

399:                                              ; preds = %398, %380
  %400 = load i1, ptr %70, align 1
  br i1 %400, label %401, label %402

401:                                              ; preds = %399
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #5
  br label %402

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

404:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #5
  br label %405

405:                                              ; preds = %404, %402
  %406 = load i1, ptr %67, align 1
  br i1 %406, label %407, label %408

407:                                              ; preds = %405
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #5
  br label %408

408:                                              ; preds = %407, %405
  %409 = load i1, ptr %65, align 1
  br i1 %409, label %410, label %411

410:                                              ; preds = %408
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #5
  br label %411

411:                                              ; preds = %410, %408
  br label %412

412:                                              ; preds = %411, %376
  %413 = load i1, ptr %64, align 1
  br i1 %413, label %414, label %415

414:                                              ; preds = %412
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #5
  br label %415

415:                                              ; preds = %414, %412
  %416 = load i1, ptr %63, align 1
  br i1 %416, label %417, label %418

417:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #5
  br label %418

418:                                              ; preds = %417, %415
  %419 = load i1, ptr %61, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #5
  br label %421

421:                                              ; preds = %420, %418
  %422 = load i1, ptr %58, align 1
  br i1 %422, label %423, label %424

423:                                              ; preds = %421
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #5
  br label %424

424:                                              ; preds = %423, %421
  br label %425

425:                                              ; preds = %424, %372
  %426 = load i1, ptr %57, align 1
  br i1 %426, label %427, label %428

427:                                              ; preds = %425
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #5
  br label %428

428:                                              ; preds = %427, %425
  br label %429

429:                                              ; preds = %428, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  %430 = load i1, ptr %55, align 1
  br i1 %430, label %431, label %432

431:                                              ; preds = %429
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #5
  br label %432

432:                                              ; preds = %431, %429
  %433 = load i1, ptr %53, align 1
  br i1 %433, label %434, label %435

434:                                              ; preds = %432
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  br label %435

435:                                              ; preds = %434, %432
  br label %436

436:                                              ; preds = %435, %364
  %437 = load i1, ptr %52, align 1
  br i1 %437, label %438, label %439

438:                                              ; preds = %436
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %439

439:                                              ; preds = %438, %436
  br label %440

440:                                              ; preds = %439, %360
  %441 = load i1, ptr %51, align 1
  br i1 %441, label %442, label %443

442:                                              ; preds = %440
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #5
  br label %443

443:                                              ; preds = %442, %440
  br label %444

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

446:                                              ; preds = %444
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #5
  br label %447

447:                                              ; preds = %446, %444
  %448 = load i1, ptr %49, align 1
  br i1 %448, label %449, label %450

449:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #5
  br label %450

450:                                              ; preds = %449, %447
  %451 = load i1, ptr %47, align 1
  br i1 %451, label %452, label %453

452:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #5
  br label %453

453:                                              ; preds = %452, %450
  %454 = load i1, ptr %45, align 1
  br i1 %454, label %455, label %456

455:                                              ; preds = %453
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %456

456:                                              ; preds = %455, %453
  br label %457

457:                                              ; preds = %456, %352
  %458 = load i1, ptr %44, align 1
  br i1 %458, label %459, label %460

459:                                              ; preds = %457
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  br label %460

460:                                              ; preds = %459, %457
  br label %461

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

463:                                              ; preds = %461
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #5
  br label %464

464:                                              ; preds = %463, %461
  br label %465

465:                                              ; preds = %464, %344
  %466 = load i1, ptr %42, align 1
  br i1 %466, label %467, label %468

467:                                              ; preds = %465
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #5
  br label %468

468:                                              ; preds = %467, %465
  %469 = load i1, ptr %41, align 1
  br i1 %469, label %470, label %471

470:                                              ; preds = %468
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #5
  br label %471

471:                                              ; preds = %470, %468
  %472 = load i1, ptr %39, align 1
  br i1 %472, label %473, label %474

473:                                              ; preds = %471
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #5
  br label %474

474:                                              ; preds = %473, %471
  %475 = load i1, ptr %37, align 1
  br i1 %475, label %476, label %477

476:                                              ; preds = %474
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #5
  br label %477

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

478:                                              ; preds = %477, %340
  %479 = load i1, ptr %36, align 1
  br i1 %479, label %480, label %481

480:                                              ; preds = %478
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %481

481:                                              ; preds = %480, %478
  br label %482

482:                                              ; preds = %481, %336
  %483 = load i1, ptr %33, align 1
  br i1 %483, label %484, label %485

484:                                              ; preds = %482
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #5
  br label %485

485:                                              ; preds = %484, %482
  %486 = load i1, ptr %32, align 1
  br i1 %486, label %487, label %488

487:                                              ; preds = %485
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #5
  br label %488

488:                                              ; preds = %487, %485
  %489 = load i1, ptr %30, align 1
  br i1 %489, label %490, label %491

490:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  br label %491

491:                                              ; preds = %490, %488
  %492 = load i1, ptr %28, align 1
  br i1 %492, label %493, label %494

493:                                              ; preds = %491
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #5
  br label %494

494:                                              ; preds = %493, %491
  %495 = load i1, ptr %26, align 1
  br i1 %495, label %496, label %497

496:                                              ; preds = %494
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  br label %497

497:                                              ; preds = %496, %494
  %498 = load i1, ptr %24, align 1
  br i1 %498, label %499, label %500

499:                                              ; preds = %497
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  br label %500

500:                                              ; preds = %499, %497
  %501 = load i1, ptr %22, align 1
  br i1 %501, label %502, label %503

502:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #5
  br label %503

503:                                              ; preds = %502, %500
  %504 = load i1, ptr %20, align 1
  br i1 %504, label %505, label %506

505:                                              ; preds = %503
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #5
  br label %506

506:                                              ; preds = %505, %503
  br label %1174

507:                                              ; preds = %325
  %508 = load double, ptr %16, align 8, !tbaa !9
  %509 = load double, ptr %11, align 8, !tbaa !9
  %510 = fdiv double %508, %509
  %511 = load double, ptr %73, align 8, !tbaa !9
  %512 = load double, ptr %15, align 8, !tbaa !9
  %513 = fsub double %511, %512
  %514 = call double @cos(double noundef %513) #5
  %515 = fmul double %510, %514
  %516 = load double, ptr %15, align 8, !tbaa !9
  %517 = call double @sin(double noundef %516) #5
  %518 = fdiv double %515, %517
  %519 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  store double %518, ptr %519, align 8, !tbaa !23
  %520 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  %521 = load double, ptr %520, align 8, !tbaa !23
  %522 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 4
  %523 = load ptr, ptr %522, align 8, !tbaa !24
  %524 = call noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %523)
  %525 = fcmp olt double %521, %524
  br i1 %525, label %526, label %529

526:                                              ; preds = %507
  %527 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  store double -1.000000e+00, ptr %527, align 8, !tbaa !23
  %528 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  store i8 0, ptr %528, align 2, !tbaa !13
  store i1 false, ptr %9, align 1
  store i32 1, ptr %74, align 4
  br label %1171

529:                                              ; preds = %507
  %530 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  %531 = load double, ptr %530, align 8, !tbaa !23
  %532 = fcmp ogt double %531, 0.000000e+00
  store i1 false, ptr %77, align 1
  store i1 false, ptr %79, align 1
  store i1 false, ptr %81, align 1
  store i1 false, ptr %83, align 1
  store i1 false, ptr %85, align 1
  store i1 false, ptr %87, align 1
  store i1 false, ptr %89, align 1
  store i1 false, ptr %90, align 1
  store i1 false, ptr %91, align 1
  store i1 false, ptr %92, align 1
  store i1 false, ptr %94, align 1
  store i1 false, ptr %96, align 1
  store i1 false, ptr %97, align 1
  store i1 false, ptr %98, align 1
  store i1 false, ptr %99, align 1
  store i1 false, ptr %100, align 1
  store i1 false, ptr %102, align 1
  store i1 false, ptr %104, align 1
  store i1 false, ptr %105, align 1
  store i1 false, ptr %106, align 1
  store i1 false, ptr %107, align 1
  store i1 false, ptr %108, align 1
  store i1 false, ptr %110, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #5
  store i1 false, ptr %112, align 1
  store i1 false, ptr %113, align 1
  store i1 false, ptr %116, align 1
  store i1 false, ptr %118, align 1
  store i1 false, ptr %119, align 1
  store i1 false, ptr %120, align 1
  store i1 false, ptr %122, align 1
  store i1 false, ptr %124, align 1
  store i1 false, ptr %125, align 1
  store i1 false, ptr %126, align 1
  store i1 false, ptr %127, align 1
  br i1 %532, label %549, label %533

533:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #5
  store i1 true, ptr %77, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #5
  store i1 true, ptr %79, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #5
  store i1 true, ptr %81, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #5
  store i1 true, ptr %83, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #5
  store i1 true, ptr %85, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #5
  store i1 true, ptr %87, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #5
  store i1 true, ptr %89, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #5
  store i1 true, ptr %90, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %534 unwind label %701

534:                                              ; preds = %533
  store i1 true, ptr %91, 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 %84, ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef @.str.1)
          to label %535 unwind label %705

535:                                              ; preds = %534
  store i1 true, ptr %92, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #5
  store i1 true, ptr %94, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #5
  store i1 true, ptr %96, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #5
  store i1 true, ptr %97, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @__FUNCTION__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %536 unwind label %709

536:                                              ; preds = %535
  store i1 true, ptr %98, 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 %82, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(32) %93)
          to label %537 unwind label %713

537:                                              ; preds = %536
  store i1 true, ptr %99, 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 %80, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef @.str.2)
          to label %538 unwind label %717

538:                                              ; preds = %537
  store i1 true, ptr %100, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #5
  store i1 true, ptr %102, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #5
  store i1 true, ptr %104, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #5
  store i1 true, ptr %105, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %539 unwind label %721

539:                                              ; preds = %538
  store i1 true, ptr %106, 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 %78, ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %540 unwind label %725

540:                                              ; preds = %539
  store i1 true, ptr %107, 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 %76, ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef @.str.4)
          to label %541 unwind label %729

541:                                              ; preds = %540
  store i1 true, ptr %108, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #5
  store i1 true, ptr %110, align 1
  store i32 200, ptr %111, align 4, !tbaa !19
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %109, ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %542 unwind label %733

542:                                              ; preds = %541
  store i1 true, ptr %112, 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 %75, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %109)
          to label %543 unwind label %737

543:                                              ; preds = %542
  store i1 true, ptr %113, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %115) #5
  store i1 true, ptr %116, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #5
  store i1 true, ptr %118, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #5
  store i1 true, ptr %119, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %544 unwind label %741

544:                                              ; preds = %543
  store i1 true, ptr %120, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #5
  store i1 true, ptr %122, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #5
  store i1 true, ptr %124, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #5
  store i1 true, ptr %125, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %545 unwind label %745

545:                                              ; preds = %544
  store i1 true, ptr %126, 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 %114, ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %546 unwind label %749

546:                                              ; preds = %545
  store i1 true, ptr %127, align 1
  %547 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %75, ptr noundef %114, i32 noundef 0)
          to label %548 unwind label %753

548:                                              ; preds = %546
  br label %549

549:                                              ; preds = %548, %529
  %550 = phi i1 [ true, %529 ], [ %547, %548 ]
  %551 = xor i1 %550, true
  %552 = load i1, ptr %127, align 1
  br i1 %552, label %553, label %554

553:                                              ; preds = %549
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #5
  br label %554

554:                                              ; preds = %553, %549
  %555 = load i1, ptr %126, align 1
  br i1 %555, label %556, label %557

556:                                              ; preds = %554
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #5
  br label %557

557:                                              ; preds = %556, %554
  %558 = load i1, ptr %125, align 1
  br i1 %558, label %559, label %560

559:                                              ; preds = %557
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #5
  br label %560

560:                                              ; preds = %559, %557
  %561 = load i1, ptr %124, align 1
  br i1 %561, label %562, label %563

562:                                              ; preds = %560
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #5
  br label %563

563:                                              ; preds = %562, %560
  %564 = load i1, ptr %122, align 1
  br i1 %564, label %565, label %566

565:                                              ; preds = %563
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #5
  br label %566

566:                                              ; preds = %565, %563
  %567 = load i1, ptr %120, align 1
  br i1 %567, label %568, label %569

568:                                              ; preds = %566
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #5
  br label %569

569:                                              ; preds = %568, %566
  %570 = load i1, ptr %119, align 1
  br i1 %570, label %571, label %572

571:                                              ; preds = %569
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #5
  br label %572

572:                                              ; preds = %571, %569
  %573 = load i1, ptr %118, align 1
  br i1 %573, label %574, label %575

574:                                              ; preds = %572
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #5
  br label %575

575:                                              ; preds = %574, %572
  %576 = load i1, ptr %116, align 1
  br i1 %576, label %577, label %578

577:                                              ; preds = %575
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #5
  br label %578

578:                                              ; preds = %577, %575
  %579 = load i1, ptr %113, align 1
  br i1 %579, label %580, label %581

580:                                              ; preds = %578
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #5
  br label %581

581:                                              ; preds = %580, %578
  %582 = load i1, ptr %112, align 1
  br i1 %582, label %583, label %584

583:                                              ; preds = %581
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #5
  br label %584

584:                                              ; preds = %583, %581
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #5
  %585 = load i1, ptr %110, align 1
  br i1 %585, label %586, label %587

586:                                              ; preds = %584
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #5
  br label %587

587:                                              ; preds = %586, %584
  %588 = load i1, ptr %108, align 1
  br i1 %588, label %589, label %590

589:                                              ; preds = %587
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #5
  br label %590

590:                                              ; preds = %589, %587
  %591 = load i1, ptr %107, align 1
  br i1 %591, label %592, label %593

592:                                              ; preds = %590
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #5
  br label %593

593:                                              ; preds = %592, %590
  %594 = load i1, ptr %106, align 1
  br i1 %594, label %595, label %596

595:                                              ; preds = %593
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #5
  br label %596

596:                                              ; preds = %595, %593
  %597 = load i1, ptr %105, align 1
  br i1 %597, label %598, label %599

598:                                              ; preds = %596
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #5
  br label %599

599:                                              ; preds = %598, %596
  %600 = load i1, ptr %104, align 1
  br i1 %600, label %601, label %602

601:                                              ; preds = %599
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #5
  br label %602

602:                                              ; preds = %601, %599
  %603 = load i1, ptr %102, align 1
  br i1 %603, label %604, label %605

604:                                              ; preds = %602
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #5
  br label %605

605:                                              ; preds = %604, %602
  %606 = load i1, ptr %100, align 1
  br i1 %606, label %607, label %608

607:                                              ; preds = %605
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #5
  br label %608

608:                                              ; preds = %607, %605
  %609 = load i1, ptr %99, align 1
  br i1 %609, label %610, label %611

610:                                              ; preds = %608
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #5
  br label %611

611:                                              ; preds = %610, %608
  %612 = load i1, ptr %98, align 1
  br i1 %612, label %613, label %614

613:                                              ; preds = %611
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #5
  br label %614

614:                                              ; preds = %613, %611
  %615 = load i1, ptr %97, align 1
  br i1 %615, label %616, label %617

616:                                              ; preds = %614
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #5
  br label %617

617:                                              ; preds = %616, %614
  %618 = load i1, ptr %96, align 1
  br i1 %618, label %619, label %620

619:                                              ; preds = %617
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #5
  br label %620

620:                                              ; preds = %619, %617
  %621 = load i1, ptr %94, align 1
  br i1 %621, label %622, label %623

622:                                              ; preds = %620
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #5
  br label %623

623:                                              ; preds = %622, %620
  %624 = load i1, ptr %92, align 1
  br i1 %624, label %625, label %626

625:                                              ; preds = %623
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #5
  br label %626

626:                                              ; preds = %625, %623
  %627 = load i1, ptr %91, align 1
  br i1 %627, label %628, label %629

628:                                              ; preds = %626
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #5
  br label %629

629:                                              ; preds = %628, %626
  %630 = load i1, ptr %90, align 1
  br i1 %630, label %631, label %632

631:                                              ; preds = %629
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #5
  br label %632

632:                                              ; preds = %631, %629
  %633 = load i1, ptr %89, align 1
  br i1 %633, label %634, label %635

634:                                              ; preds = %632
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #5
  br label %635

635:                                              ; preds = %634, %632
  %636 = load i1, ptr %87, align 1
  br i1 %636, label %637, label %638

637:                                              ; preds = %635
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #5
  br label %638

638:                                              ; preds = %637, %635
  %639 = load i1, ptr %85, align 1
  br i1 %639, label %640, label %641

640:                                              ; preds = %638
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #5
  br label %641

641:                                              ; preds = %640, %638
  %642 = load i1, ptr %83, align 1
  br i1 %642, label %643, label %644

643:                                              ; preds = %641
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #5
  br label %644

644:                                              ; preds = %643, %641
  %645 = load i1, ptr %81, align 1
  br i1 %645, label %646, label %647

646:                                              ; preds = %644
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #5
  br label %647

647:                                              ; preds = %646, %644
  %648 = load i1, ptr %79, align 1
  br i1 %648, label %649, label %650

649:                                              ; preds = %647
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #5
  br label %650

650:                                              ; preds = %649, %647
  %651 = load i1, ptr %77, align 1
  br i1 %651, label %652, label %653

652:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #5
  br label %653

653:                                              ; preds = %652, %650
  %654 = load double, ptr %16, align 8, !tbaa !9
  %655 = load double, ptr %13, align 8, !tbaa !9
  %656 = load double, ptr %15, align 8, !tbaa !9
  %657 = fsub double %655, %656
  %658 = call double @cos(double noundef %657) #5
  %659 = fmul double %654, %658
  %660 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  %661 = load double, ptr %660, align 8, !tbaa !23
  %662 = load double, ptr %15, align 8, !tbaa !9
  %663 = call double @sin(double noundef %662) #5
  %664 = fmul double %661, %663
  %665 = fdiv double %659, %664
  %666 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 6
  store double %665, ptr %666, align 8, !tbaa !25
  %667 = load double, ptr %16, align 8, !tbaa !9
  %668 = load double, ptr %12, align 8, !tbaa !9
  %669 = load double, ptr %15, align 8, !tbaa !9
  %670 = fsub double %668, %669
  %671 = call double @cos(double noundef %670) #5
  %672 = fmul double %667, %671
  %673 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  %674 = load double, ptr %673, align 8, !tbaa !23
  %675 = load double, ptr %15, align 8, !tbaa !9
  %676 = call double @sin(double noundef %675) #5
  %677 = fmul double %674, %676
  %678 = fdiv double %672, %677
  %679 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 7
  store double %678, ptr %679, align 8, !tbaa !26
  %680 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 13
  store i8 1, ptr %680, align 1, !tbaa !27
  %681 = load double, ptr %11, align 8, !tbaa !9
  %682 = load double, ptr %73, align 8, !tbaa !9
  %683 = load double, ptr %15, align 8, !tbaa !9
  %684 = load double, ptr %16, align 8, !tbaa !9
  %685 = load i8, ptr %17, align 1, !tbaa !11, !range !17, !noundef !18
  %686 = trunc i8 %685 to i1
  %687 = call noundef double @_ZNK9LayerApex15layerCollapsePcEddddb(ptr noundef nonnull align 8 dereferenceable(144) %182, double noundef %681, double noundef %682, double noundef %683, double noundef %684, i1 noundef zeroext %686)
  %688 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 8
  store double %687, ptr %688, align 8, !tbaa !28
  %689 = load double, ptr %11, align 8, !tbaa !9
  %690 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 8
  %691 = load double, ptr %690, align 8, !tbaa !28
  %692 = fcmp ogt double %689, %691
  %693 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  %694 = zext i1 %692 to i8
  store i8 %694, ptr %693, align 2, !tbaa !13
  %695 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  %696 = load i8, ptr %695, align 2, !tbaa !13, !range !17, !noundef !18
  %697 = trunc i8 %696 to i1
  br i1 %697, label %872, label %698

698:                                              ; preds = %653
  %699 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 13
  store i8 0, ptr %699, align 1, !tbaa !27
  %700 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  store double -1.000000e+00, ptr %700, align 8, !tbaa !23
  br label %872

701:                                              ; preds = %533
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %34, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %35, align 4
  br label %847

705:                                              ; preds = %534
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %34, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %35, align 4
  br label %843

709:                                              ; preds = %535
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %34, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %35, align 4
  br label %830

713:                                              ; preds = %536
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %34, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %35, align 4
  br label %826

717:                                              ; preds = %537
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %34, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %35, align 4
  br label %822

721:                                              ; preds = %538
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %34, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %35, align 4
  br label %809

725:                                              ; preds = %539
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %34, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %35, align 4
  br label %805

729:                                              ; preds = %540
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %34, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %35, align 4
  br label %801

733:                                              ; preds = %541
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %34, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %35, align 4
  br label %794

737:                                              ; preds = %542
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %34, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %35, align 4
  br label %790

741:                                              ; preds = %543
  %742 = landingpad { ptr, i32 }
          cleanup
  %743 = extractvalue { ptr, i32 } %742, 0
  store ptr %743, ptr %34, align 8
  %744 = extractvalue { ptr, i32 } %742, 1
  store i32 %744, ptr %35, align 4
  br label %777

745:                                              ; preds = %544
  %746 = landingpad { ptr, i32 }
          cleanup
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %34, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %35, align 4
  br label %764

749:                                              ; preds = %545
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %34, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %35, align 4
  br label %760

753:                                              ; preds = %546
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %34, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %35, align 4
  %757 = load i1, ptr %127, align 1
  br i1 %757, label %758, label %759

758:                                              ; preds = %753
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #5
  br label %759

759:                                              ; preds = %758, %753
  br label %760

760:                                              ; preds = %759, %749
  %761 = load i1, ptr %126, align 1
  br i1 %761, label %762, label %763

762:                                              ; preds = %760
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #5
  br label %763

763:                                              ; preds = %762, %760
  br label %764

764:                                              ; preds = %763, %745
  %765 = load i1, ptr %125, align 1
  br i1 %765, label %766, label %767

766:                                              ; preds = %764
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #5
  br label %767

767:                                              ; preds = %766, %764
  %768 = load i1, ptr %124, align 1
  br i1 %768, label %769, label %770

769:                                              ; preds = %767
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #5
  br label %770

770:                                              ; preds = %769, %767
  %771 = load i1, ptr %122, align 1
  br i1 %771, label %772, label %773

772:                                              ; preds = %770
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #5
  br label %773

773:                                              ; preds = %772, %770
  %774 = load i1, ptr %120, align 1
  br i1 %774, label %775, label %776

775:                                              ; preds = %773
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #5
  br label %776

776:                                              ; preds = %775, %773
  br label %777

777:                                              ; preds = %776, %741
  %778 = load i1, ptr %119, align 1
  br i1 %778, label %779, label %780

779:                                              ; preds = %777
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #5
  br label %780

780:                                              ; preds = %779, %777
  %781 = load i1, ptr %118, align 1
  br i1 %781, label %782, label %783

782:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #5
  br label %783

783:                                              ; preds = %782, %780
  %784 = load i1, ptr %116, align 1
  br i1 %784, label %785, label %786

785:                                              ; preds = %783
  call void @llvm.lifetime.end.p0(i64 32, ptr %115) #5
  br label %786

786:                                              ; preds = %785, %783
  %787 = load i1, ptr %113, align 1
  br i1 %787, label %788, label %789

788:                                              ; preds = %786
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #5
  br label %789

789:                                              ; preds = %788, %786
  br label %790

790:                                              ; preds = %789, %737
  %791 = load i1, ptr %112, align 1
  br i1 %791, label %792, label %793

792:                                              ; preds = %790
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #5
  br label %793

793:                                              ; preds = %792, %790
  br label %794

794:                                              ; preds = %793, %733
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #5
  %795 = load i1, ptr %110, align 1
  br i1 %795, label %796, label %797

796:                                              ; preds = %794
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #5
  br label %797

797:                                              ; preds = %796, %794
  %798 = load i1, ptr %108, align 1
  br i1 %798, label %799, label %800

799:                                              ; preds = %797
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #5
  br label %800

800:                                              ; preds = %799, %797
  br label %801

801:                                              ; preds = %800, %729
  %802 = load i1, ptr %107, align 1
  br i1 %802, label %803, label %804

803:                                              ; preds = %801
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #5
  br label %804

804:                                              ; preds = %803, %801
  br label %805

805:                                              ; preds = %804, %725
  %806 = load i1, ptr %106, align 1
  br i1 %806, label %807, label %808

807:                                              ; preds = %805
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #5
  br label %808

808:                                              ; preds = %807, %805
  br label %809

809:                                              ; preds = %808, %721
  %810 = load i1, ptr %105, align 1
  br i1 %810, label %811, label %812

811:                                              ; preds = %809
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #5
  br label %812

812:                                              ; preds = %811, %809
  %813 = load i1, ptr %104, align 1
  br i1 %813, label %814, label %815

814:                                              ; preds = %812
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #5
  br label %815

815:                                              ; preds = %814, %812
  %816 = load i1, ptr %102, align 1
  br i1 %816, label %817, label %818

817:                                              ; preds = %815
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #5
  br label %818

818:                                              ; preds = %817, %815
  %819 = load i1, ptr %100, align 1
  br i1 %819, label %820, label %821

820:                                              ; preds = %818
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #5
  br label %821

821:                                              ; preds = %820, %818
  br label %822

822:                                              ; preds = %821, %717
  %823 = load i1, ptr %99, align 1
  br i1 %823, label %824, label %825

824:                                              ; preds = %822
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #5
  br label %825

825:                                              ; preds = %824, %822
  br label %826

826:                                              ; preds = %825, %713
  %827 = load i1, ptr %98, align 1
  br i1 %827, label %828, label %829

828:                                              ; preds = %826
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #5
  br label %829

829:                                              ; preds = %828, %826
  br label %830

830:                                              ; preds = %829, %709
  %831 = load i1, ptr %97, align 1
  br i1 %831, label %832, label %833

832:                                              ; preds = %830
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #5
  br label %833

833:                                              ; preds = %832, %830
  %834 = load i1, ptr %96, align 1
  br i1 %834, label %835, label %836

835:                                              ; preds = %833
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #5
  br label %836

836:                                              ; preds = %835, %833
  %837 = load i1, ptr %94, align 1
  br i1 %837, label %838, label %839

838:                                              ; preds = %836
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #5
  br label %839

839:                                              ; preds = %838, %836
  %840 = load i1, ptr %92, align 1
  br i1 %840, label %841, label %842

841:                                              ; preds = %839
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #5
  br label %842

842:                                              ; preds = %841, %839
  br label %843

843:                                              ; preds = %842, %705
  %844 = load i1, ptr %91, align 1
  br i1 %844, label %845, label %846

845:                                              ; preds = %843
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #5
  br label %846

846:                                              ; preds = %845, %843
  br label %847

847:                                              ; preds = %846, %701
  %848 = load i1, ptr %90, align 1
  br i1 %848, label %849, label %850

849:                                              ; preds = %847
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %88) #5
  br label %850

850:                                              ; preds = %849, %847
  %851 = load i1, ptr %89, align 1
  br i1 %851, label %852, label %853

852:                                              ; preds = %850
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #5
  br label %853

853:                                              ; preds = %852, %850
  %854 = load i1, ptr %87, align 1
  br i1 %854, label %855, label %856

855:                                              ; preds = %853
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #5
  br label %856

856:                                              ; preds = %855, %853
  %857 = load i1, ptr %85, align 1
  br i1 %857, label %858, label %859

858:                                              ; preds = %856
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #5
  br label %859

859:                                              ; preds = %858, %856
  %860 = load i1, ptr %83, align 1
  br i1 %860, label %861, label %862

861:                                              ; preds = %859
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #5
  br label %862

862:                                              ; preds = %861, %859
  %863 = load i1, ptr %81, align 1
  br i1 %863, label %864, label %865

864:                                              ; preds = %862
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #5
  br label %865

865:                                              ; preds = %864, %862
  %866 = load i1, ptr %79, align 1
  br i1 %866, label %867, label %868

867:                                              ; preds = %865
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #5
  br label %868

868:                                              ; preds = %867, %865
  %869 = load i1, ptr %77, align 1
  br i1 %869, label %870, label %871

870:                                              ; preds = %868
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #5
  br label %871

871:                                              ; preds = %870, %868
  br label %1173

872:                                              ; preds = %698, %653
  %873 = getelementptr inbounds %class.LayerApex, ptr %182, i32 0, i32 3
  %874 = load double, ptr %873, align 8, !tbaa !23
  %875 = fcmp ogt double %874, 0.000000e+00
  store i1 false, ptr %130, align 1
  store i1 false, ptr %132, align 1
  store i1 false, ptr %134, align 1
  store i1 false, ptr %136, align 1
  store i1 false, ptr %138, align 1
  store i1 false, ptr %140, align 1
  store i1 false, ptr %142, align 1
  store i1 false, ptr %143, align 1
  store i1 false, ptr %144, align 1
  store i1 false, ptr %145, align 1
  store i1 false, ptr %147, align 1
  store i1 false, ptr %149, align 1
  store i1 false, ptr %150, align 1
  store i1 false, ptr %151, align 1
  store i1 false, ptr %152, align 1
  store i1 false, ptr %153, align 1
  store i1 false, ptr %155, align 1
  store i1 false, ptr %157, align 1
  store i1 false, ptr %158, align 1
  store i1 false, ptr %159, align 1
  store i1 false, ptr %160, align 1
  store i1 false, ptr %161, align 1
  store i1 false, ptr %163, align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #5
  store i1 false, ptr %165, align 1
  store i1 false, ptr %166, align 1
  store i1 false, ptr %169, align 1
  store i1 false, ptr %171, align 1
  store i1 false, ptr %172, align 1
  store i1 false, ptr %173, align 1
  store i1 false, ptr %175, align 1
  store i1 false, ptr %177, align 1
  store i1 false, ptr %178, align 1
  store i1 false, ptr %179, align 1
  store i1 false, ptr %180, align 1
  br i1 %875, label %892, label %876

876:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #5
  store i1 true, ptr %130, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #5
  store i1 true, ptr %132, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %133) #5
  store i1 true, ptr %134, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %135) #5
  store i1 true, ptr %136, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #5
  store i1 true, ptr %138, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %139) #5
  store i1 true, ptr %140, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #5
  store i1 true, ptr %142, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #5
  store i1 true, ptr %143, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %141)
          to label %877 unwind label %1000

877:                                              ; preds = %876
  store i1 true, ptr %144, 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 %137, ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef @.str.1)
          to label %878 unwind label %1004

878:                                              ; preds = %877
  store i1 true, ptr %145, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #5
  store i1 true, ptr %147, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #5
  store i1 true, ptr %149, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #5
  store i1 true, ptr %150, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef @__FUNCTION__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %879 unwind label %1008

879:                                              ; preds = %878
  store i1 true, ptr %151, 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 %135, ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %880 unwind label %1012

880:                                              ; preds = %879
  store i1 true, ptr %152, 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 %133, ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef @.str.2)
          to label %881 unwind label %1016

881:                                              ; preds = %880
  store i1 true, ptr %153, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %154) #5
  store i1 true, ptr %155, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #5
  store i1 true, ptr %157, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #5
  store i1 true, ptr %158, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %156)
          to label %882 unwind label %1020

882:                                              ; preds = %881
  store i1 true, ptr %159, 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 %131, ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 8 dereferenceable(32) %154)
          to label %883 unwind label %1024

883:                                              ; preds = %882
  store i1 true, ptr %160, 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 %129, ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef @.str.4)
          to label %884 unwind label %1028

884:                                              ; preds = %883
  store i1 true, ptr %161, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %162) #5
  store i1 true, ptr %163, align 1
  store i32 213, ptr %164, align 4, !tbaa !19
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %162, ptr noundef nonnull align 4 dereferenceable(4) %164)
          to label %885 unwind label %1032

885:                                              ; preds = %884
  store i1 true, ptr %165, 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 %128, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(32) %162)
          to label %886 unwind label %1036

886:                                              ; preds = %885
  store i1 true, ptr %166, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %168) #5
  store i1 true, ptr %169, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #5
  store i1 true, ptr %171, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #5
  store i1 true, ptr %172, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %170)
          to label %887 unwind label %1040

887:                                              ; preds = %886
  store i1 true, ptr %173, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %174) #5
  store i1 true, ptr %175, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #5
  store i1 true, ptr %177, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #5
  store i1 true, ptr %178, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %176)
          to label %888 unwind label %1044

888:                                              ; preds = %887
  store i1 true, ptr %179, 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 %167, ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef nonnull align 8 dereferenceable(32) %174)
          to label %889 unwind label %1048

889:                                              ; preds = %888
  store i1 true, ptr %180, align 1
  %890 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef %128, ptr noundef %167, i32 noundef 0)
          to label %891 unwind label %1052

891:                                              ; preds = %889
  br label %892

892:                                              ; preds = %891, %872
  %893 = phi i1 [ true, %872 ], [ %890, %891 ]
  %894 = xor i1 %893, true
  %895 = load i1, ptr %180, align 1
  br i1 %895, label %896, label %897

896:                                              ; preds = %892
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #5
  br label %897

897:                                              ; preds = %896, %892
  %898 = load i1, ptr %179, align 1
  br i1 %898, label %899, label %900

899:                                              ; preds = %897
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #5
  br label %900

900:                                              ; preds = %899, %897
  %901 = load i1, ptr %178, align 1
  br i1 %901, label %902, label %903

902:                                              ; preds = %900
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #5
  br label %903

903:                                              ; preds = %902, %900
  %904 = load i1, ptr %177, align 1
  br i1 %904, label %905, label %906

905:                                              ; preds = %903
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #5
  br label %906

906:                                              ; preds = %905, %903
  %907 = load i1, ptr %175, align 1
  br i1 %907, label %908, label %909

908:                                              ; preds = %906
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #5
  br label %909

909:                                              ; preds = %908, %906
  %910 = load i1, ptr %173, align 1
  br i1 %910, label %911, label %912

911:                                              ; preds = %909
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #5
  br label %912

912:                                              ; preds = %911, %909
  %913 = load i1, ptr %172, align 1
  br i1 %913, label %914, label %915

914:                                              ; preds = %912
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #5
  br label %915

915:                                              ; preds = %914, %912
  %916 = load i1, ptr %171, align 1
  br i1 %916, label %917, label %918

917:                                              ; preds = %915
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #5
  br label %918

918:                                              ; preds = %917, %915
  %919 = load i1, ptr %169, align 1
  br i1 %919, label %920, label %921

920:                                              ; preds = %918
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #5
  br label %921

921:                                              ; preds = %920, %918
  %922 = load i1, ptr %166, align 1
  br i1 %922, label %923, label %924

923:                                              ; preds = %921
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #5
  br label %924

924:                                              ; preds = %923, %921
  %925 = load i1, ptr %165, align 1
  br i1 %925, label %926, label %927

926:                                              ; preds = %924
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #5
  br label %927

927:                                              ; preds = %926, %924
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #5
  %928 = load i1, ptr %163, align 1
  br i1 %928, label %929, label %930

929:                                              ; preds = %927
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #5
  br label %930

930:                                              ; preds = %929, %927
  %931 = load i1, ptr %161, align 1
  br i1 %931, label %932, label %933

932:                                              ; preds = %930
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #5
  br label %933

933:                                              ; preds = %932, %930
  %934 = load i1, ptr %160, align 1
  br i1 %934, label %935, label %936

935:                                              ; preds = %933
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #5
  br label %936

936:                                              ; preds = %935, %933
  %937 = load i1, ptr %159, align 1
  br i1 %937, label %938, label %939

938:                                              ; preds = %936
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #5
  br label %939

939:                                              ; preds = %938, %936
  %940 = load i1, ptr %158, align 1
  br i1 %940, label %941, label %942

941:                                              ; preds = %939
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #5
  br label %942

942:                                              ; preds = %941, %939
  %943 = load i1, ptr %157, align 1
  br i1 %943, label %944, label %945

944:                                              ; preds = %942
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #5
  br label %945

945:                                              ; preds = %944, %942
  %946 = load i1, ptr %155, align 1
  br i1 %946, label %947, label %948

947:                                              ; preds = %945
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #5
  br label %948

948:                                              ; preds = %947, %945
  %949 = load i1, ptr %153, align 1
  br i1 %949, label %950, label %951

950:                                              ; preds = %948
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #5
  br label %951

951:                                              ; preds = %950, %948
  %952 = load i1, ptr %152, align 1
  br i1 %952, label %953, label %954

953:                                              ; preds = %951
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #5
  br label %954

954:                                              ; preds = %953, %951
  %955 = load i1, ptr %151, align 1
  br i1 %955, label %956, label %957

956:                                              ; preds = %954
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #5
  br label %957

957:                                              ; preds = %956, %954
  %958 = load i1, ptr %150, align 1
  br i1 %958, label %959, label %960

959:                                              ; preds = %957
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #5
  br label %960

960:                                              ; preds = %959, %957
  %961 = load i1, ptr %149, align 1
  br i1 %961, label %962, label %963

962:                                              ; preds = %960
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #5
  br label %963

963:                                              ; preds = %962, %960
  %964 = load i1, ptr %147, align 1
  br i1 %964, label %965, label %966

965:                                              ; preds = %963
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #5
  br label %966

966:                                              ; preds = %965, %963
  %967 = load i1, ptr %145, align 1
  br i1 %967, label %968, label %969

968:                                              ; preds = %966
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #5
  br label %969

969:                                              ; preds = %968, %966
  %970 = load i1, ptr %144, align 1
  br i1 %970, label %971, label %972

971:                                              ; preds = %969
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #5
  br label %972

972:                                              ; preds = %971, %969
  %973 = load i1, ptr %143, align 1
  br i1 %973, label %974, label %975

974:                                              ; preds = %972
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #5
  br label %975

975:                                              ; preds = %974, %972
  %976 = load i1, ptr %142, align 1
  br i1 %976, label %977, label %978

977:                                              ; preds = %975
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #5
  br label %978

978:                                              ; preds = %977, %975
  %979 = load i1, ptr %140, align 1
  br i1 %979, label %980, label %981

980:                                              ; preds = %978
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #5
  br label %981

981:                                              ; preds = %980, %978
  %982 = load i1, ptr %138, align 1
  br i1 %982, label %983, label %984

983:                                              ; preds = %981
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #5
  br label %984

984:                                              ; preds = %983, %981
  %985 = load i1, ptr %136, align 1
  br i1 %985, label %986, label %987

986:                                              ; preds = %984
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #5
  br label %987

987:                                              ; preds = %986, %984
  %988 = load i1, ptr %134, align 1
  br i1 %988, label %989, label %990

989:                                              ; preds = %987
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #5
  br label %990

990:                                              ; preds = %989, %987
  %991 = load i1, ptr %132, align 1
  br i1 %991, label %992, label %993

992:                                              ; preds = %990
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #5
  br label %993

993:                                              ; preds = %992, %990
  %994 = load i1, ptr %130, align 1
  br i1 %994, label %995, label %996

995:                                              ; preds = %993
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #5
  br label %996

996:                                              ; preds = %995, %993
  %997 = getelementptr inbounds %class.Apex, ptr %182, i32 0, i32 12
  %998 = load i8, ptr %997, align 2, !tbaa !13, !range !17, !noundef !18
  %999 = trunc i8 %998 to i1
  store i1 %999, ptr %9, align 1
  store i32 1, ptr %74, align 4
  br label %1171

1000:                                             ; preds = %876
  %1001 = landingpad { ptr, i32 }
          cleanup
  %1002 = extractvalue { ptr, i32 } %1001, 0
  store ptr %1002, ptr %34, align 8
  %1003 = extractvalue { ptr, i32 } %1001, 1
  store i32 %1003, ptr %35, align 4
  br label %1146

1004:                                             ; preds = %877
  %1005 = landingpad { ptr, i32 }
          cleanup
  %1006 = extractvalue { ptr, i32 } %1005, 0
  store ptr %1006, ptr %34, align 8
  %1007 = extractvalue { ptr, i32 } %1005, 1
  store i32 %1007, ptr %35, align 4
  br label %1142

1008:                                             ; preds = %878
  %1009 = landingpad { ptr, i32 }
          cleanup
  %1010 = extractvalue { ptr, i32 } %1009, 0
  store ptr %1010, ptr %34, align 8
  %1011 = extractvalue { ptr, i32 } %1009, 1
  store i32 %1011, ptr %35, align 4
  br label %1129

1012:                                             ; preds = %879
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %34, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %35, align 4
  br label %1125

1016:                                             ; preds = %880
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %34, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %35, align 4
  br label %1121

1020:                                             ; preds = %881
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %34, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %35, align 4
  br label %1108

1024:                                             ; preds = %882
  %1025 = landingpad { ptr, i32 }
          cleanup
  %1026 = extractvalue { ptr, i32 } %1025, 0
  store ptr %1026, ptr %34, align 8
  %1027 = extractvalue { ptr, i32 } %1025, 1
  store i32 %1027, ptr %35, align 4
  br label %1104

1028:                                             ; preds = %883
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %34, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %35, align 4
  br label %1100

1032:                                             ; preds = %884
  %1033 = landingpad { ptr, i32 }
          cleanup
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %34, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %35, align 4
  br label %1093

1036:                                             ; preds = %885
  %1037 = landingpad { ptr, i32 }
          cleanup
  %1038 = extractvalue { ptr, i32 } %1037, 0
  store ptr %1038, ptr %34, align 8
  %1039 = extractvalue { ptr, i32 } %1037, 1
  store i32 %1039, ptr %35, align 4
  br label %1089

1040:                                             ; preds = %886
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %34, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %35, align 4
  br label %1076

1044:                                             ; preds = %887
  %1045 = landingpad { ptr, i32 }
          cleanup
  %1046 = extractvalue { ptr, i32 } %1045, 0
  store ptr %1046, ptr %34, align 8
  %1047 = extractvalue { ptr, i32 } %1045, 1
  store i32 %1047, ptr %35, align 4
  br label %1063

1048:                                             ; preds = %888
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %34, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %35, align 4
  br label %1059

1052:                                             ; preds = %889
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %34, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %35, align 4
  %1056 = load i1, ptr %180, align 1
  br i1 %1056, label %1057, label %1058

1057:                                             ; preds = %1052
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #5
  br label %1058

1058:                                             ; preds = %1057, %1052
  br label %1059

1059:                                             ; preds = %1058, %1048
  %1060 = load i1, ptr %179, align 1
  br i1 %1060, label %1061, label %1062

1061:                                             ; preds = %1059
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #5
  br label %1062

1062:                                             ; preds = %1061, %1059
  br label %1063

1063:                                             ; preds = %1062, %1044
  %1064 = load i1, ptr %178, align 1
  br i1 %1064, label %1065, label %1066

1065:                                             ; preds = %1063
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %176) #5
  br label %1066

1066:                                             ; preds = %1065, %1063
  %1067 = load i1, ptr %177, align 1
  br i1 %1067, label %1068, label %1069

1068:                                             ; preds = %1066
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #5
  br label %1069

1069:                                             ; preds = %1068, %1066
  %1070 = load i1, ptr %175, align 1
  br i1 %1070, label %1071, label %1072

1071:                                             ; preds = %1069
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #5
  br label %1072

1072:                                             ; preds = %1071, %1069
  %1073 = load i1, ptr %173, align 1
  br i1 %1073, label %1074, label %1075

1074:                                             ; preds = %1072
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #5
  br label %1075

1075:                                             ; preds = %1074, %1072
  br label %1076

1076:                                             ; preds = %1075, %1040
  %1077 = load i1, ptr %172, align 1
  br i1 %1077, label %1078, label %1079

1078:                                             ; preds = %1076
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %170) #5
  br label %1079

1079:                                             ; preds = %1078, %1076
  %1080 = load i1, ptr %171, align 1
  br i1 %1080, label %1081, label %1082

1081:                                             ; preds = %1079
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #5
  br label %1082

1082:                                             ; preds = %1081, %1079
  %1083 = load i1, ptr %169, align 1
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1082
  call void @llvm.lifetime.end.p0(i64 32, ptr %168) #5
  br label %1085

1085:                                             ; preds = %1084, %1082
  %1086 = load i1, ptr %166, align 1
  br i1 %1086, label %1087, label %1088

1087:                                             ; preds = %1085
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #5
  br label %1088

1088:                                             ; preds = %1087, %1085
  br label %1089

1089:                                             ; preds = %1088, %1036
  %1090 = load i1, ptr %165, align 1
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1089
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #5
  br label %1092

1092:                                             ; preds = %1091, %1089
  br label %1093

1093:                                             ; preds = %1092, %1032
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #5
  %1094 = load i1, ptr %163, align 1
  br i1 %1094, label %1095, label %1096

1095:                                             ; preds = %1093
  call void @llvm.lifetime.end.p0(i64 32, ptr %162) #5
  br label %1096

1096:                                             ; preds = %1095, %1093
  %1097 = load i1, ptr %161, align 1
  br i1 %1097, label %1098, label %1099

1098:                                             ; preds = %1096
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #5
  br label %1099

1099:                                             ; preds = %1098, %1096
  br label %1100

1100:                                             ; preds = %1099, %1028
  %1101 = load i1, ptr %160, align 1
  br i1 %1101, label %1102, label %1103

1102:                                             ; preds = %1100
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #5
  br label %1103

1103:                                             ; preds = %1102, %1100
  br label %1104

1104:                                             ; preds = %1103, %1024
  %1105 = load i1, ptr %159, align 1
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #5
  br label %1107

1107:                                             ; preds = %1106, %1104
  br label %1108

1108:                                             ; preds = %1107, %1020
  %1109 = load i1, ptr %158, align 1
  br i1 %1109, label %1110, label %1111

1110:                                             ; preds = %1108
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %156) #5
  br label %1111

1111:                                             ; preds = %1110, %1108
  %1112 = load i1, ptr %157, align 1
  br i1 %1112, label %1113, label %1114

1113:                                             ; preds = %1111
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #5
  br label %1114

1114:                                             ; preds = %1113, %1111
  %1115 = load i1, ptr %155, align 1
  br i1 %1115, label %1116, label %1117

1116:                                             ; preds = %1114
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #5
  br label %1117

1117:                                             ; preds = %1116, %1114
  %1118 = load i1, ptr %153, align 1
  br i1 %1118, label %1119, label %1120

1119:                                             ; preds = %1117
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #5
  br label %1120

1120:                                             ; preds = %1119, %1117
  br label %1121

1121:                                             ; preds = %1120, %1016
  %1122 = load i1, ptr %152, align 1
  br i1 %1122, label %1123, label %1124

1123:                                             ; preds = %1121
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #5
  br label %1124

1124:                                             ; preds = %1123, %1121
  br label %1125

1125:                                             ; preds = %1124, %1012
  %1126 = load i1, ptr %151, align 1
  br i1 %1126, label %1127, label %1128

1127:                                             ; preds = %1125
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #5
  br label %1128

1128:                                             ; preds = %1127, %1125
  br label %1129

1129:                                             ; preds = %1128, %1008
  %1130 = load i1, ptr %150, align 1
  br i1 %1130, label %1131, label %1132

1131:                                             ; preds = %1129
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #5
  br label %1132

1132:                                             ; preds = %1131, %1129
  %1133 = load i1, ptr %149, align 1
  br i1 %1133, label %1134, label %1135

1134:                                             ; preds = %1132
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #5
  br label %1135

1135:                                             ; preds = %1134, %1132
  %1136 = load i1, ptr %147, align 1
  br i1 %1136, label %1137, label %1138

1137:                                             ; preds = %1135
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #5
  br label %1138

1138:                                             ; preds = %1137, %1135
  %1139 = load i1, ptr %145, align 1
  br i1 %1139, label %1140, label %1141

1140:                                             ; preds = %1138
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #5
  br label %1141

1141:                                             ; preds = %1140, %1138
  br label %1142

1142:                                             ; preds = %1141, %1004
  %1143 = load i1, ptr %144, align 1
  br i1 %1143, label %1144, label %1145

1144:                                             ; preds = %1142
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #5
  br label %1145

1145:                                             ; preds = %1144, %1142
  br label %1146

1146:                                             ; preds = %1145, %1000
  %1147 = load i1, ptr %143, align 1
  br i1 %1147, label %1148, label %1149

1148:                                             ; preds = %1146
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %141) #5
  br label %1149

1149:                                             ; preds = %1148, %1146
  %1150 = load i1, ptr %142, align 1
  br i1 %1150, label %1151, label %1152

1151:                                             ; preds = %1149
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #5
  br label %1152

1152:                                             ; preds = %1151, %1149
  %1153 = load i1, ptr %140, align 1
  br i1 %1153, label %1154, label %1155

1154:                                             ; preds = %1152
  call void @llvm.lifetime.end.p0(i64 32, ptr %139) #5
  br label %1155

1155:                                             ; preds = %1154, %1152
  %1156 = load i1, ptr %138, align 1
  br i1 %1156, label %1157, label %1158

1157:                                             ; preds = %1155
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #5
  br label %1158

1158:                                             ; preds = %1157, %1155
  %1159 = load i1, ptr %136, align 1
  br i1 %1159, label %1160, label %1161

1160:                                             ; preds = %1158
  call void @llvm.lifetime.end.p0(i64 32, ptr %135) #5
  br label %1161

1161:                                             ; preds = %1160, %1158
  %1162 = load i1, ptr %134, align 1
  br i1 %1162, label %1163, label %1164

1163:                                             ; preds = %1161
  call void @llvm.lifetime.end.p0(i64 32, ptr %133) #5
  br label %1164

1164:                                             ; preds = %1163, %1161
  %1165 = load i1, ptr %132, align 1
  br i1 %1165, label %1166, label %1167

1166:                                             ; preds = %1164
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #5
  br label %1167

1167:                                             ; preds = %1166, %1164
  %1168 = load i1, ptr %130, align 1
  br i1 %1168, label %1169, label %1170

1169:                                             ; preds = %1167
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #5
  br label %1170

1170:                                             ; preds = %1169, %1167
  br label %1173

1171:                                             ; preds = %996, %526, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  %1172 = load i1, ptr %9, align 1
  ret i1 %1172

1173:                                             ; preds = %1170, %871
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  br label %1174

1174:                                             ; preds = %1173, %506
  %1175 = load ptr, ptr %34, align 8
  %1176 = load i32, ptr %35, align 4
  %1177 = insertvalue { ptr, i32 } poison, ptr %1175, 0
  %1178 = insertvalue { ptr, i32 } %1177, i32 %1176, 1
  resume { ptr, i32 } %1178
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK9LayerApex15layerCollapsePcEddddb(ptr noundef nonnull align 8 dereferenceable(144), double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) #4 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !12, i64 82}
!14 = !{!"_ZTS4Apex", !12, i64 8, !10, i64 16, !10, i64 24, !6, i64 32, !15, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !16, i64 88}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSSt4pairIidE", !15, i64 0, !10, i64 8}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!15, !15, i64 0}
!20 = !{!21, !6, i64 112}
!21 = !{!"_ZTS9LayerApex", !14, i64 0, !15, i64 104, !6, i64 112, !10, i64 120, !6, i64 128, !10, i64 136}
!22 = !{!14, !10, i64 72}
!23 = !{!21, !10, i64 120}
!24 = !{!21, !6, i64 128}
!25 = !{!14, !10, i64 48}
!26 = !{!14, !10, i64 56}
!27 = !{!14, !12, i64 83}
!28 = !{!14, !10, i64 64}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }

@_ZN4Apex2PIE = external local_unnamed_addr constant double, align 8
@.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 [99 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
@__FUNCTION__._ZN9LayerApex12createOLayerEddddddb = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #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 #2

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress 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 #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN9LayerApex12createOLayerEddddddb(ptr noundef nonnull align 8 dereferenceable(144) %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, i1 noundef zeroext %7) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator", align 1
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca i32, align 4
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator", align 1
  %66 = getelementptr inbounds i8, ptr %0, i64 82
  %67 = load i8, ptr %66, align 2, !tbaa !5, !range !14, !noundef !15
  %68 = trunc nuw i8 %67 to i1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  br i1 %68, label %69, label %84

69:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %70 unwind label %99

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

71:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @__FUNCTION__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %72 unwind label %103

72:                                               ; preds = %71
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %73 unwind label %105

73:                                               ; preds = %72
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.2)
          to label %74 unwind label %107

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

75:                                               ; preds = %74
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %76 unwind label %111

76:                                               ; preds = %75
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.4)
          to label %77 unwind label %113

77:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #5
  store i32 181, ptr %22, align 4, !tbaa !16
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %78 unwind label %115

78:                                               ; preds = %77
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %21)
          to label %79 unwind label %117

79:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %80 unwind label %119

80:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %81 unwind label %121

81:                                               ; preds = %80
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %82 unwind label %123

82:                                               ; preds = %81
  %83 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %9, ptr noundef nonnull %23, i32 noundef 0)
          to label %.critedge432 unwind label %125

84:                                               ; preds = %8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  br label %.critedge453

.critedge432:                                     ; preds = %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #5
  br label %.critedge453

.critedge453:                                     ; preds = %84, %.critedge432
  %85 = select i1 %7, double %2, double %3
  %86 = load double, ptr @_ZN4Apex2PIE, align 8, !tbaa !17
  %87 = fmul double %86, 5.000000e-01
  %88 = fadd double %87, %5
  %89 = fcmp ogt double %85, %88
  %90 = fcmp ogt double %85, %4
  %91 = and i1 %90, %89
  %92 = zext i1 %91 to i8
  store i8 %92, ptr %66, align 2, !tbaa !5
  %93 = getelementptr inbounds i8, ptr %0, i64 112
  %94 = load ptr, ptr %93, align 8, !tbaa !18
  %95 = call noundef ptr @_ZNK9ElemModel6elemanEv(ptr noundef nonnull align 8 dereferenceable(152) %94)
  %96 = call noundef double @_ZNK4Apex17gravityCorrectionEv(ptr noundef nonnull align 8 dereferenceable(104) %95)
  %97 = getelementptr inbounds i8, ptr %0, i64 72
  store double %96, ptr %97, align 8, !tbaa !20
  %98 = call noundef zeroext i1 @_ZNK4Apex6existsEv(ptr noundef nonnull align 8 dereferenceable(104) %0)
  br i1 %98, label %140, label %.critedge525

99:                                               ; preds = %69
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %139

101:                                              ; preds = %70
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %138

103:                                              ; preds = %71
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %137

105:                                              ; preds = %72
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %136

107:                                              ; preds = %73
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %135

109:                                              ; preds = %74
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %134

111:                                              ; preds = %75
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %133

113:                                              ; preds = %76
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %132

115:                                              ; preds = %77
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %131

117:                                              ; preds = %78
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %130

119:                                              ; preds = %79
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %129

121:                                              ; preds = %80
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %128

123:                                              ; preds = %81
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %82
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %127

127:                                              ; preds = %123, %125
  %.pn = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #5
  br label %128

128:                                              ; preds = %121, %127
  %.pn.pn = phi { ptr, i32 } [ %.pn, %127 ], [ %122, %121 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  br label %129

129:                                              ; preds = %119, %128
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %128 ], [ %120, %119 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  br label %130

130:                                              ; preds = %117, %129
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %129 ], [ %118, %117 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #5
  br label %131

131:                                              ; preds = %130, %115
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %130 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #5
  br label %132

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

133:                                              ; preds = %111, %132
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %132 ], [ %112, %111 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #5
  br label %134

134:                                              ; preds = %109, %133
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %133 ], [ %110, %109 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  br label %135

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

136:                                              ; preds = %105, %135
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %135 ], [ %106, %105 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #5
  br label %137

137:                                              ; preds = %103, %136
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %136 ], [ %104, %103 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #5
  br label %138

138:                                              ; preds = %101, %137
  %.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, %137 ], [ %102, %101 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  br label %139

139:                                              ; preds = %99, %138
  %.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, %138 ], [ %100, %99 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #5
  br label %294

140:                                              ; preds = %.critedge453
  %141 = fdiv double %6, %1
  %142 = fsub double %85, %5
  %143 = call double @cos(double noundef %142) #5
  %144 = fmul double %141, %143
  %145 = call double @sin(double noundef %5) #5
  %146 = fdiv double %144, %145
  %147 = getelementptr inbounds i8, ptr %0, i64 120
  store double %146, ptr %147, align 8, !tbaa !21
  %148 = getelementptr inbounds i8, ptr %0, i64 128
  %149 = load ptr, ptr %148, align 8, !tbaa !22
  %150 = call noundef double @_ZNK10CornerApex14pinnedApexDistEv(ptr noundef nonnull align 8 dereferenceable(144) %149)
  %151 = fcmp olt double %146, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %140
  store double -1.000000e+00, ptr %147, align 8, !tbaa !21
  store i8 0, ptr %66, align 2, !tbaa !5
  br label %.critedge525

153:                                              ; preds = %140
  %154 = load double, ptr %147, align 8, !tbaa !21
  %155 = fcmp ule double %154, 0.000000e+00
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #5
  br i1 %155, label %156, label %171

156:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %157 unwind label %193

157:                                              ; preds = %156
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.1)
          to label %158 unwind label %195

158:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @__FUNCTION__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %159 unwind label %197

159:                                              ; preds = %158
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %160 unwind label %199

160:                                              ; preds = %159
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.2)
          to label %161 unwind label %201

161:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %162 unwind label %203

162:                                              ; preds = %161
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %163 unwind label %205

163:                                              ; preds = %162
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.4)
          to label %164 unwind label %207

164:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #5
  store i32 200, ptr %41, align 4, !tbaa !16
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %165 unwind label %209

165:                                              ; preds = %164
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %166 unwind label %211

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %167 unwind label %213

167:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %168 unwind label %215

168:                                              ; preds = %167
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %169 unwind label %217

169:                                              ; preds = %168
  %170 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %28, ptr noundef nonnull %42, i32 noundef 0)
          to label %.critedge468 unwind label %219

171:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  br label %.critedge489

.critedge468:                                     ; preds = %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #5
  br label %.critedge489

.critedge489:                                     ; preds = %171, %.critedge468
  %172 = fsub double %3, %5
  %173 = call double @cos(double noundef %172) #5
  %174 = fmul double %173, %6
  %175 = load double, ptr %147, align 8, !tbaa !21
  %176 = call double @sin(double noundef %5) #5
  %177 = fmul double %175, %176
  %178 = fdiv double %174, %177
  %179 = getelementptr inbounds i8, ptr %0, i64 48
  store double %178, ptr %179, align 8, !tbaa !23
  %180 = fsub double %2, %5
  %181 = call double @cos(double noundef %180) #5
  %182 = fmul double %181, %6
  %183 = load double, ptr %147, align 8, !tbaa !21
  %184 = call double @sin(double noundef %5) #5
  %185 = fmul double %183, %184
  %186 = fdiv double %182, %185
  %187 = getelementptr inbounds i8, ptr %0, i64 56
  store double %186, ptr %187, align 8, !tbaa !24
  %188 = getelementptr inbounds i8, ptr %0, i64 83
  store i8 1, ptr %188, align 1, !tbaa !25
  %189 = call noundef double @_ZNK9LayerApex15layerCollapsePcEddddb(ptr noundef nonnull align 8 dereferenceable(144) %0, double noundef %1, double noundef %85, double noundef %5, double noundef %6, i1 noundef zeroext %7)
  %190 = getelementptr inbounds i8, ptr %0, i64 64
  store double %189, ptr %190, align 8, !tbaa !26
  %191 = fcmp olt double %189, %1
  %192 = zext i1 %191 to i8
  store i8 %192, ptr %66, align 2, !tbaa !5
  br i1 %191, label %234, label %.thread527

.thread527:                                       ; preds = %.critedge489
  store i8 0, ptr %188, align 1, !tbaa !25
  store double -1.000000e+00, ptr %147, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #5
  br label %236

193:                                              ; preds = %156
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %233

195:                                              ; preds = %157
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %232

197:                                              ; preds = %158
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %231

199:                                              ; preds = %159
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %230

201:                                              ; preds = %160
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %229

203:                                              ; preds = %161
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %228

205:                                              ; preds = %162
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %227

207:                                              ; preds = %163
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %226

209:                                              ; preds = %164
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %225

211:                                              ; preds = %165
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %224

213:                                              ; preds = %166
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %223

215:                                              ; preds = %167
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %222

217:                                              ; preds = %168
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %169
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #5
  br label %221

221:                                              ; preds = %217, %219
  %.pn390 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #5
  br label %222

222:                                              ; preds = %215, %221
  %.pn390.pn = phi { ptr, i32 } [ %.pn390, %221 ], [ %216, %215 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #5
  br label %223

223:                                              ; preds = %213, %222
  %.pn390.pn.pn = phi { ptr, i32 } [ %.pn390.pn, %222 ], [ %214, %213 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #5
  br label %224

224:                                              ; preds = %211, %223
  %.pn390.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn, %223 ], [ %212, %211 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #5
  br label %225

225:                                              ; preds = %224, %209
  %.pn390.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn, %224 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %226

226:                                              ; preds = %207, %225
  %.pn390.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn, %225 ], [ %208, %207 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %227

227:                                              ; preds = %205, %226
  %.pn390.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn, %226 ], [ %206, %205 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #5
  br label %228

228:                                              ; preds = %203, %227
  %.pn390.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn, %227 ], [ %204, %203 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  br label %229

229:                                              ; preds = %201, %228
  %.pn390.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn.pn, %228 ], [ %202, %201 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #5
  br label %230

230:                                              ; preds = %199, %229
  %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn.pn.pn, %229 ], [ %200, %199 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #5
  br label %231

231:                                              ; preds = %197, %230
  %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn, %230 ], [ %198, %197 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  br label %232

232:                                              ; preds = %195, %231
  %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %231 ], [ %196, %195 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #5
  br label %233

233:                                              ; preds = %193, %232
  %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %232 ], [ %194, %193 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #5
  br label %294

234:                                              ; preds = %.critedge489
  %.pr = load double, ptr %147, align 8, !tbaa !21
  %235 = fcmp ule double %.pr, 0.000000e+00
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #5
  br i1 %235, label %236, label %251

236:                                              ; preds = %.thread527, %234
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %237 unwind label %253

237:                                              ; preds = %236
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull @.str.1)
          to label %238 unwind label %255

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @__FUNCTION__._ZN9LayerApex12createOLayerEddddddb, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %239 unwind label %257

239:                                              ; preds = %238
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %240 unwind label %259

240:                                              ; preds = %239
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.2)
          to label %241 unwind label %261

241:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %242 unwind label %263

242:                                              ; preds = %241
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %243 unwind label %265

243:                                              ; preds = %242
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.4)
          to label %244 unwind label %267

244:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #5
  store i32 213, ptr %60, align 4, !tbaa !16
  invoke void @_Z2_sIiENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 4 dereferenceable(4) %60)
          to label %245 unwind label %269

245:                                              ; preds = %244
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %246 unwind label %271

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %247 unwind label %273

247:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %65) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %248 unwind label %275

248:                                              ; preds = %247
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %249 unwind label %277

249:                                              ; preds = %248
  %250 = invoke noundef zeroext i1 @_Z6_cerr_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES4_i(ptr noundef nonnull %47, ptr noundef nonnull %61, i32 noundef 0)
          to label %.critedge504 unwind label %279

251:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #5
  br label %.critedge525

.critedge504:                                     ; preds = %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #5
  %.pre = load i8, ptr %66, align 2, !tbaa !5, !range !14
  %252 = trunc nuw i8 %.pre to i1
  br label %.critedge525

253:                                              ; preds = %236
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %293

255:                                              ; preds = %237
  %256 = landingpad { ptr, i32 }
          cleanup
  br label %292

257:                                              ; preds = %238
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %291

259:                                              ; preds = %239
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %290

261:                                              ; preds = %240
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %289

263:                                              ; preds = %241
  %264 = landingpad { ptr, i32 }
          cleanup
  br label %288

265:                                              ; preds = %242
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %287

267:                                              ; preds = %243
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %286

269:                                              ; preds = %244
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %285

271:                                              ; preds = %245
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %284

273:                                              ; preds = %246
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %283

275:                                              ; preds = %247
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %282

277:                                              ; preds = %248
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %281

279:                                              ; preds = %249
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #5
  br label %281

281:                                              ; preds = %277, %279
  %.pn404 = phi { ptr, i32 } [ %280, %279 ], [ %278, %277 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #5
  br label %282

282:                                              ; preds = %275, %281
  %.pn404.pn = phi { ptr, i32 } [ %.pn404, %281 ], [ %276, %275 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %65) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #5
  br label %283

283:                                              ; preds = %273, %282
  %.pn404.pn.pn = phi { ptr, i32 } [ %.pn404.pn, %282 ], [ %274, %273 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #5
  br label %284

284:                                              ; preds = %271, %283
  %.pn404.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn, %283 ], [ %272, %271 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #5
  br label %285

285:                                              ; preds = %284, %269
  %.pn404.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn, %284 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #5
  br label %286

286:                                              ; preds = %267, %285
  %.pn404.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn, %285 ], [ %268, %267 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #5
  br label %287

287:                                              ; preds = %265, %286
  %.pn404.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn, %286 ], [ %266, %265 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #5
  br label %288

288:                                              ; preds = %263, %287
  %.pn404.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn, %287 ], [ %264, %263 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #5
  br label %289

289:                                              ; preds = %261, %288
  %.pn404.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn.pn, %288 ], [ %262, %261 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #5
  br label %290

290:                                              ; preds = %259, %289
  %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn.pn.pn, %289 ], [ %260, %259 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #5
  br label %291

291:                                              ; preds = %257, %290
  %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn, %290 ], [ %258, %257 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #5
  br label %292

292:                                              ; preds = %255, %291
  %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %291 ], [ %256, %255 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #5
  br label %293

293:                                              ; preds = %253, %292
  %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %292 ], [ %254, %253 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #5
  br label %294

.critedge525:                                     ; preds = %.critedge504, %251, %.critedge453, %152
  %.0300 = phi i1 [ false, %152 ], [ false, %.critedge453 ], [ true, %251 ], [ %252, %.critedge504 ]
  ret i1 %.0300

294:                                              ; preds = %233, %293, %139
  %.pn404.pn.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.pn, %139 ], [ %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %293 ], [ %.pn390.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %233 ]
  resume { ptr, i32 } %.pn404.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK9LayerApex15layerCollapsePcEddddb(ptr noundef nonnull align 8 dereferenceable(144), double noundef, double noundef, double noundef, double noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 82}
!6 = !{!"_ZTS4Apex", !7, i64 8, !10, i64 16, !10, i64 24, !11, i64 32, !12, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 81, !7, i64 82, !7, i64 83, !13, i64 88}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTSSt4pairIidE", !12, i64 0, !10, i64 8}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = !{!12, !12, i64 0}
!17 = !{!10, !10, i64 0}
!18 = !{!19, !11, i64 112}
!19 = !{!"_ZTS9LayerApex", !6, i64 0, !12, i64 104, !11, i64 112, !10, i64 120, !11, i64 128, !10, i64 136}
!20 = !{!6, !10, i64 72}
!21 = !{!19, !10, i64 120}
!22 = !{!19, !11, i64 128}
!23 = !{!6, !10, i64 48}
!24 = !{!6, !10, i64 56}
!25 = !{!6, !7, i64 83}
!26 = !{!6, !10, i64 64}


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