; LLVM IR from Samson-Mano/EM_Propogation_simulation :: EM_Propogation_simulation/src/ImGui (imgui_draw)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef, float noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMinIfET_S0_S0_(float noundef, float noundef) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), float noundef, i32 noundef, i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef, float noundef, i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(196), i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui22RenderRectFilledRangeHEP10ImDrawListRK6ImRectjfff(ptr noundef %0, ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef %2, float noundef %3, float noundef %4, float noundef %5) #4 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca i32, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store i32 %2, ptr %9, align 4, !tbaa !9
  store float %3, ptr %10, align 4, !tbaa !11
  store float %4, ptr %11, align 4, !tbaa !11
  store float %5, ptr %12, align 4, !tbaa !11
  %36 = load float, ptr %11, align 4, !tbaa !11
  %37 = load float, ptr %10, align 4, !tbaa !11
  %38 = fcmp oeq float %36, %37
  br i1 %38, label %39, label %40

39:                                               ; preds = %6
  br label %297

40:                                               ; preds = %6
  %41 = load float, ptr %10, align 4, !tbaa !11
  %42 = load float, ptr %11, align 4, !tbaa !11
  %43 = fcmp ogt float %41, %42
  br i1 %43, label %44, label %45

44:                                               ; preds = %40
  call void @_ZL6ImSwapIfEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  br label %45

45:                                               ; preds = %44, %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %46 = load ptr, ptr %8, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.ImRect, ptr %46, i32 0, i32 0
  %48 = getelementptr inbounds %struct.ImVec2, ptr %47, i32 0, i32 0
  %49 = load float, ptr %48, align 4, !tbaa !13
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.ImRect, ptr %50, i32 0, i32 1
  %52 = getelementptr inbounds %struct.ImVec2, ptr %51, i32 0, i32 0
  %53 = load float, ptr %52, align 4, !tbaa !16
  %54 = load float, ptr %10, align 4, !tbaa !11
  %55 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %49, float noundef %53, float noundef %54)
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.ImRect, ptr %56, i32 0, i32 0
  %58 = getelementptr inbounds %struct.ImVec2, ptr %57, i32 0, i32 1
  %59 = load float, ptr %58, align 4, !tbaa !17
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %55, float noundef %59)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %60 = load ptr, ptr %8, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.ImRect, ptr %60, i32 0, i32 0
  %62 = getelementptr inbounds %struct.ImVec2, ptr %61, i32 0, i32 0
  %63 = load float, ptr %62, align 4, !tbaa !13
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.ImRect, ptr %64, i32 0, i32 1
  %66 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 0
  %67 = load float, ptr %66, align 4, !tbaa !16
  %68 = load float, ptr %11, align 4, !tbaa !11
  %69 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %63, float noundef %67, float noundef %68)
  %70 = load ptr, ptr %8, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  %72 = getelementptr inbounds %struct.ImVec2, ptr %71, i32 0, i32 1
  %73 = load float, ptr %72, align 4, !tbaa !18
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %69, float noundef %73)
  %74 = load float, ptr %12, align 4, !tbaa !11
  %75 = fcmp oeq float %74, 0.000000e+00
  br i1 %75, label %76, label %79

76:                                               ; preds = %45
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = load i32, ptr %9, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %77, ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef %78, float noundef 0.000000e+00, i32 noundef 0)
  store i32 1, ptr %15, align 4
  br label %295

79:                                               ; preds = %45
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.ImRect, ptr %80, i32 0, i32 1
  %82 = getelementptr inbounds %struct.ImVec2, ptr %81, i32 0, i32 0
  %83 = load float, ptr %82, align 4, !tbaa !16
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %86 = getelementptr inbounds %struct.ImVec2, ptr %85, i32 0, i32 0
  %87 = load float, ptr %86, align 4, !tbaa !13
  %88 = fsub float %83, %87
  %89 = fmul float %88, 5.000000e-01
  %90 = load ptr, ptr %8, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ImRect, ptr %90, i32 0, i32 1
  %92 = getelementptr inbounds %struct.ImVec2, ptr %91, i32 0, i32 1
  %93 = load float, ptr %92, align 4, !tbaa !18
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.ImRect, ptr %94, i32 0, i32 0
  %96 = getelementptr inbounds %struct.ImVec2, ptr %95, i32 0, i32 1
  %97 = load float, ptr %96, align 4, !tbaa !17
  %98 = fsub float %93, %97
  %99 = fmul float %98, 5.000000e-01
  %100 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %89, float noundef %99)
  %101 = fsub float %100, 1.000000e+00
  %102 = load float, ptr %12, align 4, !tbaa !11
  %103 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %101, float noundef 0.000000e+00, float noundef %102)
  store float %103, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %104 = load float, ptr %12, align 4, !tbaa !11
  %105 = fdiv float 1.000000e+00, %104
  store float %105, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %106 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 0
  %107 = load float, ptr %106, align 4, !tbaa !19
  %108 = load ptr, ptr %8, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.ImRect, ptr %108, i32 0, i32 0
  %110 = getelementptr inbounds %struct.ImVec2, ptr %109, i32 0, i32 0
  %111 = load float, ptr %110, align 4, !tbaa !13
  %112 = fsub float %107, %111
  %113 = load float, ptr %16, align 4, !tbaa !11
  %114 = fneg float %112
  %115 = call float @llvm.fmuladd.f32(float %114, float %113, float 1.000000e+00)
  %116 = call noundef float @_ZL8ImAcos01f(float noundef %115)
  store float %116, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %117 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %118 = load float, ptr %117, align 4, !tbaa !19
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.ImRect, ptr %119, i32 0, i32 0
  %121 = getelementptr inbounds %struct.ImVec2, ptr %120, i32 0, i32 0
  %122 = load float, ptr %121, align 4, !tbaa !13
  %123 = fsub float %118, %122
  %124 = load float, ptr %16, align 4, !tbaa !11
  %125 = fneg float %123
  %126 = call float @llvm.fmuladd.f32(float %125, float %124, float 1.000000e+00)
  %127 = call noundef float @_ZL8ImAcos01f(float noundef %126)
  store float %127, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store float 0x3FF921FB60000000, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %128 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 0
  %129 = load float, ptr %128, align 4, !tbaa !19
  %130 = load ptr, ptr %8, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.ImRect, ptr %130, i32 0, i32 0
  %132 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 0
  %133 = load float, ptr %132, align 4, !tbaa !13
  %134 = load float, ptr %12, align 4, !tbaa !11
  %135 = fadd float %133, %134
  %136 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %129, float noundef %135)
  store float %136, ptr %20, align 4, !tbaa !11
  %137 = load float, ptr %17, align 4, !tbaa !11
  %138 = load float, ptr %18, align 4, !tbaa !11
  %139 = fcmp oeq float %137, %138
  br i1 %139, label %140, label %149

140:                                              ; preds = %79
  %141 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %142 = load float, ptr %20, align 4, !tbaa !11
  %143 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %144 = load float, ptr %143, align 4, !tbaa !20
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %142, float noundef %144)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %141, ptr noundef nonnull align 4 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  %146 = load float, ptr %20, align 4, !tbaa !11
  %147 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %148 = load float, ptr %147, align 4, !tbaa !20
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef %146, float noundef %148)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %145, ptr noundef nonnull align 4 dereferenceable(8) %22)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %194

149:                                              ; preds = %79
  %150 = load float, ptr %17, align 4, !tbaa !11
  %151 = fcmp oeq float %150, 0.000000e+00
  br i1 %151, label %152, label %170

152:                                              ; preds = %149
  %153 = load float, ptr %18, align 4, !tbaa !11
  %154 = fcmp oeq float %153, 0x3FF921FB60000000
  br i1 %154, label %155, label %170

155:                                              ; preds = %152
  %156 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  %157 = load float, ptr %20, align 4, !tbaa !11
  %158 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %159 = load float, ptr %158, align 4, !tbaa !20
  %160 = load float, ptr %12, align 4, !tbaa !11
  %161 = fsub float %159, %160
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef %157, float noundef %161)
  %162 = load float, ptr %12, align 4, !tbaa !11
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %156, ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef %162, i32 noundef 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %164 = load float, ptr %20, align 4, !tbaa !11
  %165 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %166 = load float, ptr %165, align 4, !tbaa !20
  %167 = load float, ptr %12, align 4, !tbaa !11
  %168 = fadd float %166, %167
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef %164, float noundef %168)
  %169 = load float, ptr %12, align 4, !tbaa !11
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %163, ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef %169, i32 noundef 6, i32 noundef 9)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %193

170:                                              ; preds = %152, %149
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %172 = load float, ptr %20, align 4, !tbaa !11
  %173 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %174 = load float, ptr %173, align 4, !tbaa !20
  %175 = load float, ptr %12, align 4, !tbaa !11
  %176 = fsub float %174, %175
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %172, float noundef %176)
  %177 = load float, ptr %12, align 4, !tbaa !11
  %178 = load float, ptr %18, align 4, !tbaa !11
  %179 = fsub float 0x400921FB60000000, %178
  %180 = load float, ptr %17, align 4, !tbaa !11
  %181 = fsub float 0x400921FB60000000, %180
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %171, ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %177, float noundef %179, float noundef %181, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  %182 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %183 = load float, ptr %20, align 4, !tbaa !11
  %184 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %185 = load float, ptr %184, align 4, !tbaa !20
  %186 = load float, ptr %12, align 4, !tbaa !11
  %187 = fadd float %185, %186
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %26, float noundef %183, float noundef %187)
  %188 = load float, ptr %12, align 4, !tbaa !11
  %189 = load float, ptr %17, align 4, !tbaa !11
  %190 = fadd float 0x400921FB60000000, %189
  %191 = load float, ptr %18, align 4, !tbaa !11
  %192 = fadd float 0x400921FB60000000, %191
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %182, ptr noundef nonnull align 4 dereferenceable(8) %26, float noundef %188, float noundef %190, float noundef %192, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %193

193:                                              ; preds = %170, %155
  br label %194

194:                                              ; preds = %193, %140
  %195 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %196 = load float, ptr %195, align 4, !tbaa !19
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ImRect, ptr %197, i32 0, i32 0
  %199 = getelementptr inbounds %struct.ImVec2, ptr %198, i32 0, i32 0
  %200 = load float, ptr %199, align 4, !tbaa !13
  %201 = load float, ptr %12, align 4, !tbaa !11
  %202 = fadd float %200, %201
  %203 = fcmp ogt float %196, %202
  br i1 %203, label %204, label %292

204:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.ImRect, ptr %205, i32 0, i32 1
  %207 = getelementptr inbounds %struct.ImVec2, ptr %206, i32 0, i32 0
  %208 = load float, ptr %207, align 4, !tbaa !16
  %209 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %210 = load float, ptr %209, align 4, !tbaa !19
  %211 = fsub float %208, %210
  %212 = load float, ptr %16, align 4, !tbaa !11
  %213 = fneg float %211
  %214 = call float @llvm.fmuladd.f32(float %213, float %212, float 1.000000e+00)
  %215 = call noundef float @_ZL8ImAcos01f(float noundef %214)
  store float %215, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.ImRect, ptr %216, i32 0, i32 1
  %218 = getelementptr inbounds %struct.ImVec2, ptr %217, i32 0, i32 0
  %219 = load float, ptr %218, align 4, !tbaa !16
  %220 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 0
  %221 = load float, ptr %220, align 4, !tbaa !19
  %222 = fsub float %219, %221
  %223 = load float, ptr %16, align 4, !tbaa !11
  %224 = fneg float %222
  %225 = call float @llvm.fmuladd.f32(float %224, float %223, float 1.000000e+00)
  %226 = call noundef float @_ZL8ImAcos01f(float noundef %225)
  store float %226, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %227 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 0
  %228 = load float, ptr %227, align 4, !tbaa !19
  %229 = load ptr, ptr %8, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImRect, ptr %229, i32 0, i32 1
  %231 = getelementptr inbounds %struct.ImVec2, ptr %230, i32 0, i32 0
  %232 = load float, ptr %231, align 4, !tbaa !16
  %233 = load float, ptr %12, align 4, !tbaa !11
  %234 = fsub float %232, %233
  %235 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %228, float noundef %234)
  store float %235, ptr %29, align 4, !tbaa !11
  %236 = load float, ptr %27, align 4, !tbaa !11
  %237 = load float, ptr %28, align 4, !tbaa !11
  %238 = fcmp oeq float %236, %237
  br i1 %238, label %239, label %248

239:                                              ; preds = %204
  %240 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %241 = load float, ptr %29, align 4, !tbaa !11
  %242 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %243 = load float, ptr %242, align 4, !tbaa !20
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef %241, float noundef %243)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %240, ptr noundef nonnull align 4 dereferenceable(8) %30)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %245 = load float, ptr %29, align 4, !tbaa !11
  %246 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %247 = load float, ptr %246, align 4, !tbaa !20
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %245, float noundef %247)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %244, ptr noundef nonnull align 4 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %291

248:                                              ; preds = %204
  %249 = load float, ptr %27, align 4, !tbaa !11
  %250 = fcmp oeq float %249, 0.000000e+00
  br i1 %250, label %251, label %269

251:                                              ; preds = %248
  %252 = load float, ptr %28, align 4, !tbaa !11
  %253 = fcmp oeq float %252, 0x3FF921FB60000000
  br i1 %253, label %254, label %269

254:                                              ; preds = %251
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %256 = load float, ptr %29, align 4, !tbaa !11
  %257 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %258 = load float, ptr %257, align 4, !tbaa !20
  %259 = load float, ptr %12, align 4, !tbaa !11
  %260 = fadd float %258, %259
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %256, float noundef %260)
  %261 = load float, ptr %12, align 4, !tbaa !11
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %255, ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %261, i32 noundef 9, i32 noundef 12)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  %262 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %263 = load float, ptr %29, align 4, !tbaa !11
  %264 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %265 = load float, ptr %264, align 4, !tbaa !20
  %266 = load float, ptr %12, align 4, !tbaa !11
  %267 = fsub float %265, %266
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %263, float noundef %267)
  %268 = load float, ptr %12, align 4, !tbaa !11
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %262, ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %268, i32 noundef 0, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  br label %290

269:                                              ; preds = %251, %248
  %270 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %271 = load float, ptr %29, align 4, !tbaa !11
  %272 = getelementptr inbounds %struct.ImVec2, ptr %13, i32 0, i32 1
  %273 = load float, ptr %272, align 4, !tbaa !20
  %274 = load float, ptr %12, align 4, !tbaa !11
  %275 = fadd float %273, %274
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %271, float noundef %275)
  %276 = load float, ptr %12, align 4, !tbaa !11
  %277 = load float, ptr %28, align 4, !tbaa !11
  %278 = fneg float %277
  %279 = load float, ptr %27, align 4, !tbaa !11
  %280 = fneg float %279
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %270, ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %276, float noundef %278, float noundef %280, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %282 = load float, ptr %29, align 4, !tbaa !11
  %283 = getelementptr inbounds %struct.ImVec2, ptr %14, i32 0, i32 1
  %284 = load float, ptr %283, align 4, !tbaa !20
  %285 = load float, ptr %12, align 4, !tbaa !11
  %286 = fsub float %284, %285
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %282, float noundef %286)
  %287 = load float, ptr %12, align 4, !tbaa !11
  %288 = load float, ptr %27, align 4, !tbaa !11
  %289 = load float, ptr %28, align 4, !tbaa !11
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %281, ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %287, float noundef %288, float noundef %289, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  br label %290

290:                                              ; preds = %269, %254
  br label %291

291:                                              ; preds = %290, %239
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %292

292:                                              ; preds = %291, %194
  %293 = load ptr, ptr %7, align 8, !tbaa !5
  %294 = load i32, ptr %9, align 4, !tbaa !9
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(196) %293, i32 noundef %294)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  store i32 0, ptr %15, align 4
  br label %295

295:                                              ; preds = %292, %76
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  %296 = load i32, ptr %15, align 4
  switch i32 %296, label %298 [
    i32 0, label %297
    i32 1, label %297
  ]

297:                                              ; preds = %295, %295, %39
  ret void

298:                                              ; preds = %295
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZL6ImSwapIfEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef, float noundef, float noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL8ImAcos01f(float noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!15 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!16 = !{!14, !12, i64 8}
!17 = !{!14, !12, i64 4}
!18 = !{!14, !12, i64 12}
!19 = !{!15, !12, i64 0}
!20 = !{!15, !12, i64 4}


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

%struct.ImVec2 = type { float, float }

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMinIfET_S0_S0_(float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), float noundef, i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef, float noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(196), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5ImGui22RenderRectFilledRangeHEP10ImDrawListRK6ImRectjfff(ptr noundef %0, ptr nocapture noundef nonnull readonly align 4 dereferenceable(16) %1, i32 noundef %2, float noundef %3, float noundef %4, float noundef %5) local_unnamed_addr #4 {
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca %struct.ImVec2, align 4
  %10 = alloca %struct.ImVec2, align 4
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 4
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca %struct.ImVec2, align 4
  %17 = alloca %struct.ImVec2, align 4
  %18 = alloca %struct.ImVec2, align 4
  %19 = alloca %struct.ImVec2, align 4
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  store float %3, ptr %7, align 4, !tbaa !5
  store float %4, ptr %8, align 4, !tbaa !5
  %23 = fcmp oeq float %4, %3
  br i1 %23, label %145, label %24

24:                                               ; preds = %6
  %25 = fcmp ogt float %3, %4
  br i1 %25, label %26, label %27

26:                                               ; preds = %24
  call void @_ZL6ImSwapIfEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %.pre = load float, ptr %7, align 4, !tbaa !5
  br label %27

27:                                               ; preds = %26, %24
  %28 = phi float [ %.pre, %26 ], [ %3, %24 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %29 = load float, ptr %1, align 4, !tbaa !9
  %30 = getelementptr inbounds i8, ptr %1, i64 8
  %31 = load float, ptr %30, align 4, !tbaa !12
  %32 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %29, float noundef %31, float noundef %28)
  %33 = getelementptr inbounds i8, ptr %1, i64 4
  %34 = load float, ptr %33, align 4, !tbaa !13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef %32, float noundef %34)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  %35 = load float, ptr %1, align 4, !tbaa !9
  %36 = load float, ptr %30, align 4, !tbaa !12
  %37 = load float, ptr %8, align 4, !tbaa !5
  %38 = call noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef %35, float noundef %36, float noundef %37)
  %39 = getelementptr inbounds i8, ptr %1, i64 12
  %40 = load float, ptr %39, align 4, !tbaa !14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %38, float noundef %40)
  %41 = fcmp oeq float %5, 0.000000e+00
  br i1 %41, label %42, label %43

42:                                               ; preds = %27
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %10, i32 noundef %2, float noundef 0.000000e+00, i32 noundef 0)
  br label %144

43:                                               ; preds = %27
  %44 = load float, ptr %30, align 4, !tbaa !12
  %45 = load float, ptr %1, align 4, !tbaa !9
  %46 = fsub float %44, %45
  %47 = fmul float %46, 5.000000e-01
  %48 = load float, ptr %39, align 4, !tbaa !14
  %49 = load float, ptr %33, align 4, !tbaa !13
  %50 = fsub float %48, %49
  %51 = fmul float %50, 5.000000e-01
  %52 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %47, float noundef %51)
  %53 = fadd float %52, -1.000000e+00
  %54 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %53, float noundef 0.000000e+00, float noundef %5)
  %55 = fdiv float 1.000000e+00, %54
  %56 = load float, ptr %9, align 4, !tbaa !15
  %57 = load float, ptr %1, align 4, !tbaa !9
  %58 = fsub float %56, %57
  %59 = fneg float %58
  %60 = call float @llvm.fmuladd.f32(float %59, float %55, float 1.000000e+00)
  %61 = call noundef float @_ZL8ImAcos01f(float noundef %60)
  %62 = load float, ptr %10, align 4, !tbaa !15
  %63 = load float, ptr %1, align 4, !tbaa !9
  %64 = fsub float %62, %63
  %65 = fneg float %64
  %66 = call float @llvm.fmuladd.f32(float %65, float %55, float 1.000000e+00)
  %67 = call noundef float @_ZL8ImAcos01f(float noundef %66)
  %68 = load float, ptr %9, align 4, !tbaa !15
  %69 = load float, ptr %1, align 4, !tbaa !9
  %70 = fadd float %54, %69
  %71 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %68, float noundef %70)
  %72 = fcmp oeq float %61, %67
  br i1 %72, label %73, label %78

73:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %74 = getelementptr inbounds i8, ptr %10, i64 4
  %75 = load float, ptr %74, align 4, !tbaa !16
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef %71, float noundef %75)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %76 = getelementptr inbounds i8, ptr %9, i64 4
  %77 = load float, ptr %76, align 4, !tbaa !16
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %12, float noundef %71, float noundef %77)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  br label %98

78:                                               ; preds = %43
  %79 = fcmp oeq float %61, 0.000000e+00
  %80 = fcmp oeq float %67, 0x3FF921FB60000000
  %or.cond = and i1 %79, %80
  %81 = getelementptr inbounds i8, ptr %10, i64 4
  br i1 %or.cond, label %82, label %88

82:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %83 = load float, ptr %81, align 4, !tbaa !16
  %84 = fsub float %83, %54
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %71, float noundef %84)
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %54, i32 noundef 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %85 = getelementptr inbounds i8, ptr %9, i64 4
  %86 = load float, ptr %85, align 4, !tbaa !16
  %87 = fadd float %54, %86
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %71, float noundef %87)
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %54, i32 noundef 6, i32 noundef 9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  br label %98

88:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %89 = load float, ptr %81, align 4, !tbaa !16
  %90 = fsub float %89, %54
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %71, float noundef %90)
  %91 = fsub float 0x400921FB60000000, %67
  %92 = fsub float 0x400921FB60000000, %61
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %54, float noundef %91, float noundef %92, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %93 = getelementptr inbounds i8, ptr %9, i64 4
  %94 = load float, ptr %93, align 4, !tbaa !16
  %95 = fadd float %54, %94
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %71, float noundef %95)
  %96 = fadd float %61, 0x400921FB60000000
  %97 = fadd float %67, 0x400921FB60000000
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %54, float noundef %96, float noundef %97, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %98

98:                                               ; preds = %82, %88, %73
  %99 = load float, ptr %10, align 4, !tbaa !15
  %100 = load float, ptr %1, align 4, !tbaa !9
  %101 = fadd float %54, %100
  %102 = fcmp ogt float %99, %101
  br i1 %102, label %103, label %143

103:                                              ; preds = %98
  %104 = load float, ptr %30, align 4, !tbaa !12
  %105 = fsub float %104, %99
  %106 = fneg float %105
  %107 = call float @llvm.fmuladd.f32(float %106, float %55, float 1.000000e+00)
  %108 = call noundef float @_ZL8ImAcos01f(float noundef %107)
  %109 = load float, ptr %30, align 4, !tbaa !12
  %110 = load float, ptr %9, align 4, !tbaa !15
  %111 = fsub float %109, %110
  %112 = fneg float %111
  %113 = call float @llvm.fmuladd.f32(float %112, float %55, float 1.000000e+00)
  %114 = call noundef float @_ZL8ImAcos01f(float noundef %113)
  %115 = load float, ptr %10, align 4, !tbaa !15
  %116 = load float, ptr %30, align 4, !tbaa !12
  %117 = fsub float %116, %54
  %118 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %115, float noundef %117)
  %119 = fcmp oeq float %108, %114
  br i1 %119, label %120, label %125

120:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %121 = getelementptr inbounds i8, ptr %9, i64 4
  %122 = load float, ptr %121, align 4, !tbaa !16
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef %118, float noundef %122)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %123 = getelementptr inbounds i8, ptr %10, i64 4
  %124 = load float, ptr %123, align 4, !tbaa !16
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %118, float noundef %124)
  call void @_ZN10ImDrawList10PathLineToERK6ImVec2(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  br label %143

125:                                              ; preds = %103
  %126 = fcmp oeq float %108, 0.000000e+00
  %127 = fcmp oeq float %114, 0x3FF921FB60000000
  %or.cond3 = and i1 %126, %127
  %128 = getelementptr inbounds i8, ptr %9, i64 4
  br i1 %or.cond3, label %129, label %135

129:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %130 = load float, ptr %128, align 4, !tbaa !16
  %131 = fadd float %54, %130
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %118, float noundef %131)
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %54, i32 noundef 9, i32 noundef 12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %132 = getelementptr inbounds i8, ptr %10, i64 4
  %133 = load float, ptr %132, align 4, !tbaa !16
  %134 = fsub float %133, %54
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %118, float noundef %134)
  call void @_ZN10ImDrawList13PathArcToFastERK6ImVec2fii(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %54, i32 noundef 0, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %143

135:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %136 = load float, ptr %128, align 4, !tbaa !16
  %137 = fadd float %54, %136
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %118, float noundef %137)
  %138 = fneg float %114
  %139 = fneg float %108
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %54, float noundef %138, float noundef %139, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %140 = getelementptr inbounds i8, ptr %10, i64 4
  %141 = load float, ptr %140, align 4, !tbaa !16
  %142 = fsub float %141, %54
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef %118, float noundef %142)
  call void @_ZN10ImDrawList9PathArcToERK6ImVec2fffi(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef %54, float noundef %108, float noundef %114, i32 noundef 3)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %143

143:                                              ; preds = %120, %135, %129, %98
  call void @_ZN10ImDrawList14PathFillConvexEj(ptr noundef nonnull align 8 dereferenceable(196) %0, i32 noundef %2)
  br label %144

144:                                              ; preds = %143, %42
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  br label %145

145:                                              ; preds = %6, %144
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZL6ImSwapIfEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImLerpIfET_S0_S0_f(float noundef, float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL8ImAcos01f(float noundef) local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!11 = !{!"_ZTS6ImVec2", !6, i64 0, !6, i64 4}
!12 = !{!10, !6, i64 8}
!13 = !{!10, !6, i64 4}
!14 = !{!10, !6, i64 12}
!15 = !{!11, !6, i64 0}
!16 = !{!11, !6, i64 4}


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