; LLVM IR from NotManyIdeasDev/double-pendulum-sim :: double-pendulum-sim/Libraries/raygui-2.8/examples/controls_test_suite (GuiScrollPanel)

; 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.Rectangle = type { float, float, float, float }
%struct.Vector2 = type { float, float }
%struct.Color = type { i8, i8, i8, i8 }

@guiState = external hidden global i32, align 4
@guiLocked = external hidden global i8, align 1
@guiAlpha = external hidden global float, align 4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

; Function Attrs: nounwind uwtable
declare dso_local void @GuiSetStyle(i32 noundef, i32 noundef, i32 noundef) #1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiGetStyle(i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @GuiDrawRectangle(<2 x float>, <2 x float>, i32 noundef, i32, i32) #3

declare i32 @Fade(i32, float noundef) #4

declare i32 @GetColor(i32 noundef) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nounwind uwtable
define dso_local { <2 x float>, <2 x float> } @GuiScrollPanel(<2 x float> %0, <2 x float> %1, <2 x float> %2, <2 x float> %3, ptr noundef %4) #3 {
  %6 = alloca %struct.Rectangle, align 4
  %7 = alloca %struct.Rectangle, align 4
  %8 = alloca %struct.Rectangle, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.Vector2, align 4
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.Rectangle, align 4
  %17 = alloca %struct.Rectangle, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %struct.Vector2, align 4
  %23 = alloca %struct.Color, align 1
  %24 = alloca %struct.Color, align 1
  %25 = alloca i32, align 4
  %26 = alloca %struct.Rectangle, align 4
  %27 = alloca %struct.Color, align 1
  %28 = alloca %struct.Color, align 1
  %29 = alloca %struct.Color, align 1
  %30 = alloca %struct.Color, align 1
  %31 = alloca %struct.Color, align 1
  %32 = alloca %struct.Color, align 1
  %33 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 0
  store <2 x float> %0, ptr %33, align 4
  %34 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 1
  store <2 x float> %1, ptr %34, align 4
  %35 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %8, i32 0, i32 0
  store <2 x float> %2, ptr %35, align 4
  %36 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %8, i32 0, i32 1
  store <2 x float> %3, ptr %36, align 4
  store ptr %4, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %37 = load i32, ptr @guiState, align 4, !tbaa !9
  store i32 %37, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.memset.p0.i64(ptr align 4 %11, i8 0, i64 8, i1 false)
  %38 = load ptr, ptr %9, align 8, !tbaa !5
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %42

40:                                               ; preds = %5
  %41 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !11
  br label %42

42:                                               ; preds = %40, %5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  %43 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %44 = load float, ptr %43, align 4, !tbaa !14
  %45 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %46 = load float, ptr %45, align 4, !tbaa !14
  %47 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %48 = mul nsw i32 2, %47
  %49 = sitofp i32 %48 to float
  %50 = fsub float %46, %49
  %51 = fcmp ogt float %44, %50
  %52 = zext i1 %51 to i64
  %53 = select i1 %51, i32 1, i32 0
  %54 = icmp ne i32 %53, 0
  %55 = zext i1 %54 to i8
  store i8 %55, ptr %12, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  %56 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %57 = load float, ptr %56, align 4, !tbaa !18
  %58 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %59 = load float, ptr %58, align 4, !tbaa !18
  %60 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %61 = mul nsw i32 2, %60
  %62 = sitofp i32 %61 to float
  %63 = fsub float %59, %62
  %64 = fcmp ogt float %57, %63
  %65 = zext i1 %64 to i64
  %66 = select i1 %64, i32 1, i32 0
  %67 = icmp ne i32 %66, 0
  %68 = zext i1 %67 to i8
  store i8 %68, ptr %13, align 1, !tbaa !16
  %69 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %70 = trunc i8 %69 to i1
  br i1 %70, label %93, label %71

71:                                               ; preds = %42
  %72 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %73 = trunc i8 %72 to i1
  br i1 %73, label %74, label %87

74:                                               ; preds = %71
  %75 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %76 = load float, ptr %75, align 4, !tbaa !14
  %77 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %78 = load float, ptr %77, align 4, !tbaa !14
  %79 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %80 = mul nsw i32 2, %79
  %81 = sitofp i32 %80 to float
  %82 = fsub float %78, %81
  %83 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  %84 = sitofp i32 %83 to float
  %85 = fsub float %82, %84
  %86 = fcmp ogt float %76, %85
  br label %87

87:                                               ; preds = %74, %71
  %88 = phi i1 [ false, %71 ], [ %86, %74 ]
  %89 = zext i1 %88 to i64
  %90 = select i1 %88, i32 1, i32 0
  %91 = icmp ne i32 %90, 0
  %92 = zext i1 %91 to i8
  store i8 %92, ptr %12, align 1, !tbaa !16
  br label %93

93:                                               ; preds = %87, %42
  %94 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %95 = trunc i8 %94 to i1
  br i1 %95, label %118, label %96

96:                                               ; preds = %93
  %97 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %98 = trunc i8 %97 to i1
  br i1 %98, label %99, label %112

99:                                               ; preds = %96
  %100 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %101 = load float, ptr %100, align 4, !tbaa !18
  %102 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %103 = load float, ptr %102, align 4, !tbaa !18
  %104 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %105 = mul nsw i32 2, %104
  %106 = sitofp i32 %105 to float
  %107 = fsub float %103, %106
  %108 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  %109 = sitofp i32 %108 to float
  %110 = fsub float %107, %109
  %111 = fcmp ogt float %101, %110
  br label %112

112:                                              ; preds = %99, %96
  %113 = phi i1 [ false, %96 ], [ %111, %99 ]
  %114 = zext i1 %113 to i64
  %115 = select i1 %113, i32 1, i32 0
  %116 = icmp ne i32 %115, 0
  %117 = zext i1 %116 to i8
  store i8 %117, ptr %13, align 1, !tbaa !16
  br label %118

118:                                              ; preds = %112, %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %119 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %120 = trunc i8 %119 to i1
  br i1 %120, label %121, label %123

121:                                              ; preds = %118
  %122 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  br label %124

123:                                              ; preds = %118
  br label %124

124:                                              ; preds = %123, %121
  %125 = phi i32 [ %122, %121 ], [ 0, %123 ]
  store i32 %125, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %126 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %127 = trunc i8 %126 to i1
  br i1 %127, label %128, label %130

128:                                              ; preds = %124
  %129 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  br label %131

130:                                              ; preds = %124
  br label %131

131:                                              ; preds = %130, %128
  %132 = phi i32 [ %129, %128 ], [ 0, %130 ]
  store i32 %132, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  %133 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 0
  %134 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %142

136:                                              ; preds = %131
  %137 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %138 = load float, ptr %137, align 4, !tbaa !21
  %139 = load i32, ptr %15, align 4, !tbaa !9
  %140 = sitofp i32 %139 to float
  %141 = fadd float %138, %140
  br label %145

142:                                              ; preds = %131
  %143 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %144 = load float, ptr %143, align 4, !tbaa !21
  br label %145

145:                                              ; preds = %142, %136
  %146 = phi float [ %141, %136 ], [ %144, %142 ]
  %147 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %148 = sitofp i32 %147 to float
  %149 = fadd float %146, %148
  store float %149, ptr %133, align 4, !tbaa !21
  %150 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 1
  %151 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 1
  %152 = load float, ptr %151, align 4, !tbaa !22
  %153 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %154 = load float, ptr %153, align 4, !tbaa !18
  %155 = fadd float %152, %154
  %156 = load i32, ptr %14, align 4, !tbaa !9
  %157 = sitofp i32 %156 to float
  %158 = fsub float %155, %157
  %159 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %160 = sitofp i32 %159 to float
  %161 = fsub float %158, %160
  store float %161, ptr %150, align 4, !tbaa !22
  %162 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 2
  %163 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %164 = load float, ptr %163, align 4, !tbaa !14
  %165 = load i32, ptr %15, align 4, !tbaa !9
  %166 = sitofp i32 %165 to float
  %167 = fsub float %164, %166
  %168 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %169 = mul nsw i32 2, %168
  %170 = sitofp i32 %169 to float
  %171 = fsub float %167, %170
  store float %171, ptr %162, align 4, !tbaa !14
  %172 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 3
  %173 = load i32, ptr %14, align 4, !tbaa !9
  %174 = sitofp i32 %173 to float
  store float %174, ptr %172, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #7
  %175 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 0
  %176 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %177 = icmp eq i32 %176, 0
  br i1 %177, label %178, label %184

178:                                              ; preds = %145
  %179 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %180 = load float, ptr %179, align 4, !tbaa !21
  %181 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %182 = sitofp i32 %181 to float
  %183 = fadd float %180, %182
  br label %196

184:                                              ; preds = %145
  %185 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %186 = load float, ptr %185, align 4, !tbaa !21
  %187 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %188 = load float, ptr %187, align 4, !tbaa !14
  %189 = fadd float %186, %188
  %190 = load i32, ptr %15, align 4, !tbaa !9
  %191 = sitofp i32 %190 to float
  %192 = fsub float %189, %191
  %193 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %194 = sitofp i32 %193 to float
  %195 = fsub float %192, %194
  br label %196

196:                                              ; preds = %184, %178
  %197 = phi float [ %183, %178 ], [ %195, %184 ]
  store float %197, ptr %175, align 4, !tbaa !21
  %198 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 1
  %199 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 1
  %200 = load float, ptr %199, align 4, !tbaa !22
  %201 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %202 = sitofp i32 %201 to float
  %203 = fadd float %200, %202
  store float %203, ptr %198, align 4, !tbaa !22
  %204 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 2
  %205 = load i32, ptr %15, align 4, !tbaa !9
  %206 = sitofp i32 %205 to float
  store float %206, ptr %204, align 4, !tbaa !14
  %207 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 3
  %208 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %209 = load float, ptr %208, align 4, !tbaa !18
  %210 = load i32, ptr %14, align 4, !tbaa !9
  %211 = sitofp i32 %210 to float
  %212 = fsub float %209, %211
  %213 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %214 = mul nsw i32 2, %213
  %215 = sitofp i32 %214 to float
  %216 = fsub float %212, %215
  store float %216, ptr %207, align 4, !tbaa !18
  %217 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %255

219:                                              ; preds = %196
  %220 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 0
  %221 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %222 = load float, ptr %221, align 4, !tbaa !21
  %223 = load i32, ptr %15, align 4, !tbaa !9
  %224 = sitofp i32 %223 to float
  %225 = fadd float %222, %224
  %226 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %227 = sitofp i32 %226 to float
  %228 = fadd float %225, %227
  store float %228, ptr %220, align 4, !tbaa !21
  %229 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 1
  %230 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 1
  %231 = load float, ptr %230, align 4, !tbaa !22
  %232 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %233 = sitofp i32 %232 to float
  %234 = fadd float %231, %233
  store float %234, ptr %229, align 4, !tbaa !22
  %235 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 2
  %236 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %237 = load float, ptr %236, align 4, !tbaa !14
  %238 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %239 = mul nsw i32 2, %238
  %240 = sitofp i32 %239 to float
  %241 = fsub float %237, %240
  %242 = load i32, ptr %15, align 4, !tbaa !9
  %243 = sitofp i32 %242 to float
  %244 = fsub float %241, %243
  store float %244, ptr %235, align 4, !tbaa !14
  %245 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 3
  %246 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %247 = load float, ptr %246, align 4, !tbaa !18
  %248 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %249 = mul nsw i32 2, %248
  %250 = sitofp i32 %249 to float
  %251 = fsub float %247, %250
  %252 = load i32, ptr %14, align 4, !tbaa !9
  %253 = sitofp i32 %252 to float
  %254 = fsub float %251, %253
  store float %254, ptr %245, align 4, !tbaa !18
  br label %288

255:                                              ; preds = %196
  %256 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 0
  %257 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 0
  %258 = load float, ptr %257, align 4, !tbaa !21
  %259 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %260 = sitofp i32 %259 to float
  %261 = fadd float %258, %260
  store float %261, ptr %256, align 4, !tbaa !21
  %262 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 1
  %263 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 1
  %264 = load float, ptr %263, align 4, !tbaa !22
  %265 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %266 = sitofp i32 %265 to float
  %267 = fadd float %264, %266
  store float %267, ptr %262, align 4, !tbaa !22
  %268 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 2
  %269 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %270 = load float, ptr %269, align 4, !tbaa !14
  %271 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %272 = mul nsw i32 2, %271
  %273 = sitofp i32 %272 to float
  %274 = fsub float %270, %273
  %275 = load i32, ptr %15, align 4, !tbaa !9
  %276 = sitofp i32 %275 to float
  %277 = fsub float %274, %276
  store float %277, ptr %268, align 4, !tbaa !14
  %278 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 3
  %279 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %280 = load float, ptr %279, align 4, !tbaa !18
  %281 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %282 = mul nsw i32 2, %281
  %283 = sitofp i32 %282 to float
  %284 = fsub float %280, %283
  %285 = load i32, ptr %14, align 4, !tbaa !9
  %286 = sitofp i32 %285 to float
  %287 = fsub float %284, %286
  store float %287, ptr %278, align 4, !tbaa !18
  br label %288

288:                                              ; preds = %255, %219
  %289 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 2
  %290 = load float, ptr %289, align 4, !tbaa !14
  %291 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %292 = load float, ptr %291, align 4, !tbaa !14
  %293 = fcmp ogt float %290, %292
  br i1 %293, label %294, label %298

294:                                              ; preds = %288
  %295 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %296 = load float, ptr %295, align 4, !tbaa !14
  %297 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 2
  store float %296, ptr %297, align 4, !tbaa !14
  br label %298

298:                                              ; preds = %294, %288
  %299 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 3
  %300 = load float, ptr %299, align 4, !tbaa !18
  %301 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %302 = load float, ptr %301, align 4, !tbaa !18
  %303 = fcmp ogt float %300, %302
  br i1 %303, label %304, label %308

304:                                              ; preds = %298
  %305 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %306 = load float, ptr %305, align 4, !tbaa !18
  %307 = getelementptr inbounds %struct.Rectangle, ptr %6, i32 0, i32 3
  store float %306, ptr %307, align 4, !tbaa !18
  br label %308

308:                                              ; preds = %304, %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %309 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %310 = trunc i8 %309 to i1
  br i1 %310, label %311, label %322

311:                                              ; preds = %308
  %312 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %313 = icmp eq i32 %312, 0
  br i1 %313, label %314, label %317

314:                                              ; preds = %311
  %315 = load i32, ptr %15, align 4, !tbaa !9
  %316 = sub nsw i32 0, %315
  br label %318

317:                                              ; preds = %311
  br label %318

318:                                              ; preds = %317, %314
  %319 = phi i32 [ %316, %314 ], [ 0, %317 ]
  %320 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %321 = sub nsw i32 %319, %320
  br label %333

322:                                              ; preds = %308
  %323 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %325, label %328

325:                                              ; preds = %322
  %326 = load i32, ptr %15, align 4, !tbaa !9
  %327 = sub nsw i32 0, %326
  br label %329

328:                                              ; preds = %322
  br label %329

329:                                              ; preds = %328, %325
  %330 = phi i32 [ %327, %325 ], [ 0, %328 ]
  %331 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %332 = sub nsw i32 %330, %331
  br label %333

333:                                              ; preds = %329, %318
  %334 = phi i32 [ %321, %318 ], [ %332, %329 ]
  store i32 %334, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %335 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %358

337:                                              ; preds = %333
  %338 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %339 = load float, ptr %338, align 4, !tbaa !14
  %340 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %341 = load float, ptr %340, align 4, !tbaa !14
  %342 = fsub float %339, %341
  %343 = load i32, ptr %15, align 4, !tbaa !9
  %344 = sitofp i32 %343 to float
  %345 = fadd float %342, %344
  %346 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %347 = sitofp i32 %346 to float
  %348 = fadd float %345, %347
  %349 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %350 = icmp eq i32 %349, 0
  br i1 %350, label %351, label %353

351:                                              ; preds = %337
  %352 = load i32, ptr %15, align 4, !tbaa !9
  br label %354

353:                                              ; preds = %337
  br label %354

354:                                              ; preds = %353, %351
  %355 = phi i32 [ %352, %351 ], [ 0, %353 ]
  %356 = sitofp i32 %355 to float
  %357 = fsub float %348, %356
  br label %362

358:                                              ; preds = %333
  %359 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %360 = sub nsw i32 0, %359
  %361 = sitofp i32 %360 to float
  br label %362

362:                                              ; preds = %358, %354
  %363 = phi float [ %357, %354 ], [ %361, %358 ]
  %364 = fptosi float %363 to i32
  store i32 %364, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %365 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %366 = trunc i8 %365 to i1
  br i1 %366, label %367, label %370

367:                                              ; preds = %362
  %368 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %369 = sub nsw i32 0, %368
  br label %373

370:                                              ; preds = %362
  %371 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %372 = sub nsw i32 0, %371
  br label %373

373:                                              ; preds = %370, %367
  %374 = phi i32 [ %369, %367 ], [ %372, %370 ]
  store i32 %374, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %375 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %376 = trunc i8 %375 to i1
  br i1 %376, label %377, label %389

377:                                              ; preds = %373
  %378 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %379 = load float, ptr %378, align 4, !tbaa !18
  %380 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %381 = load float, ptr %380, align 4, !tbaa !18
  %382 = fsub float %379, %381
  %383 = load i32, ptr %14, align 4, !tbaa !9
  %384 = sitofp i32 %383 to float
  %385 = fadd float %382, %384
  %386 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %387 = sitofp i32 %386 to float
  %388 = fadd float %385, %387
  br label %393

389:                                              ; preds = %373
  %390 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %391 = sub nsw i32 0, %390
  %392 = sitofp i32 %391 to float
  br label %393

393:                                              ; preds = %389, %377
  %394 = phi float [ %388, %377 ], [ %392, %389 ]
  %395 = fptosi float %394 to i32
  store i32 %395, ptr %21, align 4, !tbaa !9
  %396 = load i32, ptr %10, align 4, !tbaa !9
  %397 = icmp ne i32 %396, 3
  br i1 %397, label %398, label %459

398:                                              ; preds = %393
  %399 = load i8, ptr @guiLocked, align 1, !tbaa !16, !range !19, !noundef !20
  %400 = trunc i8 %399 to i1
  br i1 %400, label %459, label %401

401:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %402 = call <2 x float> @GetMousePosition()
  store <2 x float> %402, ptr %22, align 4
  %403 = load <2 x float>, ptr %22, align 4
  %404 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 0
  %405 = load <2 x float>, ptr %404, align 4
  %406 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 1
  %407 = load <2 x float>, ptr %406, align 4
  %408 = call zeroext i1 @CheckCollisionPointRec(<2 x float> %403, <2 x float> %405, <2 x float> %407)
  br i1 %408, label %409, label %458

409:                                              ; preds = %401
  %410 = call zeroext i1 @IsMouseButtonDown(i32 noundef 0)
  br i1 %410, label %411, label %412

411:                                              ; preds = %409
  store i32 2, ptr %10, align 4, !tbaa !9
  br label %413

412:                                              ; preds = %409
  store i32 1, ptr %10, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %412, %411
  %414 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %415 = trunc i8 %414 to i1
  br i1 %415, label %416, label %433

416:                                              ; preds = %413
  %417 = call zeroext i1 @IsKeyDown(i32 noundef 262)
  br i1 %417, label %418, label %424

418:                                              ; preds = %416
  %419 = call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %420 = sitofp i32 %419 to float
  %421 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  %422 = load float, ptr %421, align 4, !tbaa !23
  %423 = fsub float %422, %420
  store float %423, ptr %421, align 4, !tbaa !23
  br label %424

424:                                              ; preds = %418, %416
  %425 = call zeroext i1 @IsKeyDown(i32 noundef 263)
  br i1 %425, label %426, label %432

426:                                              ; preds = %424
  %427 = call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %428 = sitofp i32 %427 to float
  %429 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  %430 = load float, ptr %429, align 4, !tbaa !23
  %431 = fadd float %430, %428
  store float %431, ptr %429, align 4, !tbaa !23
  br label %432

432:                                              ; preds = %426, %424
  br label %433

433:                                              ; preds = %432, %413
  %434 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %435 = trunc i8 %434 to i1
  br i1 %435, label %436, label %453

436:                                              ; preds = %433
  %437 = call zeroext i1 @IsKeyDown(i32 noundef 264)
  br i1 %437, label %438, label %444

438:                                              ; preds = %436
  %439 = call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %440 = sitofp i32 %439 to float
  %441 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %442 = load float, ptr %441, align 4, !tbaa !25
  %443 = fsub float %442, %440
  store float %443, ptr %441, align 4, !tbaa !25
  br label %444

444:                                              ; preds = %438, %436
  %445 = call zeroext i1 @IsKeyDown(i32 noundef 265)
  br i1 %445, label %446, label %452

446:                                              ; preds = %444
  %447 = call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %448 = sitofp i32 %447 to float
  %449 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %450 = load float, ptr %449, align 4, !tbaa !25
  %451 = fadd float %450, %448
  store float %451, ptr %449, align 4, !tbaa !25
  br label %452

452:                                              ; preds = %446, %444
  br label %453

453:                                              ; preds = %452, %433
  %454 = call float @GetMouseWheelMove()
  %455 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %456 = load float, ptr %455, align 4, !tbaa !25
  %457 = call float @llvm.fmuladd.f32(float %454, float 2.000000e+01, float %456)
  store float %457, ptr %455, align 4, !tbaa !25
  br label %458

458:                                              ; preds = %453, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %459

459:                                              ; preds = %458, %398, %393
  %460 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  %461 = load float, ptr %460, align 4, !tbaa !23
  %462 = load i32, ptr %18, align 4, !tbaa !9
  %463 = sub nsw i32 0, %462
  %464 = sitofp i32 %463 to float
  %465 = fcmp ogt float %461, %464
  br i1 %465, label %466, label %471

466:                                              ; preds = %459
  %467 = load i32, ptr %18, align 4, !tbaa !9
  %468 = sub nsw i32 0, %467
  %469 = sitofp i32 %468 to float
  %470 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  store float %469, ptr %470, align 4, !tbaa !23
  br label %471

471:                                              ; preds = %466, %459
  %472 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  %473 = load float, ptr %472, align 4, !tbaa !23
  %474 = load i32, ptr %19, align 4, !tbaa !9
  %475 = sub nsw i32 0, %474
  %476 = sitofp i32 %475 to float
  %477 = fcmp olt float %473, %476
  br i1 %477, label %478, label %483

478:                                              ; preds = %471
  %479 = load i32, ptr %19, align 4, !tbaa !9
  %480 = sub nsw i32 0, %479
  %481 = sitofp i32 %480 to float
  %482 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  store float %481, ptr %482, align 4, !tbaa !23
  br label %483

483:                                              ; preds = %478, %471
  %484 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %485 = load float, ptr %484, align 4, !tbaa !25
  %486 = load i32, ptr %20, align 4, !tbaa !9
  %487 = sub nsw i32 0, %486
  %488 = sitofp i32 %487 to float
  %489 = fcmp ogt float %485, %488
  br i1 %489, label %490, label %495

490:                                              ; preds = %483
  %491 = load i32, ptr %20, align 4, !tbaa !9
  %492 = sub nsw i32 0, %491
  %493 = sitofp i32 %492 to float
  %494 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  store float %493, ptr %494, align 4, !tbaa !25
  br label %495

495:                                              ; preds = %490, %483
  %496 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %497 = load float, ptr %496, align 4, !tbaa !25
  %498 = load i32, ptr %21, align 4, !tbaa !9
  %499 = sub nsw i32 0, %498
  %500 = sitofp i32 %499 to float
  %501 = fcmp olt float %497, %500
  br i1 %501, label %502, label %507

502:                                              ; preds = %495
  %503 = load i32, ptr %21, align 4, !tbaa !9
  %504 = sub nsw i32 0, %503
  %505 = sitofp i32 %504 to float
  %506 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  store float %505, ptr %506, align 4, !tbaa !25
  br label %507

507:                                              ; preds = %502, %495
  %508 = getelementptr inbounds %struct.Color, ptr %23, i32 0, i32 0
  store i8 0, ptr %508, align 1, !tbaa !26
  %509 = getelementptr inbounds %struct.Color, ptr %23, i32 0, i32 1
  store i8 0, ptr %509, align 1, !tbaa !28
  %510 = getelementptr inbounds %struct.Color, ptr %23, i32 0, i32 2
  store i8 0, ptr %510, align 1, !tbaa !29
  %511 = getelementptr inbounds %struct.Color, ptr %23, i32 0, i32 3
  store i8 0, ptr %511, align 1, !tbaa !30
  %512 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 19)
  %513 = call i32 @GetColor(i32 noundef %512)
  store i32 %513, ptr %24, align 1
  %514 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 0
  %515 = load <2 x float>, ptr %514, align 4
  %516 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 1
  %517 = load <2 x float>, ptr %516, align 4
  %518 = load i32, ptr %23, align 1
  %519 = load i32, ptr %24, align 1
  call void @GuiDrawRectangle(<2 x float> %515, <2 x float> %517, i32 noundef 0, i32 %518, i32 %519)
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %520 = call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 19)
  store i32 %520, ptr %25, align 4, !tbaa !9
  %521 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %522 = trunc i8 %521 to i1
  br i1 %522, label %523, label %561

523:                                              ; preds = %507
  %524 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %525 = load float, ptr %524, align 4, !tbaa !14
  %526 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %527 = mul nsw i32 2, %526
  %528 = sitofp i32 %527 to float
  %529 = fsub float %525, %528
  %530 = load i32, ptr %15, align 4, !tbaa !9
  %531 = sitofp i32 %530 to float
  %532 = fsub float %529, %531
  %533 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 2
  %534 = load float, ptr %533, align 4, !tbaa !14
  %535 = fdiv float %532, %534
  %536 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 2
  %537 = load float, ptr %536, align 4, !tbaa !14
  %538 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %539 = mul nsw i32 2, %538
  %540 = sitofp i32 %539 to float
  %541 = fsub float %537, %540
  %542 = load i32, ptr %15, align 4, !tbaa !9
  %543 = sitofp i32 %542 to float
  %544 = fsub float %541, %543
  %545 = fmul float %535, %544
  %546 = fptosi float %545 to i32
  call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %546)
  %547 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  %548 = load float, ptr %547, align 4, !tbaa !23
  %549 = fneg float %548
  %550 = fptosi float %549 to i32
  %551 = load i32, ptr %18, align 4, !tbaa !9
  %552 = load i32, ptr %19, align 4, !tbaa !9
  %553 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 0
  %554 = load <2 x float>, ptr %553, align 4
  %555 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 1
  %556 = load <2 x float>, ptr %555, align 4
  %557 = call i32 @GuiScrollBar(<2 x float> %554, <2 x float> %556, i32 noundef %550, i32 noundef %551, i32 noundef %552)
  %558 = sub nsw i32 0, %557
  %559 = sitofp i32 %558 to float
  %560 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 0
  store float %559, ptr %560, align 4, !tbaa !23
  br label %561

561:                                              ; preds = %523, %507
  %562 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %563 = trunc i8 %562 to i1
  br i1 %563, label %564, label %602

564:                                              ; preds = %561
  %565 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %566 = load float, ptr %565, align 4, !tbaa !18
  %567 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %568 = mul nsw i32 2, %567
  %569 = sitofp i32 %568 to float
  %570 = fsub float %566, %569
  %571 = load i32, ptr %14, align 4, !tbaa !9
  %572 = sitofp i32 %571 to float
  %573 = fsub float %570, %572
  %574 = getelementptr inbounds %struct.Rectangle, ptr %8, i32 0, i32 3
  %575 = load float, ptr %574, align 4, !tbaa !18
  %576 = fdiv float %573, %575
  %577 = getelementptr inbounds %struct.Rectangle, ptr %7, i32 0, i32 3
  %578 = load float, ptr %577, align 4, !tbaa !18
  %579 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %580 = mul nsw i32 2, %579
  %581 = sitofp i32 %580 to float
  %582 = fsub float %578, %581
  %583 = load i32, ptr %14, align 4, !tbaa !9
  %584 = sitofp i32 %583 to float
  %585 = fsub float %582, %584
  %586 = fmul float %576, %585
  %587 = fptosi float %586 to i32
  call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %587)
  %588 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  %589 = load float, ptr %588, align 4, !tbaa !25
  %590 = fneg float %589
  %591 = fptosi float %590 to i32
  %592 = load i32, ptr %20, align 4, !tbaa !9
  %593 = load i32, ptr %21, align 4, !tbaa !9
  %594 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %17, i32 0, i32 0
  %595 = load <2 x float>, ptr %594, align 4
  %596 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %17, i32 0, i32 1
  %597 = load <2 x float>, ptr %596, align 4
  %598 = call i32 @GuiScrollBar(<2 x float> %595, <2 x float> %597, i32 noundef %591, i32 noundef %592, i32 noundef %593)
  %599 = sub nsw i32 0, %598
  %600 = sitofp i32 %599 to float
  %601 = getelementptr inbounds %struct.Vector2, ptr %11, i32 0, i32 1
  store float %600, ptr %601, align 4, !tbaa !25
  br label %602

602:                                              ; preds = %564, %561
  %603 = load i8, ptr %12, align 1, !tbaa !16, !range !19, !noundef !20
  %604 = trunc i8 %603 to i1
  br i1 %604, label %605, label %649

605:                                              ; preds = %602
  %606 = load i8, ptr %13, align 1, !tbaa !16, !range !19, !noundef !20
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %649

608:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #7
  %609 = getelementptr inbounds %struct.Rectangle, ptr %26, i32 0, i32 0
  %610 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 0
  %611 = load float, ptr %610, align 4, !tbaa !21
  %612 = getelementptr inbounds %struct.Rectangle, ptr %16, i32 0, i32 2
  %613 = load float, ptr %612, align 4, !tbaa !14
  %614 = fadd float %611, %613
  %615 = fadd float %614, 2.000000e+00
  store float %615, ptr %609, align 4, !tbaa !21
  %616 = getelementptr inbounds %struct.Rectangle, ptr %26, i32 0, i32 1
  %617 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 1
  %618 = load float, ptr %617, align 4, !tbaa !22
  %619 = getelementptr inbounds %struct.Rectangle, ptr %17, i32 0, i32 3
  %620 = load float, ptr %619, align 4, !tbaa !18
  %621 = fadd float %618, %620
  %622 = fadd float %621, 2.000000e+00
  store float %622, ptr %616, align 4, !tbaa !22
  %623 = getelementptr inbounds %struct.Rectangle, ptr %26, i32 0, i32 2
  %624 = load i32, ptr %14, align 4, !tbaa !9
  %625 = sub nsw i32 %624, 4
  %626 = sitofp i32 %625 to float
  store float %626, ptr %623, align 4, !tbaa !14
  %627 = getelementptr inbounds %struct.Rectangle, ptr %26, i32 0, i32 3
  %628 = load i32, ptr %15, align 4, !tbaa !9
  %629 = sub nsw i32 %628, 4
  %630 = sitofp i32 %629 to float
  store float %630, ptr %627, align 4, !tbaa !18
  %631 = getelementptr inbounds %struct.Color, ptr %27, i32 0, i32 0
  store i8 0, ptr %631, align 1, !tbaa !26
  %632 = getelementptr inbounds %struct.Color, ptr %27, i32 0, i32 1
  store i8 0, ptr %632, align 1, !tbaa !28
  %633 = getelementptr inbounds %struct.Color, ptr %27, i32 0, i32 2
  store i8 0, ptr %633, align 1, !tbaa !29
  %634 = getelementptr inbounds %struct.Color, ptr %27, i32 0, i32 3
  store i8 0, ptr %634, align 1, !tbaa !30
  %635 = load i32, ptr %10, align 4, !tbaa !9
  %636 = mul i32 %635, 3
  %637 = add i32 2, %636
  %638 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef %637)
  %639 = call i32 @GetColor(i32 noundef %638)
  store i32 %639, ptr %29, align 1
  %640 = load float, ptr @guiAlpha, align 4, !tbaa !12
  %641 = load i32, ptr %29, align 1
  %642 = call i32 @Fade(i32 %641, float noundef %640)
  store i32 %642, ptr %28, align 1
  %643 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %26, i32 0, i32 0
  %644 = load <2 x float>, ptr %643, align 4
  %645 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %26, i32 0, i32 1
  %646 = load <2 x float>, ptr %645, align 4
  %647 = load i32, ptr %27, align 1
  %648 = load i32, ptr %28, align 1
  call void @GuiDrawRectangle(<2 x float> %644, <2 x float> %646, i32 noundef 0, i32 %647, i32 %648)
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #7
  br label %649

649:                                              ; preds = %608, %605, %602
  %650 = call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %651 = load i32, ptr %10, align 4, !tbaa !9
  %652 = mul i32 %651, 3
  %653 = uitofp i32 %652 to float
  %654 = fadd float 0.000000e+00, %653
  %655 = fptosi float %654 to i32
  %656 = call i32 @GuiGetStyle(i32 noundef 12, i32 noundef %655)
  %657 = call i32 @GetColor(i32 noundef %656)
  store i32 %657, ptr %31, align 1
  %658 = load float, ptr @guiAlpha, align 4, !tbaa !12
  %659 = load i32, ptr %31, align 1
  %660 = call i32 @Fade(i32 %659, float noundef %658)
  store i32 %660, ptr %30, align 1
  %661 = getelementptr inbounds %struct.Color, ptr %32, i32 0, i32 0
  store i8 0, ptr %661, align 1, !tbaa !26
  %662 = getelementptr inbounds %struct.Color, ptr %32, i32 0, i32 1
  store i8 0, ptr %662, align 1, !tbaa !28
  %663 = getelementptr inbounds %struct.Color, ptr %32, i32 0, i32 2
  store i8 0, ptr %663, align 1, !tbaa !29
  %664 = getelementptr inbounds %struct.Color, ptr %32, i32 0, i32 3
  store i8 0, ptr %664, align 1, !tbaa !30
  %665 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 0
  %666 = load <2 x float>, ptr %665, align 4
  %667 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %7, i32 0, i32 1
  %668 = load <2 x float>, ptr %667, align 4
  %669 = load i32, ptr %30, align 1
  %670 = load i32, ptr %32, align 1
  call void @GuiDrawRectangle(<2 x float> %666, <2 x float> %668, i32 noundef %650, i32 %669, i32 %670)
  %671 = load i32, ptr %25, align 4, !tbaa !9
  call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %671)
  %672 = load ptr, ptr %9, align 8, !tbaa !5
  %673 = icmp ne ptr %672, null
  br i1 %673, label %674, label %676

674:                                              ; preds = %649
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %675, ptr align 4 %11, i64 8, i1 false), !tbaa.struct !11
  br label %676

676:                                              ; preds = %674, %649
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  %677 = load { <2 x float>, <2 x float> }, ptr %6, align 4
  ret { <2 x float>, <2 x float> } %677
}

declare <2 x float> @GetMousePosition() #4

declare zeroext i1 @CheckCollisionPointRec(<2 x float>, <2 x float>, <2 x float>) #4

declare zeroext i1 @IsMouseButtonDown(i32 noundef) #4

declare zeroext i1 @IsKeyDown(i32 noundef) #4

declare float @GetMouseWheelMove() #4

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiScrollBar(<2 x float>, <2 x float>, i32 noundef, i32 noundef, i32 noundef) #3

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{i64 0, i64 4, !12, i64 4, i64 4, !12}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!15, !13, i64 8}
!15 = !{!"Rectangle", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!16 = !{!17, !17, i64 0}
!17 = !{!"_Bool", !7, i64 0}
!18 = !{!15, !13, i64 12}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!15, !13, i64 0}
!22 = !{!15, !13, i64 4}
!23 = !{!24, !13, i64 0}
!24 = !{!"Vector2", !13, i64 0, !13, i64 4}
!25 = !{!24, !13, i64 4}
!26 = !{!27, !7, i64 0}
!27 = !{!"Color", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3}
!28 = !{!27, !7, i64 1}
!29 = !{!27, !7, i64 2}
!30 = !{!27, !7, i64 3}


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

@guiState = external hidden local_unnamed_addr global i32, align 4
@guiLocked = external hidden local_unnamed_addr global i8, align 1
@guiAlpha = external hidden local_unnamed_addr global float, align 4

; Function Attrs: nounwind uwtable
declare dso_local void @GuiSetStyle(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @GuiGetStyle(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden void @GuiDrawRectangle(<2 x float>, <2 x float>, i32 noundef, i32, i32) local_unnamed_addr #1

declare i32 @Fade(i32, float noundef) local_unnamed_addr #2

declare i32 @GetColor(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local { <2 x float>, <2 x float> } @GuiScrollPanel(<2 x float> %0, <2 x float> %1, <2 x float> %2, <2 x float> %3, ptr noundef %4) local_unnamed_addr #1 {
  %6 = extractelement <2 x float> %3, i64 1
  %7 = extractelement <2 x float> %3, i64 0
  %8 = extractelement <2 x float> %1, i64 1
  %9 = extractelement <2 x float> %1, i64 0
  %10 = load i32, ptr @guiState, align 4, !tbaa !5
  %.not = icmp eq ptr %4, null
  br i1 %.not, label %12, label %11

11:                                               ; preds = %5
  %.sroa.080.0.copyload = load float, ptr %4, align 4, !tbaa !9
  %.sroa.15.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 4
  %.sroa.15.0.copyload = load float, ptr %.sroa.15.0..sroa_idx, align 4, !tbaa !9
  br label %12

12:                                               ; preds = %11, %5
  %.sroa.15.0 = phi float [ %.sroa.15.0.copyload, %11 ], [ 0.000000e+00, %5 ]
  %.sroa.080.0 = phi float [ %.sroa.080.0.copyload, %11 ], [ 0.000000e+00, %5 ]
  %13 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %14 = shl nsw i32 %13, 1
  %15 = sitofp i32 %14 to float
  %16 = fsub float %9, %15
  %17 = fcmp ogt float %7, %16
  %18 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %19 = shl nsw i32 %18, 1
  %20 = sitofp i32 %19 to float
  %21 = fsub float %8, %20
  %22 = fcmp ogt float %6, %21
  %.not204 = xor i1 %22, true
  %brmerge205 = select i1 %17, i1 true, i1 %.not204
  br i1 %brmerge205, label %32, label %23

23:                                               ; preds = %12
  %24 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %25 = shl nsw i32 %24, 1
  %26 = sitofp i32 %25 to float
  %27 = fsub float %9, %26
  %28 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  %29 = sitofp i32 %28 to float
  %30 = fsub float %27, %29
  %31 = fcmp ogt float %7, %30
  br label %32

32:                                               ; preds = %12, %23
  %.0193.in = phi i1 [ %17, %12 ], [ %31, %23 ]
  %.0193.in.not206 = xor i1 %.0193.in, true
  %brmerge207 = select i1 %22, i1 true, i1 %.0193.in.not206
  br i1 %brmerge207, label %42, label %33

33:                                               ; preds = %32
  %34 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %35 = shl nsw i32 %34, 1
  %36 = sitofp i32 %35 to float
  %37 = fsub float %8, %36
  %38 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  %39 = sitofp i32 %38 to float
  %40 = fsub float %37, %39
  %41 = fcmp ogt float %6, %40
  br label %42

42:                                               ; preds = %32, %33
  %.0194.in = phi i1 [ %22, %32 ], [ %41, %33 ]
  br i1 %.0193.in, label %43, label %45

43:                                               ; preds = %42
  %44 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  br label %45

45:                                               ; preds = %42, %43
  %46 = phi i32 [ %44, %43 ], [ 0, %42 ]
  br i1 %.0194.in, label %47, label %49

47:                                               ; preds = %45
  %48 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 18)
  br label %49

49:                                               ; preds = %45, %47
  %50 = phi i32 [ %48, %47 ], [ 0, %45 ]
  %51 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %52 = icmp eq i32 %51, 0
  %.sroa.0120.0.vec.extract = extractelement <2 x float> %0, i64 0
  %53 = insertelement <2 x i32> poison, i32 %50, i64 0
  %54 = insertelement <2 x i32> %53, i32 %46, i64 1
  %55 = sitofp <2 x i32> %54 to <2 x float>
  %56 = fadd <2 x float> %55, %0
  %57 = extractelement <2 x float> %56, i64 0
  %58 = select i1 %52, float %57, float %.sroa.0120.0.vec.extract
  %59 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %60 = sitofp i32 %59 to float
  %61 = fadd float %58, %60
  %.sroa.035.0.vec.insert = insertelement <2 x float> poison, float %61, i64 0
  %.sroa.0120.4.vec.extract = extractelement <2 x float> %0, i64 1
  %62 = fadd float %.sroa.0120.4.vec.extract, %8
  %63 = extractelement <2 x float> %55, i64 1
  %64 = fsub float %62, %63
  %65 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %66 = sitofp i32 %65 to float
  %67 = fsub float %64, %66
  %.sroa.035.4.vec.insert = insertelement <2 x float> %.sroa.035.0.vec.insert, float %67, i64 1
  %68 = fsub <2 x float> %1, %55
  %69 = extractelement <2 x float> %68, i64 0
  %70 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %71 = shl nsw i32 %70, 1
  %72 = sitofp i32 %71 to float
  %73 = fsub float %69, %72
  %74 = insertelement <2 x float> %55, float %73, i64 0
  %75 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %76 = icmp eq i32 %75, 0
  br i1 %76, label %77, label %81

77:                                               ; preds = %49
  %78 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %79 = sitofp i32 %78 to float
  %80 = fadd float %.sroa.0120.0.vec.extract, %79
  br label %88

81:                                               ; preds = %49
  %82 = fadd <2 x float> %0, %1
  %83 = fsub <2 x float> %82, %55
  %84 = extractelement <2 x float> %83, i64 0
  %85 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %86 = sitofp i32 %85 to float
  %87 = fsub float %84, %86
  br label %88

88:                                               ; preds = %81, %77
  %89 = phi float [ %80, %77 ], [ %87, %81 ]
  %.sroa.030.0.vec.insert = insertelement <2 x float> poison, float %89, i64 0
  %90 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %91 = sitofp i32 %90 to float
  %92 = fadd float %.sroa.0120.4.vec.extract, %91
  %.sroa.030.4.vec.insert = insertelement <2 x float> %.sroa.030.0.vec.insert, float %92, i64 1
  %93 = fsub float %8, %63
  %94 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %95 = shl nsw i32 %94, 1
  %96 = sitofp i32 %95 to float
  %97 = fsub float %93, %96
  %.sroa.6.12.vec.insert = insertelement <2 x float> %55, float %97, i64 1
  %98 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %99 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %100 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %101 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %102 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %103 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %104 = icmp eq i32 %103, 0
  %105 = sub nsw i32 0, %50
  %106 = select i1 %104, i32 %105, i32 0
  %107 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %108 = sub nsw i32 %106, %107
  br i1 %.0193.in, label %109, label %121

109:                                              ; preds = %88
  %110 = fsub <2 x float> %3, %1
  %111 = fadd <2 x float> %110, %55
  %112 = extractelement <2 x float> %111, i64 0
  %113 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %114 = sitofp i32 %113 to float
  %115 = fadd float %112, %114
  %116 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef 19)
  %117 = icmp eq i32 %116, 0
  %118 = select i1 %117, i32 %50, i32 0
  %119 = sitofp i32 %118 to float
  %120 = fsub float %115, %119
  br label %125

121:                                              ; preds = %88
  %122 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %123 = sub nsw i32 0, %122
  %124 = sitofp i32 %123 to float
  br label %125

125:                                              ; preds = %121, %109
  %126 = phi float [ %120, %109 ], [ %124, %121 ]
  %127 = fptosi float %126 to i32
  %128 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  br i1 %.0194.in, label %129, label %135

129:                                              ; preds = %125
  %130 = fsub float %6, %8
  %131 = fadd float %130, %63
  %132 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %133 = sitofp i32 %132 to float
  %134 = fadd float %131, %133
  br label %139

135:                                              ; preds = %125
  %136 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %137 = sub nsw i32 0, %136
  %138 = sitofp i32 %137 to float
  br label %139

139:                                              ; preds = %135, %129
  %140 = phi float [ %134, %129 ], [ %138, %135 ]
  %141 = sub nsw i32 0, %128
  %142 = fptosi float %140 to i32
  %.not203 = icmp eq i32 %10, 3
  br i1 %.not203, label %179, label %143

143:                                              ; preds = %139
  %144 = load i8, ptr @guiLocked, align 1, !tbaa !11, !range !13, !noundef !14
  %145 = trunc nuw i8 %144 to i1
  br i1 %145, label %179, label %146

146:                                              ; preds = %143
  %147 = tail call <2 x float> @GetMousePosition() #4
  %148 = tail call zeroext i1 @CheckCollisionPointRec(<2 x float> %147, <2 x float> %0, <2 x float> %1) #4
  br i1 %148, label %149, label %179

149:                                              ; preds = %146
  %150 = tail call zeroext i1 @IsMouseButtonDown(i32 noundef 0) #4
  %. = select i1 %150, i32 2, i32 1
  br i1 %.0193.in, label %151, label %163

151:                                              ; preds = %149
  %152 = tail call zeroext i1 @IsKeyDown(i32 noundef 262) #4
  br i1 %152, label %153, label %157

153:                                              ; preds = %151
  %154 = tail call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %155 = sitofp i32 %154 to float
  %156 = fsub float %.sroa.080.0, %155
  br label %157

157:                                              ; preds = %153, %151
  %.sroa.080.1 = phi float [ %156, %153 ], [ %.sroa.080.0, %151 ]
  %158 = tail call zeroext i1 @IsKeyDown(i32 noundef 263) #4
  br i1 %158, label %159, label %163

159:                                              ; preds = %157
  %160 = tail call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %161 = sitofp i32 %160 to float
  %162 = fadd float %.sroa.080.1, %161
  br label %163

163:                                              ; preds = %157, %159, %149
  %.sroa.080.2 = phi float [ %162, %159 ], [ %.sroa.080.1, %157 ], [ %.sroa.080.0, %149 ]
  br i1 %.0194.in, label %164, label %176

164:                                              ; preds = %163
  %165 = tail call zeroext i1 @IsKeyDown(i32 noundef 264) #4
  br i1 %165, label %166, label %170

166:                                              ; preds = %164
  %167 = tail call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %168 = sitofp i32 %167 to float
  %169 = fsub float %.sroa.15.0, %168
  br label %170

170:                                              ; preds = %166, %164
  %.sroa.15.1 = phi float [ %169, %166 ], [ %.sroa.15.0, %164 ]
  %171 = tail call zeroext i1 @IsKeyDown(i32 noundef 265) #4
  br i1 %171, label %172, label %176

172:                                              ; preds = %170
  %173 = tail call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 21)
  %174 = sitofp i32 %173 to float
  %175 = fadd float %.sroa.15.1, %174
  br label %176

176:                                              ; preds = %170, %172, %163
  %.sroa.15.2 = phi float [ %175, %172 ], [ %.sroa.15.1, %170 ], [ %.sroa.15.0, %163 ]
  %177 = tail call float @GetMouseWheelMove() #4
  %178 = tail call float @llvm.fmuladd.f32(float %177, float 2.000000e+01, float %.sroa.15.2)
  br label %179

179:                                              ; preds = %146, %176, %143, %139
  %.sroa.15.4 = phi float [ %.sroa.15.0, %143 ], [ %.sroa.15.0, %139 ], [ %178, %176 ], [ %.sroa.15.0, %146 ]
  %.sroa.080.4 = phi float [ %.sroa.080.0, %143 ], [ %.sroa.080.0, %139 ], [ %.sroa.080.2, %176 ], [ %.sroa.080.0, %146 ]
  %.2 = phi i32 [ %10, %143 ], [ 3, %139 ], [ %., %176 ], [ %10, %146 ]
  %180 = sub nsw i32 0, %108
  %181 = sitofp i32 %180 to float
  %182 = fcmp ogt float %.sroa.080.4, %181
  %.sroa.080.5 = select i1 %182, float %181, float %.sroa.080.4
  %183 = sub nsw i32 0, %127
  %184 = sitofp i32 %183 to float
  %185 = fcmp olt float %.sroa.080.5, %184
  %.sroa.080.6 = select i1 %185, float %184, float %.sroa.080.5
  %186 = sitofp i32 %128 to float
  %187 = fcmp ogt float %.sroa.15.4, %186
  %.sroa.15.5 = select i1 %187, float %186, float %.sroa.15.4
  %188 = sub nsw i32 0, %142
  %189 = sitofp i32 %188 to float
  %190 = fcmp olt float %.sroa.15.5, %189
  %.sroa.15.6 = select i1 %190, float %189, float %.sroa.15.5
  %191 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 19)
  %192 = tail call i32 @GetColor(i32 noundef %191) #4
  tail call void @GuiDrawRectangle(<2 x float> %0, <2 x float> %1, i32 noundef 0, i32 0, i32 %192)
  %193 = tail call i32 @GuiGetStyle(i32 noundef 14, i32 noundef 19)
  br i1 %.0193.in, label %194, label %215

194:                                              ; preds = %179
  %195 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %196 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %197 = insertelement <2 x i32> poison, i32 %195, i64 0
  %198 = insertelement <2 x i32> %197, i32 %196, i64 1
  %199 = shl nsw <2 x i32> %198, <i32 1, i32 1>
  %200 = sitofp <2 x i32> %199 to <2 x float>
  %201 = shufflevector <2 x float> %1, <2 x float> poison, <2 x i32> zeroinitializer
  %202 = fsub <2 x float> %201, %200
  %203 = shufflevector <2 x float> %55, <2 x float> poison, <2 x i32> zeroinitializer
  %204 = fsub <2 x float> %202, %203
  %205 = extractelement <2 x float> %204, i64 0
  %206 = fdiv float %205, %7
  %207 = extractelement <2 x float> %204, i64 1
  %208 = fmul float %206, %207
  %209 = fptosi float %208 to i32
  tail call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %209)
  %210 = fneg float %.sroa.080.6
  %211 = fptosi float %210 to i32
  %212 = tail call i32 @GuiScrollBar(<2 x float> %.sroa.035.4.vec.insert, <2 x float> %74, i32 noundef %211, i32 noundef %108, i32 noundef %127)
  %213 = sub nsw i32 0, %212
  %214 = sitofp i32 %213 to float
  br label %215

215:                                              ; preds = %194, %179
  %.sroa.080.7 = phi float [ %214, %194 ], [ %.sroa.080.6, %179 ]
  br i1 %.0194.in, label %216, label %.thread213

216:                                              ; preds = %215
  %217 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %218 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %219 = insertelement <2 x i32> poison, i32 %217, i64 0
  %220 = insertelement <2 x i32> %219, i32 %218, i64 1
  %221 = shl nsw <2 x i32> %220, <i32 1, i32 1>
  %222 = sitofp <2 x i32> %221 to <2 x float>
  %223 = shufflevector <2 x float> %1, <2 x float> poison, <2 x i32> <i32 1, i32 1>
  %224 = fsub <2 x float> %223, %222
  %225 = shufflevector <2 x float> %55, <2 x float> poison, <2 x i32> <i32 1, i32 1>
  %226 = fsub <2 x float> %224, %225
  %227 = extractelement <2 x float> %226, i64 0
  %228 = fdiv float %227, %6
  %229 = extractelement <2 x float> %226, i64 1
  %230 = fmul float %228, %229
  %231 = fptosi float %230 to i32
  tail call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %231)
  %232 = fneg float %.sroa.15.6
  %233 = fptosi float %232 to i32
  %234 = tail call i32 @GuiScrollBar(<2 x float> %.sroa.030.4.vec.insert, <2 x float> %.sroa.6.12.vec.insert, i32 noundef %233, i32 noundef %141, i32 noundef %142)
  %235 = sub nsw i32 0, %234
  %236 = sitofp i32 %235 to float
  br i1 %.0193.in, label %237, label %.thread213

237:                                              ; preds = %216
  %238 = insertelement <2 x float> poison, float %61, i64 0
  %239 = insertelement <2 x float> %238, float %92, i64 1
  %240 = insertelement <2 x float> poison, float %73, i64 0
  %241 = insertelement <2 x float> %240, float %97, i64 1
  %242 = fadd <2 x float> %239, %241
  %243 = fadd <2 x float> %242, <float 2.000000e+00, float 2.000000e+00>
  %244 = insertelement <2 x i32> poison, i32 %46, i64 0
  %245 = insertelement <2 x i32> %244, i32 %50, i64 1
  %246 = add nsw <2 x i32> %245, <i32 -4, i32 -4>
  %247 = sitofp <2 x i32> %246 to <2 x float>
  %248 = mul i32 %.2, 3
  %249 = add i32 %248, 2
  %250 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef %249)
  %251 = tail call i32 @GetColor(i32 noundef %250) #4
  %252 = load float, ptr @guiAlpha, align 4, !tbaa !9
  %253 = tail call i32 @Fade(i32 %251, float noundef %252) #4
  tail call void @GuiDrawRectangle(<2 x float> %243, <2 x float> %247, i32 noundef 0, i32 0, i32 %253)
  br label %.thread213

.thread213:                                       ; preds = %215, %216, %237
  %.sroa.15.7217 = phi float [ %236, %216 ], [ %236, %237 ], [ %.sroa.15.6, %215 ]
  %254 = tail call i32 @GuiGetStyle(i32 noundef 0, i32 noundef 12)
  %255 = mul i32 %.2, 3
  %256 = uitofp i32 %255 to float
  %257 = fptosi float %256 to i32
  %258 = tail call i32 @GuiGetStyle(i32 noundef 12, i32 noundef %257)
  %259 = tail call i32 @GetColor(i32 noundef %258) #4
  %260 = load float, ptr @guiAlpha, align 4, !tbaa !9
  %261 = tail call i32 @Fade(i32 %259, float noundef %260) #4
  tail call void @GuiDrawRectangle(<2 x float> %0, <2 x float> %1, i32 noundef %254, i32 %261, i32 0)
  tail call void @GuiSetStyle(i32 noundef 14, i32 noundef 19, i32 noundef %193)
  br i1 %.not, label %263, label %262

262:                                              ; preds = %.thread213
  store float %.sroa.080.7, ptr %4, align 4, !tbaa !9
  %.sroa.15.0..sroa_idx86 = getelementptr inbounds i8, ptr %4, i64 4
  store float %.sroa.15.7217, ptr %.sroa.15.0..sroa_idx86, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %262, %.thread213
  %264 = icmp eq i32 %98, 0
  %..sroa.0120.0.vec.extract = select i1 %264, float %57, float %.sroa.0120.0.vec.extract
  %265 = insertelement <2 x i32> poison, i32 %99, i64 0
  %266 = insertelement <2 x i32> %265, i32 %100, i64 1
  %267 = sitofp <2 x i32> %266 to <2 x float>
  %268 = insertelement <2 x float> %0, float %..sroa.0120.0.vec.extract, i64 0
  %269 = fadd <2 x float> %268, %267
  %270 = insertelement <2 x i32> poison, i32 %101, i64 0
  %271 = insertelement <2 x i32> %270, i32 %102, i64 1
  %272 = shl nsw <2 x i32> %271, <i32 1, i32 1>
  %273 = sitofp <2 x i32> %272 to <2 x float>
  %274 = fsub <2 x float> %1, %273
  %275 = fsub <2 x float> %274, %55
  %276 = fcmp ogt <2 x float> %275, %3
  %sel = select <2 x i1> %276, <2 x float> %3, <2 x float> %275
  %sel218 = select <2 x i1> %276, <2 x float> %3, <2 x float> %275
  %.sroa.5181.2 = shufflevector <2 x float> %sel, <2 x float> %sel218, <2 x i32> <i32 0, i32 3>
  %.fca.0.insert = insertvalue { <2 x float>, <2 x float> } poison, <2 x float> %269, 0
  %.fca.1.insert = insertvalue { <2 x float>, <2 x float> } %.fca.0.insert, <2 x float> %.sroa.5181.2, 1
  ret { <2 x float>, <2 x float> } %.fca.1.insert
}

declare <2 x float> @GetMousePosition() local_unnamed_addr #2

declare zeroext i1 @CheckCollisionPointRec(<2 x float>, <2 x float>, <2 x float>) local_unnamed_addr #2

declare zeroext i1 @IsMouseButtonDown(i32 noundef) local_unnamed_addr #2

declare zeroext i1 @IsKeyDown(i32 noundef) local_unnamed_addr #2

declare float @GetMouseWheelMove() 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: nounwind uwtable
declare dso_local i32 @GuiScrollBar(<2 x float>, <2 x float>, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

attributes #0 = { 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 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}


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