; LLVM IR from PepcyCh/bisemutum-engine :: bisemutum/thirdparty/ImGuizmo/GraphEditor.ll (ZN11GraphEditor11EditOptionsERNS_7OptionsE)

; 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.ImColor = type { %struct.ImVec4 }
%struct.ImVec4 = type { float, float, float, float }
%"struct.GraphEditor::Options" = type { %struct.ImRect, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, float, i8, i8, i8, i8 }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [23 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11GraphEditor11EditOptionsERNS_7OptionsE(ptr noundef nonnull align 4 dereferenceable(104) %0) #1 {
  %2 = alloca ptr, align 8
  %3 = alloca i8, align 1
  %4 = alloca %struct.ImColor, align 4
  %5 = alloca %struct.ImColor, align 4
  %6 = alloca %struct.ImColor, align 4
  %7 = alloca %struct.ImColor, align 4
  %8 = alloca %struct.ImColor, align 4
  %9 = alloca %struct.ImColor, align 4
  %10 = alloca %struct.ImColor, align 4
  %11 = alloca %struct.ImColor, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #4
  store i8 0, ptr %3, align 1, !tbaa !9
  %12 = call noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef @.str, ptr noundef null, i32 noundef 0)
  br i1 %12, label %13, label %126

13:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #4
  %14 = load ptr, ptr %2, align 8, !tbaa !5
  %15 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %14, i32 0, i32 1
  %16 = load i32, ptr %15, align 4, !tbaa !11
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %4, i32 noundef %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #4
  %17 = load ptr, ptr %2, align 8, !tbaa !5
  %18 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %17, i32 0, i32 2
  %19 = load i32, ptr %18, align 4, !tbaa !17
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %5, i32 noundef %19)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #4
  %20 = load ptr, ptr %2, align 8, !tbaa !5
  %21 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %20, i32 0, i32 4
  %22 = load i32, ptr %21, align 4, !tbaa !18
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %6, i32 noundef %22)
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #4
  %23 = load ptr, ptr %2, align 8, !tbaa !5
  %24 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %23, i32 0, i32 5
  %25 = load i32, ptr %24, align 4, !tbaa !19
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %7, i32 noundef %25)
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #4
  %26 = load ptr, ptr %2, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %26, i32 0, i32 6
  %28 = load i32, ptr %27, align 4, !tbaa !20
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %8, i32 noundef %28)
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #4
  %29 = load ptr, ptr %2, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %29, i32 0, i32 7
  %31 = load i32, ptr %30, align 4, !tbaa !21
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %31)
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #4
  %32 = load ptr, ptr %2, align 8, !tbaa !5
  %33 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %32, i32 0, i32 8
  %34 = load i32, ptr %33, align 4, !tbaa !22
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %10, i32 noundef %34)
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #4
  %35 = load ptr, ptr %2, align 8, !tbaa !5
  %36 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %35, i32 0, i32 9
  %37 = load i32, ptr %36, align 4, !tbaa !23
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %37)
  %38 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.1, ptr noundef %4, i32 noundef 0)
  %39 = zext i1 %38 to i32
  %40 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %41 = trunc i8 %40 to i1
  %42 = zext i1 %41 to i32
  %43 = or i32 %42, %39
  %44 = icmp ne i32 %43, 0
  %45 = zext i1 %44 to i8
  store i8 %45, ptr %3, align 1, !tbaa !9
  %46 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.2, ptr noundef %5, i32 noundef 0)
  %47 = zext i1 %46 to i32
  %48 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %49 = trunc i8 %48 to i1
  %50 = zext i1 %49 to i32
  %51 = or i32 %50, %47
  %52 = icmp ne i32 %51, 0
  %53 = zext i1 %52 to i8
  store i8 %53, ptr %3, align 1, !tbaa !9
  %54 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.3, ptr noundef %6, i32 noundef 0)
  %55 = zext i1 %54 to i32
  %56 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %57 = trunc i8 %56 to i1
  %58 = zext i1 %57 to i32
  %59 = or i32 %58, %55
  %60 = icmp ne i32 %59, 0
  %61 = zext i1 %60 to i8
  store i8 %61, ptr %3, align 1, !tbaa !9
  %62 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.4, ptr noundef %7, i32 noundef 0)
  %63 = zext i1 %62 to i32
  %64 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %65 = trunc i8 %64 to i1
  %66 = zext i1 %65 to i32
  %67 = or i32 %66, %63
  %68 = icmp ne i32 %67, 0
  %69 = zext i1 %68 to i8
  store i8 %69, ptr %3, align 1, !tbaa !9
  %70 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.5, ptr noundef %8, i32 noundef 0)
  %71 = zext i1 %70 to i32
  %72 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %73 = trunc i8 %72 to i1
  %74 = zext i1 %73 to i32
  %75 = or i32 %74, %71
  %76 = icmp ne i32 %75, 0
  %77 = zext i1 %76 to i8
  store i8 %77, ptr %3, align 1, !tbaa !9
  %78 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.6, ptr noundef %9, i32 noundef 0)
  %79 = zext i1 %78 to i32
  %80 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %81 = trunc i8 %80 to i1
  %82 = zext i1 %81 to i32
  %83 = or i32 %82, %79
  %84 = icmp ne i32 %83, 0
  %85 = zext i1 %84 to i8
  store i8 %85, ptr %3, align 1, !tbaa !9
  %86 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.7, ptr noundef %10, i32 noundef 0)
  %87 = zext i1 %86 to i32
  %88 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %89 = trunc i8 %88 to i1
  %90 = zext i1 %89 to i32
  %91 = or i32 %90, %87
  %92 = icmp ne i32 %91, 0
  %93 = zext i1 %92 to i8
  store i8 %93, ptr %3, align 1, !tbaa !9
  %94 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef @.str.8, ptr noundef %11, i32 noundef 0)
  %95 = zext i1 %94 to i32
  %96 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %97 = trunc i8 %96 to i1
  %98 = zext i1 %97 to i32
  %99 = or i32 %98, %95
  %100 = icmp ne i32 %99, 0
  %101 = zext i1 %100 to i8
  store i8 %101, ptr %3, align 1, !tbaa !9
  %102 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  %103 = load ptr, ptr %2, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %103, i32 0, i32 1
  store i32 %102, ptr %104, align 4, !tbaa !11
  %105 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %5)
  %106 = load ptr, ptr %2, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %106, i32 0, i32 2
  store i32 %105, ptr %107, align 4, !tbaa !17
  %108 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %6)
  %109 = load ptr, ptr %2, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %109, i32 0, i32 4
  store i32 %108, ptr %110, align 4, !tbaa !18
  %111 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %7)
  %112 = load ptr, ptr %2, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %112, i32 0, i32 5
  store i32 %111, ptr %113, align 4, !tbaa !19
  %114 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %8)
  %115 = load ptr, ptr %2, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %115, i32 0, i32 6
  store i32 %114, ptr %116, align 4, !tbaa !20
  %117 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  %118 = load ptr, ptr %2, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %118, i32 0, i32 7
  store i32 %117, ptr %119, align 4, !tbaa !21
  %120 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %10)
  %121 = load ptr, ptr %2, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %121, i32 0, i32 8
  store i32 %120, ptr %122, align 4, !tbaa !22
  %123 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  %124 = load ptr, ptr %2, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %124, i32 0, i32 9
  store i32 %123, ptr %125, align 4, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #4
  br label %126

126:                                              ; preds = %13, %1
  %127 = call noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef @.str.9, ptr noundef null, i32 noundef 0)
  br i1 %127, label %128, label %312

128:                                              ; preds = %126
  %129 = load ptr, ptr %2, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %129, i32 0, i32 0
  %131 = getelementptr inbounds %struct.ImRect, ptr %130, i32 0, i32 0
  %132 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 0
  %133 = call noundef zeroext i1 @_ZN5ImGui11InputFloat4EPKcPfS1_i(ptr noundef @.str.10, ptr noundef %132, ptr noundef @.str.11, i32 noundef 0)
  %134 = zext i1 %133 to i32
  %135 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %136 = trunc i8 %135 to i1
  %137 = zext i1 %136 to i32
  %138 = or i32 %137, %134
  %139 = icmp ne i32 %138, 0
  %140 = zext i1 %139 to i8
  store i8 %140, ptr %3, align 1, !tbaa !9
  %141 = load ptr, ptr %2, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %141, i32 0, i32 10
  %143 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.12, ptr noundef %142, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %144 = zext i1 %143 to i32
  %145 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %146 = trunc i8 %145 to i1
  %147 = zext i1 %146 to i32
  %148 = or i32 %147, %144
  %149 = icmp ne i32 %148, 0
  %150 = zext i1 %149 to i8
  store i8 %150, ptr %3, align 1, !tbaa !9
  %151 = load ptr, ptr %2, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %151, i32 0, i32 11
  %153 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.13, ptr noundef %152, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %154 = zext i1 %153 to i32
  %155 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %156 = trunc i8 %155 to i1
  %157 = zext i1 %156 to i32
  %158 = or i32 %157, %154
  %159 = icmp ne i32 %158, 0
  %160 = zext i1 %159 to i8
  store i8 %160, ptr %3, align 1, !tbaa !9
  %161 = load ptr, ptr %2, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %161, i32 0, i32 12
  %163 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.14, ptr noundef %162, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %164 = zext i1 %163 to i32
  %165 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %166 = trunc i8 %165 to i1
  %167 = zext i1 %166 to i32
  %168 = or i32 %167, %164
  %169 = icmp ne i32 %168, 0
  %170 = zext i1 %169 to i8
  store i8 %170, ptr %3, align 1, !tbaa !9
  %171 = load ptr, ptr %2, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %171, i32 0, i32 13
  %173 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.15, ptr noundef %172, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %174 = zext i1 %173 to i32
  %175 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %176 = trunc i8 %175 to i1
  %177 = zext i1 %176 to i32
  %178 = or i32 %177, %174
  %179 = icmp ne i32 %178, 0
  %180 = zext i1 %179 to i8
  store i8 %180, ptr %3, align 1, !tbaa !9
  %181 = load ptr, ptr %2, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %181, i32 0, i32 14
  %183 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.16, ptr noundef %182, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %184 = zext i1 %183 to i32
  %185 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %186 = trunc i8 %185 to i1
  %187 = zext i1 %186 to i32
  %188 = or i32 %187, %184
  %189 = icmp ne i32 %188, 0
  %190 = zext i1 %189 to i8
  store i8 %190, ptr %3, align 1, !tbaa !9
  %191 = load ptr, ptr %2, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %191, i32 0, i32 15
  %193 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.17, ptr noundef %192, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %194 = zext i1 %193 to i32
  %195 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %196 = trunc i8 %195 to i1
  %197 = zext i1 %196 to i32
  %198 = or i32 %197, %194
  %199 = icmp ne i32 %198, 0
  %200 = zext i1 %199 to i8
  store i8 %200, ptr %3, align 1, !tbaa !9
  %201 = load ptr, ptr %2, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %201, i32 0, i32 16
  %203 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.18, ptr noundef %202, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %204 = zext i1 %203 to i32
  %205 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %206 = trunc i8 %205 to i1
  %207 = zext i1 %206 to i32
  %208 = or i32 %207, %204
  %209 = icmp ne i32 %208, 0
  %210 = zext i1 %209 to i8
  store i8 %210, ptr %3, align 1, !tbaa !9
  %211 = load ptr, ptr %2, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %211, i32 0, i32 17
  %213 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.19, ptr noundef %212, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %214 = zext i1 %213 to i32
  %215 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %216 = trunc i8 %215 to i1
  %217 = zext i1 %216 to i32
  %218 = or i32 %217, %214
  %219 = icmp ne i32 %218, 0
  %220 = zext i1 %219 to i8
  store i8 %220, ptr %3, align 1, !tbaa !9
  %221 = load ptr, ptr %2, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %221, i32 0, i32 18
  %223 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.20, ptr noundef %222, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %224 = zext i1 %223 to i32
  %225 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %226 = trunc i8 %225 to i1
  %227 = zext i1 %226 to i32
  %228 = or i32 %227, %224
  %229 = icmp ne i32 %228, 0
  %230 = zext i1 %229 to i8
  store i8 %230, ptr %3, align 1, !tbaa !9
  %231 = load ptr, ptr %2, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %231, i32 0, i32 19
  %233 = call noundef zeroext i1 @_ZN5ImGui11InputFloat2EPKcPfS1_i(ptr noundef @.str.21, ptr noundef %232, ptr noundef @.str.11, i32 noundef 0)
  %234 = zext i1 %233 to i32
  %235 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %236 = trunc i8 %235 to i1
  %237 = zext i1 %236 to i32
  %238 = or i32 %237, %234
  %239 = icmp ne i32 %238, 0
  %240 = zext i1 %239 to i8
  store i8 %240, ptr %3, align 1, !tbaa !9
  %241 = load ptr, ptr %2, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %241, i32 0, i32 21
  %243 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef @.str.20, ptr noundef %242, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef @.str.11, i32 noundef 0)
  %244 = zext i1 %243 to i32
  %245 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %246 = trunc i8 %245 to i1
  %247 = zext i1 %246 to i32
  %248 = or i32 %247, %244
  %249 = icmp ne i32 %248, 0
  %250 = zext i1 %249 to i8
  store i8 %250, ptr %3, align 1, !tbaa !9
  %251 = load ptr, ptr %2, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %251, i32 0, i32 22
  %253 = load i8, ptr %252, align 4, !tbaa !26, !range !24, !noundef !25
  %254 = trunc i8 %253 to i1
  %255 = call noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef @.str.22, i1 noundef zeroext %254)
  br i1 %255, label %256, label %265

256:                                              ; preds = %128
  %257 = load ptr, ptr %2, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %257, i32 0, i32 22
  %259 = load i8, ptr %258, align 4, !tbaa !26, !range !24, !noundef !25
  %260 = trunc i8 %259 to i1
  %261 = xor i1 %260, true
  %262 = load ptr, ptr %2, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %262, i32 0, i32 22
  %264 = zext i1 %261 to i8
  store i8 %264, ptr %263, align 4, !tbaa !26
  store i8 1, ptr %3, align 1, !tbaa !9
  br label %265

265:                                              ; preds = %256, %128
  %266 = load ptr, ptr %2, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %266, i32 0, i32 22
  %268 = load i8, ptr %267, align 4, !tbaa !26, !range !24, !noundef !25
  %269 = trunc i8 %268 to i1
  %270 = xor i1 %269, true
  %271 = call noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef @.str.23, i1 noundef zeroext %270)
  br i1 %271, label %272, label %281

272:                                              ; preds = %265
  %273 = load ptr, ptr %2, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %273, i32 0, i32 22
  %275 = load i8, ptr %274, align 4, !tbaa !26, !range !24, !noundef !25
  %276 = trunc i8 %275 to i1
  %277 = xor i1 %276, true
  %278 = load ptr, ptr %2, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %278, i32 0, i32 22
  %280 = zext i1 %277 to i8
  store i8 %280, ptr %279, align 4, !tbaa !26
  store i8 1, ptr %3, align 1, !tbaa !9
  br label %281

281:                                              ; preds = %272, %265
  %282 = load ptr, ptr %2, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %282, i32 0, i32 23
  %284 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.24, ptr noundef %283)
  %285 = zext i1 %284 to i32
  %286 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %287 = trunc i8 %286 to i1
  %288 = zext i1 %287 to i32
  %289 = or i32 %288, %285
  %290 = icmp ne i32 %289, 0
  %291 = zext i1 %290 to i8
  store i8 %291, ptr %3, align 1, !tbaa !9
  %292 = load ptr, ptr %2, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %292, i32 0, i32 24
  %294 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.25, ptr noundef %293)
  %295 = zext i1 %294 to i32
  %296 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %297 = trunc i8 %296 to i1
  %298 = zext i1 %297 to i32
  %299 = or i32 %298, %295
  %300 = icmp ne i32 %299, 0
  %301 = zext i1 %300 to i8
  store i8 %301, ptr %3, align 1, !tbaa !9
  %302 = load ptr, ptr %2, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.GraphEditor::Options", ptr %302, i32 0, i32 25
  %304 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef @.str.26, ptr noundef %303)
  %305 = zext i1 %304 to i32
  %306 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %307 = trunc i8 %306 to i1
  %308 = zext i1 %307 to i32
  %309 = or i32 %308, %305
  %310 = icmp ne i32 %309, 0
  %311 = zext i1 %310 to i8
  store i8 %311, ptr %3, align 1, !tbaa !9
  br label %312

312:                                              ; preds = %281, %126
  %313 = load i8, ptr %3, align 1, !tbaa !9, !range !24, !noundef !25
  %314 = trunc i8 %313 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #4
  ret i1 %314
}

declare noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16)) #3 align 2

declare noundef zeroext i1 @_ZN5ImGui11InputFloat4EPKcPfS1_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #2

declare noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef, ptr noundef, float noundef, float noundef, ptr noundef, i32 noundef) #2

declare noundef zeroext i1 @_ZN5ImGui11InputFloat2EPKcPfS1_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #2

declare noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef, i1 noundef zeroext) #2

declare noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef, ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { 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 #4 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !16, i64 16}
!12 = !{!"_ZTSN11GraphEditor7OptionsE", !13, i64 0, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !15, i64 52, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !15, i64 76, !15, i64 80, !15, i64 84, !15, i64 88, !15, i64 92, !15, i64 96, !10, i64 100, !10, i64 101, !10, i64 102, !10, i64 103}
!13 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!12, !16, i64 20}
!18 = !{!12, !16, i64 28}
!19 = !{!12, !16, i64 32}
!20 = !{!12, !16, i64 36}
!21 = !{!12, !16, i64 40}
!22 = !{!12, !16, i64 44}
!23 = !{!12, !16, i64 48}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!12, !10, i64 100}


; 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.ImColor = type { %struct.ImVec4 }
%struct.ImVec4 = type { float, float, float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [23 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11GraphEditor11EditOptionsERNS_7OptionsE(ptr noundef nonnull align 4 dereferenceable(104) %0) local_unnamed_addr #1 {
  %2 = alloca %struct.ImColor, align 4
  %3 = alloca %struct.ImColor, align 4
  %4 = alloca %struct.ImColor, align 4
  %5 = alloca %struct.ImColor, align 4
  %6 = alloca %struct.ImColor, align 4
  %7 = alloca %struct.ImColor, align 4
  %8 = alloca %struct.ImColor, align 4
  %9 = alloca %struct.ImColor, align 4
  %10 = tail call noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef nonnull @.str, ptr noundef null, i32 noundef 0)
  br i1 %10, label %11, label %51

11:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  %12 = getelementptr inbounds i8, ptr %0, i64 16
  %13 = load i32, ptr %12, align 4, !tbaa !5
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %2, i32 noundef %13)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #4
  %14 = getelementptr inbounds i8, ptr %0, i64 20
  %15 = load i32, ptr %14, align 4, !tbaa !14
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %3, i32 noundef %15)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #4
  %16 = getelementptr inbounds i8, ptr %0, i64 28
  %17 = load i32, ptr %16, align 4, !tbaa !15
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %4, i32 noundef %17)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #4
  %18 = getelementptr inbounds i8, ptr %0, i64 32
  %19 = load i32, ptr %18, align 4, !tbaa !16
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %5, i32 noundef %19)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #4
  %20 = getelementptr inbounds i8, ptr %0, i64 36
  %21 = load i32, ptr %20, align 4, !tbaa !17
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %6, i32 noundef %21)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #4
  %22 = getelementptr inbounds i8, ptr %0, i64 40
  %23 = load i32, ptr %22, align 4, !tbaa !18
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %7, i32 noundef %23)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #4
  %24 = getelementptr inbounds i8, ptr %0, i64 44
  %25 = load i32, ptr %24, align 4, !tbaa !19
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %8, i32 noundef %25)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #4
  %26 = getelementptr inbounds i8, ptr %0, i64 48
  %27 = load i32, ptr %26, align 4, !tbaa !20
  call void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %27)
  %28 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.1, ptr noundef nonnull %2, i32 noundef 0)
  %29 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, i32 noundef 0)
  %30 = or i1 %28, %29
  %31 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.3, ptr noundef nonnull %4, i32 noundef 0)
  %32 = or i1 %30, %31
  %33 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.4, ptr noundef nonnull %5, i32 noundef 0)
  %34 = or i1 %32, %33
  %35 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.5, ptr noundef nonnull %6, i32 noundef 0)
  %36 = or i1 %34, %35
  %37 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.6, ptr noundef nonnull %7, i32 noundef 0)
  %38 = or i1 %36, %37
  %39 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.7, ptr noundef nonnull %8, i32 noundef 0)
  %40 = or i1 %38, %39
  %41 = call noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef nonnull @.str.8, ptr noundef nonnull %9, i32 noundef 0)
  %42 = or i1 %40, %41
  %43 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %2)
  store i32 %43, ptr %12, align 4, !tbaa !5
  %44 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %3)
  store i32 %44, ptr %14, align 4, !tbaa !14
  %45 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %4)
  store i32 %45, ptr %16, align 4, !tbaa !15
  %46 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %5)
  store i32 %46, ptr %18, align 4, !tbaa !16
  %47 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %6)
  store i32 %47, ptr %20, align 4, !tbaa !17
  %48 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %7)
  store i32 %48, ptr %22, align 4, !tbaa !18
  %49 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %8)
  store i32 %49, ptr %24, align 4, !tbaa !19
  %50 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  store i32 %50, ptr %26, align 4, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  br label %51

51:                                               ; preds = %11, %1
  %.0 = phi i1 [ %42, %11 ], [ false, %1 ]
  %52 = call noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef nonnull @.str.9, ptr noundef null, i32 noundef 0)
  br i1 %52, label %53, label %113

53:                                               ; preds = %51
  %54 = call noundef zeroext i1 @_ZN5ImGui11InputFloat4EPKcPfS1_i(ptr noundef nonnull @.str.10, ptr noundef nonnull %0, ptr noundef nonnull @.str.11, i32 noundef 0)
  %55 = getelementptr inbounds i8, ptr %0, i64 52
  %56 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.12, ptr noundef nonnull %55, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %57 = or i1 %54, %56
  %58 = getelementptr inbounds i8, ptr %0, i64 56
  %59 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.13, ptr noundef nonnull %58, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %60 = or i1 %57, %59
  %61 = getelementptr inbounds i8, ptr %0, i64 60
  %62 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.14, ptr noundef nonnull %61, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %63 = or i1 %60, %62
  %64 = getelementptr inbounds i8, ptr %0, i64 64
  %65 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.15, ptr noundef nonnull %64, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %66 = or i1 %63, %65
  %67 = getelementptr inbounds i8, ptr %0, i64 68
  %68 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.16, ptr noundef nonnull %67, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %69 = or i1 %66, %68
  %70 = getelementptr inbounds i8, ptr %0, i64 72
  %71 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.17, ptr noundef nonnull %70, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %72 = or i1 %69, %71
  %73 = getelementptr inbounds i8, ptr %0, i64 76
  %74 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.18, ptr noundef nonnull %73, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %75 = or i1 %72, %74
  %76 = getelementptr inbounds i8, ptr %0, i64 80
  %77 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.19, ptr noundef nonnull %76, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %78 = or i1 %75, %77
  %79 = getelementptr inbounds i8, ptr %0, i64 84
  %80 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.20, ptr noundef nonnull %79, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %81 = or i1 %78, %80
  %82 = getelementptr inbounds i8, ptr %0, i64 88
  %83 = call noundef zeroext i1 @_ZN5ImGui11InputFloat2EPKcPfS1_i(ptr noundef nonnull @.str.21, ptr noundef nonnull %82, ptr noundef nonnull @.str.11, i32 noundef 0)
  %84 = or i1 %81, %83
  %85 = getelementptr inbounds i8, ptr %0, i64 96
  %86 = call noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef nonnull @.str.20, ptr noundef nonnull %85, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull @.str.11, i32 noundef 0)
  %87 = or i1 %84, %86
  %88 = or i1 %.0, %87
  %89 = getelementptr inbounds i8, ptr %0, i64 100
  %90 = load i8, ptr %89, align 4, !tbaa !21, !range !22, !noundef !23
  %91 = trunc nuw i8 %90 to i1
  %92 = call noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef nonnull @.str.22, i1 noundef zeroext %91)
  %.pre = load i8, ptr %89, align 4, !tbaa !21, !range !22
  br i1 %92, label %93, label %95

93:                                               ; preds = %53
  %94 = xor i8 %.pre, 1
  store i8 %94, ptr %89, align 4, !tbaa !21
  br label %95

95:                                               ; preds = %93, %53
  %96 = phi i8 [ %94, %93 ], [ %.pre, %53 ]
  %.1 = phi i1 [ true, %93 ], [ %88, %53 ]
  %97 = trunc nuw i8 %96 to i1
  %98 = xor i1 %97, true
  %99 = call noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef nonnull @.str.23, i1 noundef zeroext %98)
  br i1 %99, label %100, label %103

100:                                              ; preds = %95
  %101 = load i8, ptr %89, align 4, !tbaa !21, !range !22, !noundef !23
  %102 = xor i8 %101, 1
  store i8 %102, ptr %89, align 4, !tbaa !21
  br label %103

103:                                              ; preds = %100, %95
  %.2 = phi i1 [ true, %100 ], [ %.1, %95 ]
  %104 = getelementptr inbounds i8, ptr %0, i64 101
  %105 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.24, ptr noundef nonnull %104)
  %106 = or i1 %.2, %105
  %107 = getelementptr inbounds i8, ptr %0, i64 102
  %108 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.25, ptr noundef nonnull %107)
  %109 = or i1 %106, %108
  %110 = getelementptr inbounds i8, ptr %0, i64 103
  %111 = call noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef nonnull @.str.26, ptr noundef nonnull %110)
  %112 = or i1 %109, %111
  br label %113

113:                                              ; preds = %103, %51
  %.3 = phi i1 [ %112, %103 ], [ %.0, %51 ]
  ret i1 %.3
}

declare noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcPbi(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ImColorC2Ej(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN5ImGui10ColorEdit4EPKcPfi(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #3 align 2

declare noundef zeroext i1 @_ZN5ImGui11InputFloat4EPKcPfS1_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui10InputFloatEPKcPfffS1_i(ptr noundef, ptr noundef, float noundef, float noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui11InputFloat2EPKcPfS1_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui11RadioButtonEPKcb(ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui8CheckboxEPKcPb(ptr noundef, ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { 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 #4 = { 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, !12, i64 16}
!6 = !{!"_ZTSN11GraphEditor7OptionsE", !7, i64 0, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !9, i64 52, !9, i64 56, !9, i64 60, !9, i64 64, !9, i64 68, !9, i64 72, !9, i64 76, !9, i64 80, !9, i64 84, !9, i64 88, !9, i64 92, !9, i64 96, !13, i64 100, !13, i64 101, !13, i64 102, !13, i64 103}
!7 = !{!"_ZTS6ImRect", !8, i64 0, !8, i64 8}
!8 = !{!"_ZTS6ImVec2", !9, i64 0, !9, i64 4}
!9 = !{!"float", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"int", !10, i64 0}
!13 = !{!"bool", !10, i64 0}
!14 = !{!6, !12, i64 20}
!15 = !{!6, !12, i64 28}
!16 = !{!6, !12, i64 32}
!17 = !{!6, !12, i64 36}
!18 = !{!6, !12, i64 40}
!19 = !{!6, !12, i64 44}
!20 = !{!6, !12, i64 48}
!21 = !{!6, !13, i64 100}
!22 = !{i8 0, i8 2}
!23 = !{}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,TailCallElimPass