; LLVM IR from Xingyu-Lin/softgym :: PyFlex/bindings/demo/imgui.ll (Z11imguiSliderPKcPffffb)

; 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.GuiState = type { i8, i8, i8, i32, i32, i32, i32, i32, i32, i8, i8, i8, i32, i32, float, i32, i32, i32, i8, i32, i32 }

@_ZL7g_state = external hidden global %struct.GuiState, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL20addGfxCmdRoundedRectfffffj(float noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL11buttonLogicjb(i32 noundef, i1 noundef zeroext) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z8isActivej(i32 noundef) #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z5isHotj(i32 noundef) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z11imguiSliderPKcPffffb(ptr noundef %0, ptr noundef %1, float noundef %2, float noundef %3, float noundef %4, i1 noundef zeroext %5) #2 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca i8, align 1
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca float, align 4
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i32, align 4
  %25 = alloca [16 x i8], align 16
  %26 = alloca [128 x i8], align 16
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store float %2, ptr %9, align 4, !tbaa !9
  store float %3, ptr %10, align 4, !tbaa !9
  store float %4, ptr %11, align 4, !tbaa !9
  %27 = zext i1 %5 to i8
  store i8 %27, ptr %12, align 1, !tbaa !11
  %28 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 20), align 4, !tbaa !13
  %29 = add i32 %28, 1
  store i32 %29, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 20), align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %30 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 19), align 4, !tbaa !16
  %31 = shl i32 %30, 16
  %32 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 20), align 4, !tbaa !13
  %33 = or i32 %31, %32
  store i32 %33, ptr %13, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %34 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 15), align 4, !tbaa !18
  store i32 %34, ptr %14, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %35 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 16), align 4, !tbaa !19
  %36 = sub nsw i32 %35, 20
  store i32 %36, ptr %15, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %37 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 17), align 4, !tbaa !20
  store i32 %37, ptr %16, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 20, ptr %17, align 4, !tbaa !17
  %38 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 16), align 4, !tbaa !19
  %39 = sub nsw i32 %38, 24
  store i32 %39, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 16), align 4, !tbaa !19
  %40 = load i32, ptr %14, align 4, !tbaa !17
  %41 = sitofp i32 %40 to float
  %42 = load i32, ptr %15, align 4, !tbaa !17
  %43 = sitofp i32 %42 to float
  %44 = load i32, ptr %16, align 4, !tbaa !17
  %45 = sitofp i32 %44 to float
  %46 = load i32, ptr %17, align 4, !tbaa !17
  %47 = sitofp i32 %46 to float
  %48 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext 0, i8 noundef zeroext 0, i8 noundef zeroext 0, i8 noundef zeroext -128)
  call void @_ZL20addGfxCmdRoundedRectfffffj(float noundef %41, float noundef %43, float noundef %45, float noundef %47, float noundef 4.000000e+00, i32 noundef %48)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %49 = load i32, ptr %16, align 4, !tbaa !17
  %50 = sub nsw i32 %49, 10
  store i32 %50, ptr %18, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = load float, ptr %51, align 4, !tbaa !9
  %53 = load float, ptr %9, align 4, !tbaa !9
  %54 = fsub float %52, %53
  %55 = load float, ptr %10, align 4, !tbaa !9
  %56 = load float, ptr %9, align 4, !tbaa !9
  %57 = fsub float %55, %56
  %58 = fdiv float %54, %57
  store float %58, ptr %19, align 4, !tbaa !9
  %59 = load float, ptr %19, align 4, !tbaa !9
  %60 = fcmp olt float %59, 0.000000e+00
  br i1 %60, label %61, label %62

61:                                               ; preds = %6
  store float 0.000000e+00, ptr %19, align 4, !tbaa !9
  br label %62

62:                                               ; preds = %61, %6
  %63 = load float, ptr %19, align 4, !tbaa !9
  %64 = fcmp ogt float %63, 1.000000e+00
  br i1 %64, label %65, label %66

65:                                               ; preds = %62
  store float 1.000000e+00, ptr %19, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %65, %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %67 = load float, ptr %19, align 4, !tbaa !9
  %68 = load i32, ptr %18, align 4, !tbaa !17
  %69 = sitofp i32 %68 to float
  %70 = fmul float %67, %69
  %71 = fptosi float %70 to i32
  store i32 %71, ptr %20, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  %72 = load i8, ptr %12, align 1, !tbaa !11, !range !21, !noundef !22
  %73 = trunc i8 %72 to i1
  br i1 %73, label %74, label %80

74:                                               ; preds = %66
  %75 = load i32, ptr %14, align 4, !tbaa !17
  %76 = load i32, ptr %20, align 4, !tbaa !17
  %77 = add nsw i32 %75, %76
  %78 = load i32, ptr %15, align 4, !tbaa !17
  %79 = call noundef zeroext i1 @_Z6inRectiiiib(i32 noundef %77, i32 noundef %78, i32 noundef 10, i32 noundef 20, i1 noundef zeroext true)
  br label %80

80:                                               ; preds = %74, %66
  %81 = phi i1 [ false, %66 ], [ %79, %74 ]
  %82 = zext i1 %81 to i8
  store i8 %82, ptr %21, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  %83 = load i32, ptr %13, align 4, !tbaa !17
  %84 = load i8, ptr %21, align 1, !tbaa !11, !range !21, !noundef !22
  %85 = trunc i8 %84 to i1
  %86 = call noundef zeroext i1 @_ZL11buttonLogicjb(i32 noundef %83, i1 noundef zeroext %85)
  %87 = zext i1 %86 to i8
  store i8 %87, ptr %22, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  store i8 0, ptr %23, align 1, !tbaa !11
  %88 = load i32, ptr %13, align 4, !tbaa !17
  %89 = call noundef zeroext i1 @_Z8isActivej(i32 noundef %88)
  br i1 %89, label %90, label %140

90:                                               ; preds = %80
  %91 = load i8, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 11), align 2, !tbaa !23, !range !21, !noundef !22
  %92 = trunc i8 %91 to i1
  br i1 %92, label %93, label %96

93:                                               ; preds = %90
  %94 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 3), align 4, !tbaa !24
  store i32 %94, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 12), align 4, !tbaa !25
  %95 = load float, ptr %19, align 4, !tbaa !9
  store float %95, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 14), align 4, !tbaa !26
  br label %96

96:                                               ; preds = %93, %90
  %97 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 12), align 4, !tbaa !25
  %98 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 3), align 4, !tbaa !24
  %99 = icmp ne i32 %97, %98
  br i1 %99, label %100, label %139

100:                                              ; preds = %96
  %101 = load float, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 14), align 4, !tbaa !26
  %102 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 3), align 4, !tbaa !24
  %103 = load i32, ptr getelementptr inbounds (%struct.GuiState, ptr @_ZL7g_state, i32 0, i32 12), align 4, !tbaa !25
  %104 = sub nsw i32 %102, %103
  %105 = sitofp i32 %104 to float
  %106 = load i32, ptr %18, align 4, !tbaa !17
  %107 = sitofp i32 %106 to float
  %108 = fdiv float %105, %107
  %109 = fadd float %101, %108
  store float %109, ptr %19, align 4, !tbaa !9
  %110 = load float, ptr %19, align 4, !tbaa !9
  %111 = fcmp olt float %110, 0.000000e+00
  br i1 %111, label %112, label %113

112:                                              ; preds = %100
  store float 0.000000e+00, ptr %19, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %112, %100
  %114 = load float, ptr %19, align 4, !tbaa !9
  %115 = fcmp ogt float %114, 1.000000e+00
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  store float 1.000000e+00, ptr %19, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %116, %113
  %118 = load float, ptr %9, align 4, !tbaa !9
  %119 = load float, ptr %19, align 4, !tbaa !9
  %120 = load float, ptr %10, align 4, !tbaa !9
  %121 = load float, ptr %9, align 4, !tbaa !9
  %122 = fsub float %120, %121
  %123 = call float @llvm.fmuladd.f32(float %119, float %122, float %118)
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  store float %123, ptr %124, align 4, !tbaa !9
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = load float, ptr %125, align 4, !tbaa !9
  %127 = load float, ptr %11, align 4, !tbaa !9
  %128 = fdiv float %126, %127
  %129 = fadd float %128, 5.000000e-01
  %130 = call float @llvm.floor.f32(float %129)
  %131 = load float, ptr %11, align 4, !tbaa !9
  %132 = fmul float %130, %131
  %133 = load ptr, ptr %8, align 8, !tbaa !5
  store float %132, ptr %133, align 4, !tbaa !9
  %134 = load float, ptr %19, align 4, !tbaa !9
  %135 = load i32, ptr %18, align 4, !tbaa !17
  %136 = sitofp i32 %135 to float
  %137 = fmul float %134, %136
  %138 = fptosi float %137 to i32
  store i32 %138, ptr %20, align 4, !tbaa !17
  store i8 1, ptr %23, align 1, !tbaa !11
  br label %139

139:                                              ; preds = %117, %96
  br label %140

140:                                              ; preds = %139, %80
  %141 = load i32, ptr %13, align 4, !tbaa !17
  %142 = call noundef zeroext i1 @_Z8isActivej(i32 noundef %141)
  br i1 %142, label %143, label %151

143:                                              ; preds = %140
  %144 = load i32, ptr %14, align 4, !tbaa !17
  %145 = load i32, ptr %20, align 4, !tbaa !17
  %146 = add nsw i32 %144, %145
  %147 = sitofp i32 %146 to float
  %148 = load i32, ptr %15, align 4, !tbaa !17
  %149 = sitofp i32 %148 to float
  %150 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1)
  call void @_ZL20addGfxCmdRoundedRectfffffj(float noundef %147, float noundef %149, float noundef 1.000000e+01, float noundef 2.000000e+01, float noundef 4.000000e+00, i32 noundef %150)
  br label %166

151:                                              ; preds = %140
  %152 = load i32, ptr %14, align 4, !tbaa !17
  %153 = load i32, ptr %20, align 4, !tbaa !17
  %154 = add nsw i32 %152, %153
  %155 = sitofp i32 %154 to float
  %156 = load i32, ptr %15, align 4, !tbaa !17
  %157 = sitofp i32 %156 to float
  %158 = load i32, ptr %13, align 4, !tbaa !17
  %159 = call noundef zeroext i1 @_Z5isHotj(i32 noundef %158)
  br i1 %159, label %160, label %162

160:                                              ; preds = %151
  %161 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -128)
  br label %164

162:                                              ; preds = %151
  %163 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext 64)
  br label %164

164:                                              ; preds = %162, %160
  %165 = phi i32 [ %161, %160 ], [ %163, %162 ]
  call void @_ZL20addGfxCmdRoundedRectfffffj(float noundef %155, float noundef %157, float noundef 1.000000e+01, float noundef 2.000000e+01, float noundef 4.000000e+00, i32 noundef %165)
  br label %166

166:                                              ; preds = %164, %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %167 = load float, ptr %11, align 4, !tbaa !9
  %168 = call float @log10f(float noundef %167) #6
  %169 = call float @llvm.ceil.f32(float %168)
  %170 = fptosi float %169 to i32
  store i32 %170, ptr %24, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  %171 = getelementptr inbounds [16 x i8], ptr %25, i64 0, i64 0
  %172 = load i32, ptr %24, align 4, !tbaa !17
  %173 = icmp sge i32 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %166
  br label %178

175:                                              ; preds = %166
  %176 = load i32, ptr %24, align 4, !tbaa !17
  %177 = sub nsw i32 0, %176
  br label %178

178:                                              ; preds = %175, %174
  %179 = phi i32 [ 0, %174 ], [ %177, %175 ]
  %180 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %171, i64 noundef 16, ptr noundef @.str, i32 noundef %179) #6
  call void @llvm.lifetime.start.p0(i64 128, ptr %26) #6
  %181 = getelementptr inbounds [128 x i8], ptr %26, i64 0, i64 0
  %182 = getelementptr inbounds [16 x i8], ptr %25, i64 0, i64 0
  %183 = load ptr, ptr %8, align 8, !tbaa !5
  %184 = load float, ptr %183, align 4, !tbaa !9
  %185 = fpext float %184 to double
  %186 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %181, i64 noundef 128, ptr noundef %182, double noundef %185) #6
  %187 = load i8, ptr %12, align 1, !tbaa !11, !range !21, !noundef !22
  %188 = trunc i8 %187 to i1
  br i1 %188, label %189, label %220

189:                                              ; preds = %178
  %190 = load i32, ptr %14, align 4, !tbaa !17
  %191 = add nsw i32 %190, 10
  %192 = load i32, ptr %15, align 4, !tbaa !17
  %193 = add nsw i32 %192, 10
  %194 = sub nsw i32 %193, 4
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = load i32, ptr %13, align 4, !tbaa !17
  %197 = call noundef zeroext i1 @_Z5isHotj(i32 noundef %196)
  br i1 %197, label %198, label %200

198:                                              ; preds = %189
  %199 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -1)
  br label %202

200:                                              ; preds = %189
  %201 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -56)
  br label %202

202:                                              ; preds = %200, %198
  %203 = phi i32 [ %199, %198 ], [ %201, %200 ]
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %191, i32 noundef %194, i32 noundef 0, ptr noundef %195, i32 noundef %203)
  %204 = load i32, ptr %14, align 4, !tbaa !17
  %205 = load i32, ptr %16, align 4, !tbaa !17
  %206 = add nsw i32 %204, %205
  %207 = sub nsw i32 %206, 10
  %208 = load i32, ptr %15, align 4, !tbaa !17
  %209 = add nsw i32 %208, 10
  %210 = sub nsw i32 %209, 4
  %211 = getelementptr inbounds [128 x i8], ptr %26, i64 0, i64 0
  %212 = load i32, ptr %13, align 4, !tbaa !17
  %213 = call noundef zeroext i1 @_Z5isHotj(i32 noundef %212)
  br i1 %213, label %214, label %216

214:                                              ; preds = %202
  %215 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -1)
  br label %218

216:                                              ; preds = %202
  %217 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -56)
  br label %218

218:                                              ; preds = %216, %214
  %219 = phi i32 [ %215, %214 ], [ %217, %216 ]
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %207, i32 noundef %210, i32 noundef 2, ptr noundef %211, i32 noundef %219)
  br label %237

220:                                              ; preds = %178
  %221 = load i32, ptr %14, align 4, !tbaa !17
  %222 = add nsw i32 %221, 10
  %223 = load i32, ptr %15, align 4, !tbaa !17
  %224 = add nsw i32 %223, 10
  %225 = sub nsw i32 %224, 4
  %226 = load ptr, ptr %7, align 8, !tbaa !5
  %227 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -56)
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %222, i32 noundef %225, i32 noundef 0, ptr noundef %226, i32 noundef %227)
  %228 = load i32, ptr %14, align 4, !tbaa !17
  %229 = load i32, ptr %16, align 4, !tbaa !17
  %230 = add nsw i32 %228, %229
  %231 = sub nsw i32 %230, 10
  %232 = load i32, ptr %15, align 4, !tbaa !17
  %233 = add nsw i32 %232, 10
  %234 = sub nsw i32 %233, 4
  %235 = getelementptr inbounds [128 x i8], ptr %26, i64 0, i64 0
  %236 = call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -56)
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %231, i32 noundef %234, i32 noundef 2, ptr noundef %235, i32 noundef %236)
  br label %237

237:                                              ; preds = %220, %218
  %238 = load i8, ptr %22, align 1, !tbaa !11, !range !21, !noundef !22
  %239 = trunc i8 %238 to i1
  br i1 %239, label %243, label %240

240:                                              ; preds = %237
  %241 = load i8, ptr %23, align 1, !tbaa !11, !range !21, !noundef !22
  %242 = trunc i8 %241 to i1
  br label %243

243:                                              ; preds = %240, %237
  %244 = phi i1 [ true, %237 ], [ %242, %240 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  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
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  ret i1 %244
}

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

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

; Function Attrs: nounwind
declare float @log10f(float noundef) #5

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #5

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


; 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.GuiState = type { i8, i8, i8, i32, i32, i32, i32, i32, i32, i8, i8, i8, i32, i32, float, i32, i32, i32, i8, i32, i32 }

@_ZL7g_state = external hidden local_unnamed_addr global %struct.GuiState, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL20addGfxCmdRoundedRectfffffj(float noundef, float noundef, float noundef, float noundef, float noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL11buttonLogicjb(i32 noundef, i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z8isActivej(i32 noundef) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z5isHotj(i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z11imguiSliderPKcPffffb(ptr noundef %0, ptr nocapture noundef %1, float noundef %2, float noundef %3, float noundef %4, i1 noundef zeroext %5) local_unnamed_addr #2 {
  %7 = alloca [16 x i8], align 16
  %8 = alloca [128 x i8], align 16
  %9 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 64), align 4, !tbaa !5
  %10 = add i32 %9, 1
  store i32 %10, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 64), align 4, !tbaa !5
  %11 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 60), align 4, !tbaa !12
  %12 = shl i32 %11, 16
  %13 = or i32 %12, %10
  %14 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 44), align 4, !tbaa !13
  %15 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 48), align 4, !tbaa !14
  %16 = add nsw i32 %15, -20
  %17 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 52), align 4, !tbaa !15
  %18 = add nsw i32 %15, -24
  store i32 %18, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 48), align 4, !tbaa !14
  %19 = sitofp i32 %14 to float
  %20 = sitofp i32 %16 to float
  %21 = sitofp i32 %17 to float
  %22 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext 0, i8 noundef zeroext 0, i8 noundef zeroext 0, i8 noundef zeroext -128)
  tail call void @_ZL20addGfxCmdRoundedRectfffffj(float noundef %19, float noundef %20, float noundef %21, float noundef 2.000000e+01, float noundef 4.000000e+00, i32 noundef %22)
  %23 = add i32 %17, -10
  %24 = load float, ptr %1, align 4, !tbaa !16
  %25 = fsub float %24, %2
  %26 = fsub float %3, %2
  %27 = fdiv float %25, %26
  %28 = fcmp olt float %27, 0.000000e+00
  %.0 = select i1 %28, float 0.000000e+00, float %27
  %29 = fcmp ogt float %.0, 1.000000e+00
  %.1 = select i1 %29, float 1.000000e+00, float %.0
  %30 = sitofp i32 %23 to float
  %31 = fmul float %.1, %30
  %32 = fptosi float %31 to i32
  br i1 %5, label %33, label %36

33:                                               ; preds = %6
  %34 = add nsw i32 %14, %32
  %35 = tail call noundef zeroext i1 @_Z6inRectiiiib(i32 noundef %34, i32 noundef %16, i32 noundef 10, i32 noundef 20, i1 noundef zeroext true)
  br label %36

36:                                               ; preds = %33, %6
  %37 = phi i1 [ false, %6 ], [ %35, %33 ]
  %38 = tail call noundef zeroext i1 @_ZL11buttonLogicjb(i32 noundef %13, i1 noundef zeroext %37)
  %39 = tail call noundef zeroext i1 @_Z8isActivej(i32 noundef %13)
  br i1 %39, label %40, label %60

40:                                               ; preds = %36
  %41 = load i8, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 30), align 2, !tbaa !17, !range !18, !noundef !19
  %42 = trunc nuw i8 %41 to i1
  br i1 %42, label %.thread, label %44

.thread:                                          ; preds = %40
  %43 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 4), align 4, !tbaa !20
  store i32 %43, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 32), align 4, !tbaa !21
  store float %.1, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 40), align 4, !tbaa !22
  br label %60

44:                                               ; preds = %40
  %.pre = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 32), align 4, !tbaa !21
  %.pre69 = load i32, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 4), align 4, !tbaa !20
  %.not = icmp eq i32 %.pre, %.pre69
  br i1 %.not, label %60, label %45

45:                                               ; preds = %44
  %46 = load float, ptr getelementptr inbounds (i8, ptr @_ZL7g_state, i64 40), align 4, !tbaa !22
  %47 = sub nsw i32 %.pre69, %.pre
  %48 = sitofp i32 %47 to float
  %49 = fdiv float %48, %30
  %50 = fadd float %49, %46
  %51 = fcmp olt float %50, 0.000000e+00
  %.2 = select i1 %51, float 0.000000e+00, float %50
  %52 = fcmp ogt float %.2, 1.000000e+00
  %.3 = select i1 %52, float 1.000000e+00, float %.2
  %53 = tail call float @llvm.fmuladd.f32(float %.3, float %26, float %2)
  %54 = fdiv float %53, %4
  %55 = fadd float %54, 5.000000e-01
  %56 = tail call float @llvm.floor.f32(float %55)
  %57 = fmul float %56, %4
  store float %57, ptr %1, align 4, !tbaa !16
  %58 = fmul float %.3, %30
  %59 = fptosi float %58 to i32
  br label %60

60:                                               ; preds = %.thread, %44, %45, %36
  %.064 = phi i32 [ %59, %45 ], [ %32, %44 ], [ %32, %36 ], [ %32, %.thread ]
  %.063 = phi i1 [ true, %45 ], [ false, %44 ], [ false, %36 ], [ false, %.thread ]
  %61 = tail call noundef zeroext i1 @_Z8isActivej(i32 noundef %13)
  %62 = add nsw i32 %.064, %14
  %63 = sitofp i32 %62 to float
  br i1 %61, label %64, label %66

64:                                               ; preds = %60
  %65 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1)
  br label %72

66:                                               ; preds = %60
  %67 = tail call noundef zeroext i1 @_Z5isHotj(i32 noundef %13)
  br i1 %67, label %68, label %70

68:                                               ; preds = %66
  %69 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -128)
  br label %72

70:                                               ; preds = %66
  %71 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext 64)
  br label %72

72:                                               ; preds = %68, %70, %64
  %.sink = phi i32 [ %65, %64 ], [ %69, %68 ], [ %71, %70 ]
  tail call void @_ZL20addGfxCmdRoundedRectfffffj(float noundef %63, float noundef %20, float noundef 1.000000e+01, float noundef 2.000000e+01, float noundef 4.000000e+00, i32 noundef %.sink)
  %73 = tail call float @log10f(float noundef %4) #7
  %74 = tail call float @llvm.ceil.f32(float %73)
  %75 = fptosi float %74 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  %76 = sub nsw i32 0, %75
  %.inv = icmp slt i32 %75, 0
  %77 = select i1 %.inv, i32 %76, i32 0
  %78 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %7, i64 noundef 16, ptr noundef nonnull @.str, i32 noundef %77) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %8) #7
  %79 = load float, ptr %1, align 4, !tbaa !16
  %80 = fpext float %79 to double
  %81 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 128, ptr noundef nonnull %7, double noundef %80) #7
  %82 = add nsw i32 %14, 10
  %83 = add nsw i32 %15, -14
  br i1 %5, label %84, label %100

84:                                               ; preds = %72
  %85 = tail call noundef zeroext i1 @_Z5isHotj(i32 noundef %13)
  br i1 %85, label %86, label %88

86:                                               ; preds = %84
  %87 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -1)
  br label %90

88:                                               ; preds = %84
  %89 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -56)
  br label %90

90:                                               ; preds = %88, %86
  %91 = phi i32 [ %87, %86 ], [ %89, %88 ]
  tail call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %82, i32 noundef %83, i32 noundef 0, ptr noundef %0, i32 noundef %91)
  %92 = add i32 %23, %14
  %93 = tail call noundef zeroext i1 @_Z5isHotj(i32 noundef %13)
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -60, i8 noundef zeroext 0, i8 noundef zeroext -1)
  br label %98

96:                                               ; preds = %90
  %97 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -1, i8 noundef zeroext -56)
  br label %98

98:                                               ; preds = %96, %94
  %99 = phi i32 [ %95, %94 ], [ %97, %96 ]
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %92, i32 noundef %83, i32 noundef 2, ptr noundef nonnull %8, i32 noundef %99)
  br label %104

100:                                              ; preds = %72
  %101 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -56)
  tail call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %82, i32 noundef %83, i32 noundef 0, ptr noundef %0, i32 noundef %101)
  %102 = add i32 %23, %14
  %103 = tail call noundef i32 @_Z9imguiRGBAhhhh(i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -128, i8 noundef zeroext -56)
  call void @_ZL13addGfxCmdTextiiiPKcj(i32 noundef %102, i32 noundef %83, i32 noundef 2, ptr noundef nonnull %8, i32 noundef %103)
  br label %104

104:                                              ; preds = %100, %98
  %105 = or i1 %38, %.063
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  ret i1 %105
}

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @log10f(float noundef) local_unnamed_addr #5

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 64}
!6 = !{!"_ZTS8GuiState", !7, i64 0, !7, i64 1, !7, i64 2, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 28, !7, i64 29, !7, i64 30, !10, i64 32, !10, i64 36, !11, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !7, i64 56, !10, i64 60, !10, i64 64}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!6, !10, i64 60}
!13 = !{!6, !10, i64 44}
!14 = !{!6, !10, i64 48}
!15 = !{!6, !10, i64 52}
!16 = !{!11, !11, i64 0}
!17 = !{!6, !7, i64 30}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!6, !10, i64 4}
!21 = !{!6, !10, i64 32}
!22 = !{!6, !11, i64 40}


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