; LLVM IR from Discngine/fpocket :: src (tpocket)

; 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.s_pocket = type { ptr, ptr, float, float, float, float, [3 x float], i32, i32, i32, i32 }
%struct.s_atm = type { i32, float, float, float, float, float, float, float, [5 x i8], [7 x i8], [16 x i8], [16 x i8], [3 x i8], [8 x i8], i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, i8, i8, float, float, float, float, i16, ptr, i32 }
%struct.c_lst_vertices = type { ptr, ptr, ptr, i64 }
%struct.node_vertice = type { ptr, ptr, ptr }
%struct.s_vvertice = type { i32, i32, i32, i32, i32, float, float, float, float, i32, i32, [4 x i32], [4 x ptr], [3 x float], float }
%struct.s_desc = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i32, [20 x i32], i32, i32, i32, float, float, i32, i32, i32, i32, i32, [255 x i8], [255 x i8], [8 x i8] }

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

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

; Function Attrs: nounwind uwtable
define dso_local float @set_mc_overlap_volume(ptr noundef %0, i32 noundef %1, float noundef %2, ptr noundef %3, i32 noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca float, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store float %2, ptr %8, align 4, !tbaa !11
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  %33 = load ptr, ptr %9, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.s_pocket, ptr %33, i32 0, i32 1
  %35 = load ptr, ptr %34, align 8, !tbaa !13
  store ptr %35, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  store float 0.000000e+00, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  store float 0.000000e+00, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store float 0.000000e+00, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  store float 0.000000e+00, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store float 0.000000e+00, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store float 0.000000e+00, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store float 0.000000e+00, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store float 0.000000e+00, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  store float 0.000000e+00, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  store float 0.000000e+00, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  store ptr null, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %36

36:                                               ; preds = %168, %5
  %37 = load i32, ptr %13, align 4, !tbaa !9
  %38 = load i32, ptr %7, align 4, !tbaa !9
  %39 = icmp slt i32 %37, %38
  br i1 %39, label %40, label %171

40:                                               ; preds = %36
  %41 = load ptr, ptr %6, align 8, !tbaa !5
  %42 = load i32, ptr %13, align 4, !tbaa !9
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds ptr, ptr %41, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %45, ptr %31, align 8, !tbaa !5
  %46 = load i32, ptr %13, align 4, !tbaa !9
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %91

48:                                               ; preds = %40
  %49 = load ptr, ptr %31, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.s_atm, ptr %49, i32 0, i32 5
  %51 = load float, ptr %50, align 4, !tbaa !15
  %52 = load ptr, ptr %31, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.s_atm, ptr %52, i32 0, i32 3
  %54 = load float, ptr %53, align 4, !tbaa !18
  %55 = fsub float %51, %54
  store float %55, ptr %17, align 4, !tbaa !11
  %56 = load ptr, ptr %31, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.s_atm, ptr %56, i32 0, i32 5
  %58 = load float, ptr %57, align 4, !tbaa !15
  %59 = load ptr, ptr %31, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.s_atm, ptr %59, i32 0, i32 3
  %61 = load float, ptr %60, align 4, !tbaa !18
  %62 = fadd float %58, %61
  store float %62, ptr %18, align 4, !tbaa !11
  %63 = load ptr, ptr %31, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.s_atm, ptr %63, i32 0, i32 6
  %65 = load float, ptr %64, align 8, !tbaa !19
  %66 = load ptr, ptr %31, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.s_atm, ptr %66, i32 0, i32 3
  %68 = load float, ptr %67, align 4, !tbaa !18
  %69 = fsub float %65, %68
  store float %69, ptr %19, align 4, !tbaa !11
  %70 = load ptr, ptr %31, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.s_atm, ptr %70, i32 0, i32 6
  %72 = load float, ptr %71, align 8, !tbaa !19
  %73 = load ptr, ptr %31, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.s_atm, ptr %73, i32 0, i32 3
  %75 = load float, ptr %74, align 4, !tbaa !18
  %76 = fadd float %72, %75
  store float %76, ptr %20, align 4, !tbaa !11
  %77 = load ptr, ptr %31, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.s_atm, ptr %77, i32 0, i32 7
  %79 = load float, ptr %78, align 4, !tbaa !20
  %80 = load ptr, ptr %31, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.s_atm, ptr %80, i32 0, i32 3
  %82 = load float, ptr %81, align 4, !tbaa !18
  %83 = fsub float %79, %82
  store float %83, ptr %21, align 4, !tbaa !11
  %84 = load ptr, ptr %31, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.s_atm, ptr %84, i32 0, i32 7
  %86 = load float, ptr %85, align 4, !tbaa !20
  %87 = load ptr, ptr %31, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.s_atm, ptr %87, i32 0, i32 3
  %89 = load float, ptr %88, align 4, !tbaa !18
  %90 = fadd float %86, %89
  store float %90, ptr %22, align 4, !tbaa !11
  br label %167

91:                                               ; preds = %40
  %92 = load float, ptr %17, align 4, !tbaa !11
  %93 = load ptr, ptr %31, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.s_atm, ptr %93, i32 0, i32 5
  %95 = load float, ptr %94, align 4, !tbaa !15
  %96 = load ptr, ptr %31, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.s_atm, ptr %96, i32 0, i32 3
  %98 = load float, ptr %97, align 4, !tbaa !18
  %99 = fsub float %95, %98
  store float %99, ptr %23, align 4, !tbaa !11
  %100 = fcmp ogt float %92, %99
  br i1 %100, label %101, label %103

101:                                              ; preds = %91
  %102 = load float, ptr %23, align 4, !tbaa !11
  store float %102, ptr %17, align 4, !tbaa !11
  br label %116

103:                                              ; preds = %91
  %104 = load float, ptr %18, align 4, !tbaa !11
  %105 = load ptr, ptr %31, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.s_atm, ptr %105, i32 0, i32 5
  %107 = load float, ptr %106, align 4, !tbaa !15
  %108 = load ptr, ptr %31, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.s_atm, ptr %108, i32 0, i32 3
  %110 = load float, ptr %109, align 4, !tbaa !18
  %111 = fadd float %107, %110
  store float %111, ptr %23, align 4, !tbaa !11
  %112 = fcmp olt float %104, %111
  br i1 %112, label %113, label %115

113:                                              ; preds = %103
  %114 = load float, ptr %23, align 4, !tbaa !11
  store float %114, ptr %18, align 4, !tbaa !11
  br label %115

115:                                              ; preds = %113, %103
  br label %116

116:                                              ; preds = %115, %101
  %117 = load float, ptr %19, align 4, !tbaa !11
  %118 = load ptr, ptr %31, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.s_atm, ptr %118, i32 0, i32 6
  %120 = load float, ptr %119, align 8, !tbaa !19
  %121 = load ptr, ptr %31, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.s_atm, ptr %121, i32 0, i32 3
  %123 = load float, ptr %122, align 4, !tbaa !18
  %124 = fsub float %120, %123
  store float %124, ptr %24, align 4, !tbaa !11
  %125 = fcmp ogt float %117, %124
  br i1 %125, label %126, label %128

126:                                              ; preds = %116
  %127 = load float, ptr %24, align 4, !tbaa !11
  store float %127, ptr %19, align 4, !tbaa !11
  br label %141

128:                                              ; preds = %116
  %129 = load float, ptr %20, align 4, !tbaa !11
  %130 = load ptr, ptr %31, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.s_atm, ptr %130, i32 0, i32 6
  %132 = load float, ptr %131, align 8, !tbaa !19
  %133 = load ptr, ptr %31, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.s_atm, ptr %133, i32 0, i32 3
  %135 = load float, ptr %134, align 4, !tbaa !18
  %136 = fadd float %132, %135
  store float %136, ptr %24, align 4, !tbaa !11
  %137 = fcmp olt float %129, %136
  br i1 %137, label %138, label %140

138:                                              ; preds = %128
  %139 = load float, ptr %24, align 4, !tbaa !11
  store float %139, ptr %20, align 4, !tbaa !11
  br label %140

140:                                              ; preds = %138, %128
  br label %141

141:                                              ; preds = %140, %126
  %142 = load float, ptr %21, align 4, !tbaa !11
  %143 = load ptr, ptr %31, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.s_atm, ptr %143, i32 0, i32 7
  %145 = load float, ptr %144, align 4, !tbaa !20
  %146 = load ptr, ptr %31, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.s_atm, ptr %146, i32 0, i32 3
  %148 = load float, ptr %147, align 4, !tbaa !18
  %149 = fsub float %145, %148
  store float %149, ptr %25, align 4, !tbaa !11
  %150 = fcmp ogt float %142, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %141
  %152 = load float, ptr %25, align 4, !tbaa !11
  store float %152, ptr %21, align 4, !tbaa !11
  br label %166

153:                                              ; preds = %141
  %154 = load float, ptr %22, align 4, !tbaa !11
  %155 = load ptr, ptr %31, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.s_atm, ptr %155, i32 0, i32 7
  %157 = load float, ptr %156, align 4, !tbaa !20
  %158 = load ptr, ptr %31, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.s_atm, ptr %158, i32 0, i32 3
  %160 = load float, ptr %159, align 4, !tbaa !18
  %161 = fadd float %157, %160
  store float %161, ptr %25, align 4, !tbaa !11
  %162 = fcmp olt float %154, %161
  br i1 %162, label %163, label %165

163:                                              ; preds = %153
  %164 = load float, ptr %25, align 4, !tbaa !11
  store float %164, ptr %22, align 4, !tbaa !11
  br label %165

165:                                              ; preds = %163, %153
  br label %166

166:                                              ; preds = %165, %151
  br label %167

167:                                              ; preds = %166, %48
  br label %168

168:                                              ; preds = %167
  %169 = load i32, ptr %13, align 4, !tbaa !9
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %13, align 4, !tbaa !9
  br label %36, !llvm.loop !21

171:                                              ; preds = %36
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  %172 = load ptr, ptr %11, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.c_lst_vertices, ptr %172, i32 0, i32 0
  %174 = load ptr, ptr %173, align 8, !tbaa !23
  store ptr %174, ptr %32, align 8, !tbaa !5
  br label %175

175:                                              ; preds = %256, %171
  %176 = load ptr, ptr %32, align 8, !tbaa !5
  %177 = icmp ne ptr %176, null
  br i1 %177, label %178, label %260

178:                                              ; preds = %175
  %179 = load ptr, ptr %32, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.node_vertice, ptr %179, i32 0, i32 2
  %181 = load ptr, ptr %180, align 8, !tbaa !26
  store ptr %181, ptr %12, align 8, !tbaa !5
  %182 = load float, ptr %17, align 4, !tbaa !11
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.s_vvertice, ptr %183, i32 0, i32 6
  %185 = load float, ptr %184, align 8, !tbaa !28
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.s_vvertice, ptr %186, i32 0, i32 5
  %188 = load float, ptr %187, align 4, !tbaa !30
  %189 = fsub float %185, %188
  store float %189, ptr %23, align 4, !tbaa !11
  %190 = fcmp ogt float %182, %189
  br i1 %190, label %191, label %193

191:                                              ; preds = %178
  %192 = load float, ptr %23, align 4, !tbaa !11
  store float %192, ptr %17, align 4, !tbaa !11
  br label %206

193:                                              ; preds = %178
  %194 = load float, ptr %18, align 4, !tbaa !11
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.s_vvertice, ptr %195, i32 0, i32 6
  %197 = load float, ptr %196, align 8, !tbaa !28
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.s_vvertice, ptr %198, i32 0, i32 5
  %200 = load float, ptr %199, align 4, !tbaa !30
  %201 = fadd float %197, %200
  store float %201, ptr %23, align 4, !tbaa !11
  %202 = fcmp olt float %194, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %193
  %204 = load float, ptr %23, align 4, !tbaa !11
  store float %204, ptr %18, align 4, !tbaa !11
  br label %205

205:                                              ; preds = %203, %193
  br label %206

206:                                              ; preds = %205, %191
  %207 = load float, ptr %19, align 4, !tbaa !11
  %208 = load ptr, ptr %12, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.s_vvertice, ptr %208, i32 0, i32 7
  %210 = load float, ptr %209, align 4, !tbaa !31
  %211 = load ptr, ptr %12, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.s_vvertice, ptr %211, i32 0, i32 5
  %213 = load float, ptr %212, align 4, !tbaa !30
  %214 = fsub float %210, %213
  store float %214, ptr %24, align 4, !tbaa !11
  %215 = fcmp ogt float %207, %214
  br i1 %215, label %216, label %218

216:                                              ; preds = %206
  %217 = load float, ptr %24, align 4, !tbaa !11
  store float %217, ptr %19, align 4, !tbaa !11
  br label %231

218:                                              ; preds = %206
  %219 = load float, ptr %20, align 4, !tbaa !11
  %220 = load ptr, ptr %12, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.s_vvertice, ptr %220, i32 0, i32 7
  %222 = load float, ptr %221, align 4, !tbaa !31
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.s_vvertice, ptr %223, i32 0, i32 5
  %225 = load float, ptr %224, align 4, !tbaa !30
  %226 = fadd float %222, %225
  store float %226, ptr %24, align 4, !tbaa !11
  %227 = fcmp olt float %219, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %218
  %229 = load float, ptr %24, align 4, !tbaa !11
  store float %229, ptr %20, align 4, !tbaa !11
  br label %230

230:                                              ; preds = %228, %218
  br label %231

231:                                              ; preds = %230, %216
  %232 = load float, ptr %21, align 4, !tbaa !11
  %233 = load ptr, ptr %12, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.s_vvertice, ptr %233, i32 0, i32 8
  %235 = load float, ptr %234, align 8, !tbaa !32
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.s_vvertice, ptr %236, i32 0, i32 5
  %238 = load float, ptr %237, align 4, !tbaa !30
  %239 = fsub float %235, %238
  store float %239, ptr %25, align 4, !tbaa !11
  %240 = fcmp ogt float %232, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %231
  %242 = load float, ptr %25, align 4, !tbaa !11
  store float %242, ptr %21, align 4, !tbaa !11
  br label %256

243:                                              ; preds = %231
  %244 = load float, ptr %22, align 4, !tbaa !11
  %245 = load ptr, ptr %12, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.s_vvertice, ptr %245, i32 0, i32 8
  %247 = load float, ptr %246, align 8, !tbaa !32
  %248 = load ptr, ptr %12, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.s_vvertice, ptr %248, i32 0, i32 5
  %250 = load float, ptr %249, align 4, !tbaa !30
  %251 = fadd float %247, %250
  store float %251, ptr %25, align 4, !tbaa !11
  %252 = fcmp olt float %244, %251
  br i1 %252, label %253, label %255

253:                                              ; preds = %243
  %254 = load float, ptr %25, align 4, !tbaa !11
  store float %254, ptr %22, align 4, !tbaa !11
  br label %255

255:                                              ; preds = %253, %243
  br label %256

256:                                              ; preds = %255, %241
  %257 = load ptr, ptr %32, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.node_vertice, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !33
  store ptr %259, ptr %32, align 8, !tbaa !5
  br label %175, !llvm.loop !34

260:                                              ; preds = %175
  %261 = load float, ptr %18, align 4, !tbaa !11
  %262 = load float, ptr %17, align 4, !tbaa !11
  %263 = fsub float %261, %262
  %264 = load float, ptr %20, align 4, !tbaa !11
  %265 = load float, ptr %19, align 4, !tbaa !11
  %266 = fsub float %264, %265
  %267 = fmul float %263, %266
  %268 = load float, ptr %22, align 4, !tbaa !11
  %269 = load float, ptr %21, align 4, !tbaa !11
  %270 = fsub float %268, %269
  %271 = fmul float %267, %270
  store float %271, ptr %29, align 4, !tbaa !11
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %390, %260
  %273 = load i32, ptr %13, align 4, !tbaa !9
  %274 = load i32, ptr %10, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %393

276:                                              ; preds = %272
  store i32 0, ptr %16, align 4, !tbaa !9
  %277 = load float, ptr %17, align 4, !tbaa !11
  %278 = load float, ptr %18, align 4, !tbaa !11
  %279 = call float @rand_uniform(float noundef %277, float noundef %278)
  store float %279, ptr %26, align 4, !tbaa !11
  %280 = load float, ptr %19, align 4, !tbaa !11
  %281 = load float, ptr %20, align 4, !tbaa !11
  %282 = call float @rand_uniform(float noundef %280, float noundef %281)
  store float %282, ptr %27, align 4, !tbaa !11
  %283 = load float, ptr %21, align 4, !tbaa !11
  %284 = load float, ptr %22, align 4, !tbaa !11
  %285 = call float @rand_uniform(float noundef %283, float noundef %284)
  store float %285, ptr %28, align 4, !tbaa !11
  %286 = load ptr, ptr %11, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.c_lst_vertices, ptr %286, i32 0, i32 0
  %288 = load ptr, ptr %287, align 8, !tbaa !23
  store ptr %288, ptr %32, align 8, !tbaa !5
  br label %289

289:                                              ; preds = %331, %276
  %290 = load ptr, ptr %32, align 8, !tbaa !5
  %291 = icmp ne ptr %290, null
  br i1 %291, label %292, label %335

292:                                              ; preds = %289
  %293 = load ptr, ptr %32, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.node_vertice, ptr %293, i32 0, i32 2
  %295 = load ptr, ptr %294, align 8, !tbaa !26
  store ptr %295, ptr %12, align 8, !tbaa !5
  %296 = load ptr, ptr %12, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.s_vvertice, ptr %296, i32 0, i32 6
  %298 = load float, ptr %297, align 8, !tbaa !28
  %299 = load float, ptr %26, align 4, !tbaa !11
  %300 = fsub float %298, %299
  store float %300, ptr %23, align 4, !tbaa !11
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.s_vvertice, ptr %301, i32 0, i32 7
  %303 = load float, ptr %302, align 4, !tbaa !31
  %304 = load float, ptr %27, align 4, !tbaa !11
  %305 = fsub float %303, %304
  store float %305, ptr %24, align 4, !tbaa !11
  %306 = load ptr, ptr %12, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.s_vvertice, ptr %306, i32 0, i32 8
  %308 = load float, ptr %307, align 8, !tbaa !32
  %309 = load float, ptr %28, align 4, !tbaa !11
  %310 = fsub float %308, %309
  store float %310, ptr %25, align 4, !tbaa !11
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.s_vvertice, ptr %311, i32 0, i32 5
  %313 = load float, ptr %312, align 4, !tbaa !30
  %314 = load ptr, ptr %12, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.s_vvertice, ptr %314, i32 0, i32 5
  %316 = load float, ptr %315, align 4, !tbaa !30
  %317 = fmul float %313, %316
  %318 = load float, ptr %23, align 4, !tbaa !11
  %319 = load float, ptr %23, align 4, !tbaa !11
  %320 = load float, ptr %24, align 4, !tbaa !11
  %321 = load float, ptr %24, align 4, !tbaa !11
  %322 = fmul float %320, %321
  %323 = call float @llvm.fmuladd.f32(float %318, float %319, float %322)
  %324 = load float, ptr %25, align 4, !tbaa !11
  %325 = load float, ptr %25, align 4, !tbaa !11
  %326 = call float @llvm.fmuladd.f32(float %324, float %325, float %323)
  %327 = fcmp ogt float %317, %326
  br i1 %327, label %328, label %331

328:                                              ; preds = %292
  %329 = load i32, ptr %15, align 4, !tbaa !9
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr %15, align 4, !tbaa !9
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %335

331:                                              ; preds = %292
  %332 = load ptr, ptr %32, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.node_vertice, ptr %332, i32 0, i32 0
  %334 = load ptr, ptr %333, align 8, !tbaa !33
  store ptr %334, ptr %32, align 8, !tbaa !5
  br label %289, !llvm.loop !35

335:                                              ; preds = %328, %289
  %336 = load i32, ptr %16, align 4, !tbaa !9
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %389, label %338

338:                                              ; preds = %335
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %385, %338
  %340 = load i32, ptr %14, align 4, !tbaa !9
  %341 = load i32, ptr %7, align 4, !tbaa !9
  %342 = icmp slt i32 %340, %341
  br i1 %342, label %343, label %388

343:                                              ; preds = %339
  %344 = load ptr, ptr %6, align 8, !tbaa !5
  %345 = load i32, ptr %14, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds ptr, ptr %344, i64 %346
  %348 = load ptr, ptr %347, align 8, !tbaa !5
  store ptr %348, ptr %31, align 8, !tbaa !5
  %349 = load ptr, ptr %31, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.s_atm, ptr %349, i32 0, i32 5
  %351 = load float, ptr %350, align 4, !tbaa !15
  %352 = load float, ptr %26, align 4, !tbaa !11
  %353 = fsub float %351, %352
  store float %353, ptr %23, align 4, !tbaa !11
  %354 = load ptr, ptr %31, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.s_atm, ptr %354, i32 0, i32 6
  %356 = load float, ptr %355, align 8, !tbaa !19
  %357 = load float, ptr %27, align 4, !tbaa !11
  %358 = fsub float %356, %357
  store float %358, ptr %24, align 4, !tbaa !11
  %359 = load ptr, ptr %31, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.s_atm, ptr %359, i32 0, i32 7
  %361 = load float, ptr %360, align 4, !tbaa !20
  %362 = load float, ptr %28, align 4, !tbaa !11
  %363 = fsub float %361, %362
  store float %363, ptr %25, align 4, !tbaa !11
  %364 = load ptr, ptr %31, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.s_atm, ptr %364, i32 0, i32 3
  %366 = load float, ptr %365, align 4, !tbaa !18
  %367 = load ptr, ptr %31, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.s_atm, ptr %367, i32 0, i32 3
  %369 = load float, ptr %368, align 4, !tbaa !18
  %370 = fmul float %366, %369
  %371 = load float, ptr %23, align 4, !tbaa !11
  %372 = load float, ptr %23, align 4, !tbaa !11
  %373 = load float, ptr %24, align 4, !tbaa !11
  %374 = load float, ptr %24, align 4, !tbaa !11
  %375 = fmul float %373, %374
  %376 = call float @llvm.fmuladd.f32(float %371, float %372, float %375)
  %377 = load float, ptr %25, align 4, !tbaa !11
  %378 = load float, ptr %25, align 4, !tbaa !11
  %379 = call float @llvm.fmuladd.f32(float %377, float %378, float %376)
  %380 = fcmp ogt float %370, %379
  br i1 %380, label %381, label %384

381:                                              ; preds = %343
  %382 = load i32, ptr %15, align 4, !tbaa !9
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %15, align 4, !tbaa !9
  br label %388

384:                                              ; preds = %343
  br label %385

385:                                              ; preds = %384
  %386 = load i32, ptr %14, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %14, align 4, !tbaa !9
  br label %339, !llvm.loop !36

388:                                              ; preds = %381, %339
  br label %389

389:                                              ; preds = %388, %335
  br label %390

390:                                              ; preds = %389
  %391 = load i32, ptr %13, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %13, align 4, !tbaa !9
  br label %272, !llvm.loop !37

393:                                              ; preds = %272
  %394 = load i32, ptr %15, align 4, !tbaa !9
  %395 = sitofp i32 %394 to float
  %396 = load i32, ptr %10, align 4, !tbaa !9
  %397 = sitofp i32 %396 to float
  %398 = fdiv float %395, %397
  %399 = load float, ptr %29, align 4, !tbaa !11
  %400 = fmul float %398, %399
  store float %400, ptr %30, align 4, !tbaa !11
  %401 = load ptr, ptr %9, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.s_pocket, ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !38
  %404 = getelementptr inbounds %struct.s_desc, ptr %403, i32 0, i32 2
  %405 = load float, ptr %404, align 4, !tbaa !39
  %406 = load float, ptr %8, align 4, !tbaa !11
  %407 = fadd float %405, %406
  %408 = load float, ptr %30, align 4, !tbaa !11
  %409 = fsub float %407, %408
  %410 = load float, ptr %8, align 4, !tbaa !11
  %411 = fdiv float %409, %410
  %412 = load ptr, ptr %9, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.s_pocket, ptr %412, i32 0, i32 5
  store float %411, ptr %413, align 4, !tbaa !41
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.s_pocket, ptr %414, i32 0, i32 5
  %416 = load float, ptr %415, align 4, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  ret float %416
}

declare float @rand_uniform(float noundef, float noundef) #2

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

attributes #0 = { nocallback nofree nosync 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"s_pocket", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !7, i64 32, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!15 = !{!16, !12, i64 20}
!16 = !{!"s_atm", !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !7, i64 32, !7, i64 37, !7, i64 44, !7, i64 60, !7, i64 76, !7, i64 79, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !7, i64 144, !7, i64 145, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !17, i64 164, !6, i64 168, !10, i64 176}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !12, i64 12}
!19 = !{!16, !12, i64 24}
!20 = !{!16, !12, i64 28}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !6, i64 0}
!24 = !{!"c_lst_vertices", !6, i64 0, !6, i64 8, !6, i64 16, !25, i64 24}
!25 = !{!"long", !7, i64 0}
!26 = !{!27, !6, i64 16}
!27 = !{!"node_vertice", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!29, !12, i64 24}
!29 = !{!"s_vvertice", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !10, i64 36, !10, i64 40, !7, i64 44, !7, i64 64, !7, i64 96, !12, i64 108}
!30 = !{!29, !12, i64 20}
!31 = !{!29, !12, i64 28}
!32 = !{!29, !12, i64 32}
!33 = !{!27, !6, i64 0}
!34 = distinct !{!34, !22}
!35 = distinct !{!35, !22}
!36 = distinct !{!36, !22}
!37 = distinct !{!37, !22}
!38 = !{!14, !6, i64 0}
!39 = !{!40, !12, i64 8}
!40 = !{!"s_desc", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !10, i64 108, !7, i64 112, !10, i64 192, !10, i64 196, !10, i64 200, !12, i64 204, !12, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !7, i64 232, !7, i64 487, !7, i64 742}
!41 = !{!14, !12, i64 28}


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

; Function Attrs: nounwind uwtable
define dso_local float @set_mc_overlap_volume(ptr nocapture noundef readonly %0, i32 noundef %1, float noundef %2, ptr nocapture noundef %3, i32 noundef %4) local_unnamed_addr #0 {
  %6 = getelementptr inbounds i8, ptr %3, i64 8
  %7 = load ptr, ptr %6, align 8, !tbaa !5
  %8 = icmp sgt i32 %1, 0
  br i1 %8, label %9, label %.preheader184

9:                                                ; preds = %5
  %wide.trip.count = zext nneg i32 %1 to i64
  %10 = load ptr, ptr %0, align 8, !tbaa !12
  %11 = getelementptr inbounds i8, ptr %10, i64 20
  %12 = load float, ptr %11, align 4, !tbaa !13
  %13 = getelementptr inbounds i8, ptr %10, i64 12
  %14 = load float, ptr %13, align 4, !tbaa !16
  %15 = fsub float %12, %14
  %16 = fadd float %12, %14
  %17 = getelementptr inbounds i8, ptr %10, i64 24
  %18 = load float, ptr %17, align 8, !tbaa !17
  %19 = fsub float %18, %14
  %20 = fadd float %14, %18
  %21 = getelementptr inbounds i8, ptr %10, i64 28
  %22 = load float, ptr %21, align 4, !tbaa !18
  %23 = fsub float %22, %14
  %24 = fadd float %14, %22
  %exitcond.peel.not = icmp eq i32 %1, 1
  br i1 %exitcond.peel.not, label %.preheader184, label %.lr.ph.peel.next

.preheader184:                                    ; preds = %55, %9, %5
  %.0154.lcssa = phi float [ 0.000000e+00, %5 ], [ %15, %9 ], [ %.1155, %55 ]
  %.0149.lcssa = phi float [ 0.000000e+00, %5 ], [ %16, %9 ], [ %.1150, %55 ]
  %.0144.lcssa = phi float [ 0.000000e+00, %5 ], [ %19, %9 ], [ %.1145, %55 ]
  %.0140.lcssa = phi float [ 0.000000e+00, %5 ], [ %20, %9 ], [ %.1141, %55 ]
  %.0136.lcssa = phi float [ 0.000000e+00, %5 ], [ %23, %9 ], [ %.1137, %55 ]
  %.0134.lcssa = phi float [ 0.000000e+00, %5 ], [ %24, %9 ], [ %.1135, %55 ]
  %.0197 = load ptr, ptr %7, align 8, !tbaa !12
  %.not198 = icmp eq ptr %.0197, null
  br i1 %.not198, label %.preheader183, label %.lr.ph206

.lr.ph.peel.next:                                 ; preds = %9, %55
  %indvars.iv = phi i64 [ %indvars.iv.next, %55 ], [ 1, %9 ]
  %.0134191 = phi float [ %.1135, %55 ], [ %24, %9 ]
  %.0136190 = phi float [ %.1137, %55 ], [ %23, %9 ]
  %.0140189 = phi float [ %.1141, %55 ], [ %20, %9 ]
  %.0144188 = phi float [ %.1145, %55 ], [ %19, %9 ]
  %.0149187 = phi float [ %.1150, %55 ], [ %16, %9 ]
  %.0154186 = phi float [ %.1155, %55 ], [ %15, %9 ]
  %25 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv
  %26 = load ptr, ptr %25, align 8, !tbaa !12
  %27 = getelementptr inbounds i8, ptr %26, i64 20
  %28 = load float, ptr %27, align 4, !tbaa !13
  %29 = getelementptr inbounds i8, ptr %26, i64 12
  %30 = load float, ptr %29, align 4, !tbaa !16
  %31 = fsub float %28, %30
  %32 = fcmp ogt float %.0154186, %31
  br i1 %32, label %37, label %33

33:                                               ; preds = %.lr.ph.peel.next
  %34 = fadd float %28, %30
  %35 = fcmp olt float %.0149187, %34
  br i1 %35, label %36, label %37

36:                                               ; preds = %33
  br label %37

37:                                               ; preds = %.lr.ph.peel.next, %33, %36
  %.1155 = phi float [ %.0154186, %36 ], [ %.0154186, %33 ], [ %31, %.lr.ph.peel.next ]
  %.1150 = phi float [ %34, %36 ], [ %.0149187, %33 ], [ %.0149187, %.lr.ph.peel.next ]
  %38 = getelementptr inbounds i8, ptr %26, i64 24
  %39 = load float, ptr %38, align 8, !tbaa !17
  %40 = fsub float %39, %30
  %41 = fcmp ogt float %.0144188, %40
  br i1 %41, label %46, label %42

42:                                               ; preds = %37
  %43 = fadd float %30, %39
  %44 = fcmp olt float %.0140189, %43
  br i1 %44, label %45, label %46

45:                                               ; preds = %42
  br label %46

46:                                               ; preds = %37, %42, %45
  %.1145 = phi float [ %.0144188, %45 ], [ %.0144188, %42 ], [ %40, %37 ]
  %.1141 = phi float [ %43, %45 ], [ %.0140189, %42 ], [ %.0140189, %37 ]
  %47 = getelementptr inbounds i8, ptr %26, i64 28
  %48 = load float, ptr %47, align 4, !tbaa !18
  %49 = fsub float %48, %30
  %50 = fcmp ogt float %.0136190, %49
  br i1 %50, label %55, label %51

51:                                               ; preds = %46
  %52 = fadd float %30, %48
  %53 = fcmp olt float %.0134191, %52
  br i1 %53, label %54, label %55

54:                                               ; preds = %51
  br label %55

55:                                               ; preds = %46, %51, %54
  %.1137 = phi float [ %.0136190, %54 ], [ %.0136190, %51 ], [ %49, %46 ]
  %.1135 = phi float [ %52, %54 ], [ %.0134191, %51 ], [ %.0134191, %46 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader184, label %.lr.ph.peel.next, !llvm.loop !19

.preheader183:                                    ; preds = %133, %.preheader184
  %.3157.lcssa = phi float [ %.0154.lcssa, %.preheader184 ], [ %.4158, %133 ]
  %.3152.lcssa = phi float [ %.0149.lcssa, %.preheader184 ], [ %.4153, %133 ]
  %.3147.lcssa = phi float [ %.0144.lcssa, %.preheader184 ], [ %.4148, %133 ]
  %.3143.lcssa = phi float [ %.0140.lcssa, %.preheader184 ], [ %.4, %133 ]
  %.2138.lcssa = phi float [ %.0136.lcssa, %.preheader184 ], [ %.3139, %133 ]
  %.2.lcssa = phi float [ %.0134.lcssa, %.preheader184 ], [ %.3, %133 ]
  %56 = icmp sgt i32 %4, 0
  br i1 %56, label %.lr.ph217, label %._crit_edge

.lr.ph217:                                        ; preds = %.preheader183
  br i1 %8, label %.lr.ph217.split.us.preheader, label %.lr.ph217.split

.lr.ph217.split.us.preheader:                     ; preds = %.lr.ph217
  %wide.trip.count226 = zext nneg i32 %1 to i64
  br label %.lr.ph217.split.us

.lr.ph217.split.us:                               ; preds = %.lr.ph217.split.us.preheader, %..loopexit_crit_edge.us
  %.0160216.us = phi i32 [ %.2162.us, %..loopexit_crit_edge.us ], [ 0, %.lr.ph217.split.us.preheader ]
  %.1165215.us = phi i32 [ %102, %..loopexit_crit_edge.us ], [ 0, %.lr.ph217.split.us.preheader ]
  %57 = tail call float @rand_uniform(float noundef %.3157.lcssa, float noundef %.3152.lcssa) #3
  %58 = tail call float @rand_uniform(float noundef %.3147.lcssa, float noundef %.3143.lcssa) #3
  %59 = tail call float @rand_uniform(float noundef %.2138.lcssa, float noundef %.2.lcssa) #3
  br label %60

60:                                               ; preds = %61, %.lr.ph217.split.us
  %.1.in.us = phi ptr [ %7, %.lr.ph217.split.us ], [ %.1.us, %61 ]
  %.1.us = load ptr, ptr %.1.in.us, align 8, !tbaa !12
  %.not180.us = icmp eq ptr %.1.us, null
  br i1 %.not180.us, label %.preheader.us, label %61

61:                                               ; preds = %60
  %62 = getelementptr inbounds i8, ptr %.1.us, i64 16
  %63 = load ptr, ptr %62, align 8, !tbaa !22
  %64 = getelementptr inbounds i8, ptr %63, i64 24
  %65 = load float, ptr %64, align 8, !tbaa !24
  %66 = fsub float %65, %57
  %67 = getelementptr inbounds i8, ptr %63, i64 28
  %68 = load float, ptr %67, align 4, !tbaa !26
  %69 = fsub float %68, %58
  %70 = getelementptr inbounds i8, ptr %63, i64 32
  %71 = load float, ptr %70, align 8, !tbaa !27
  %72 = fsub float %71, %59
  %73 = getelementptr inbounds i8, ptr %63, i64 20
  %74 = load float, ptr %73, align 4, !tbaa !28
  %75 = fmul float %74, %74
  %76 = fmul float %69, %69
  %77 = tail call float @llvm.fmuladd.f32(float %66, float %66, float %76)
  %78 = tail call float @llvm.fmuladd.f32(float %72, float %72, float %77)
  %79 = fcmp ogt float %75, %78
  br i1 %79, label %.thread.us, label %60, !llvm.loop !29

.thread.us:                                       ; preds = %61
  %80 = add nsw i32 %.0160216.us, 1
  br label %..loopexit_crit_edge.us

81:                                               ; preds = %.preheader.us
  %indvars.iv.next224 = add nuw nsw i64 %indvars.iv223, 1
  %exitcond227.not = icmp eq i64 %indvars.iv.next224, %wide.trip.count226
  br i1 %exitcond227.not, label %..loopexit_crit_edge.us, label %.preheader.us, !llvm.loop !30

.preheader.us:                                    ; preds = %60, %81
  %indvars.iv223 = phi i64 [ %indvars.iv.next224, %81 ], [ 0, %60 ]
  %82 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv223
  %83 = load ptr, ptr %82, align 8, !tbaa !12
  %84 = getelementptr inbounds i8, ptr %83, i64 20
  %85 = load float, ptr %84, align 4, !tbaa !13
  %86 = fsub float %85, %57
  %87 = getelementptr inbounds i8, ptr %83, i64 24
  %88 = load float, ptr %87, align 8, !tbaa !17
  %89 = fsub float %88, %58
  %90 = getelementptr inbounds i8, ptr %83, i64 28
  %91 = load float, ptr %90, align 4, !tbaa !18
  %92 = fsub float %91, %59
  %93 = getelementptr inbounds i8, ptr %83, i64 12
  %94 = load float, ptr %93, align 4, !tbaa !16
  %95 = fmul float %94, %94
  %96 = fmul float %89, %89
  %97 = tail call float @llvm.fmuladd.f32(float %86, float %86, float %96)
  %98 = tail call float @llvm.fmuladd.f32(float %92, float %92, float %97)
  %99 = fcmp ogt float %95, %98
  br i1 %99, label %100, label %81

100:                                              ; preds = %.preheader.us
  %101 = add nsw i32 %.0160216.us, 1
  br label %..loopexit_crit_edge.us

..loopexit_crit_edge.us:                          ; preds = %81, %100, %.thread.us
  %.2162.us = phi i32 [ %101, %100 ], [ %80, %.thread.us ], [ %.0160216.us, %81 ]
  %102 = add nuw nsw i32 %.1165215.us, 1
  %exitcond228.not = icmp eq i32 %102, %4
  br i1 %exitcond228.not, label %._crit_edge, label %.lr.ph217.split.us, !llvm.loop !31

.lr.ph206:                                        ; preds = %.preheader184, %133
  %.0205 = phi ptr [ %.0, %133 ], [ %.0197, %.preheader184 ]
  %.2204 = phi float [ %.3, %133 ], [ %.0134.lcssa, %.preheader184 ]
  %.2138203 = phi float [ %.3139, %133 ], [ %.0136.lcssa, %.preheader184 ]
  %.3143202 = phi float [ %.4, %133 ], [ %.0140.lcssa, %.preheader184 ]
  %.3147201 = phi float [ %.4148, %133 ], [ %.0144.lcssa, %.preheader184 ]
  %.3152200 = phi float [ %.4153, %133 ], [ %.0149.lcssa, %.preheader184 ]
  %.3157199 = phi float [ %.4158, %133 ], [ %.0154.lcssa, %.preheader184 ]
  %103 = getelementptr inbounds i8, ptr %.0205, i64 16
  %104 = load ptr, ptr %103, align 8, !tbaa !22
  %105 = getelementptr inbounds i8, ptr %104, i64 24
  %106 = load float, ptr %105, align 8, !tbaa !24
  %107 = getelementptr inbounds i8, ptr %104, i64 20
  %108 = load float, ptr %107, align 4, !tbaa !28
  %109 = fsub float %106, %108
  %110 = fcmp ogt float %.3157199, %109
  br i1 %110, label %115, label %111

111:                                              ; preds = %.lr.ph206
  %112 = fadd float %106, %108
  %113 = fcmp olt float %.3152200, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %111
  br label %115

115:                                              ; preds = %.lr.ph206, %111, %114
  %.4158 = phi float [ %.3157199, %114 ], [ %.3157199, %111 ], [ %109, %.lr.ph206 ]
  %.4153 = phi float [ %112, %114 ], [ %.3152200, %111 ], [ %.3152200, %.lr.ph206 ]
  %116 = getelementptr inbounds i8, ptr %104, i64 28
  %117 = load float, ptr %116, align 4, !tbaa !26
  %118 = fsub float %117, %108
  %119 = fcmp ogt float %.3147201, %118
  br i1 %119, label %124, label %120

120:                                              ; preds = %115
  %121 = fadd float %108, %117
  %122 = fcmp olt float %.3143202, %121
  br i1 %122, label %123, label %124

123:                                              ; preds = %120
  br label %124

124:                                              ; preds = %115, %120, %123
  %.4148 = phi float [ %.3147201, %123 ], [ %.3147201, %120 ], [ %118, %115 ]
  %.4 = phi float [ %121, %123 ], [ %.3143202, %120 ], [ %.3143202, %115 ]
  %125 = getelementptr inbounds i8, ptr %104, i64 32
  %126 = load float, ptr %125, align 8, !tbaa !27
  %127 = fsub float %126, %108
  %128 = fcmp ogt float %.2138203, %127
  br i1 %128, label %133, label %129

129:                                              ; preds = %124
  %130 = fadd float %108, %126
  %131 = fcmp olt float %.2204, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %129
  br label %133

133:                                              ; preds = %124, %129, %132
  %.3139 = phi float [ %.2138203, %132 ], [ %.2138203, %129 ], [ %127, %124 ]
  %.3 = phi float [ %130, %132 ], [ %.2204, %129 ], [ %.2204, %124 ]
  %.0 = load ptr, ptr %.0205, align 8, !tbaa !12
  %.not = icmp eq ptr %.0, null
  br i1 %.not, label %.preheader183, label %.lr.ph206, !llvm.loop !32

.lr.ph217.split:                                  ; preds = %.lr.ph217, %.preheader
  %.0160216 = phi i32 [ %.2162, %.preheader ], [ 0, %.lr.ph217 ]
  %.1165215 = phi i32 [ %158, %.preheader ], [ 0, %.lr.ph217 ]
  %134 = tail call float @rand_uniform(float noundef %.3157.lcssa, float noundef %.3152.lcssa) #3
  %135 = tail call float @rand_uniform(float noundef %.3147.lcssa, float noundef %.3143.lcssa) #3
  %136 = tail call float @rand_uniform(float noundef %.2138.lcssa, float noundef %.2.lcssa) #3
  br label %137

137:                                              ; preds = %138, %.lr.ph217.split
  %.1.in = phi ptr [ %7, %.lr.ph217.split ], [ %.1, %138 ]
  %.1 = load ptr, ptr %.1.in, align 8, !tbaa !12
  %.not180 = icmp eq ptr %.1, null
  br i1 %.not180, label %.preheader, label %138

138:                                              ; preds = %137
  %139 = getelementptr inbounds i8, ptr %.1, i64 16
  %140 = load ptr, ptr %139, align 8, !tbaa !22
  %141 = getelementptr inbounds i8, ptr %140, i64 24
  %142 = load float, ptr %141, align 8, !tbaa !24
  %143 = fsub float %142, %134
  %144 = getelementptr inbounds i8, ptr %140, i64 28
  %145 = load float, ptr %144, align 4, !tbaa !26
  %146 = fsub float %145, %135
  %147 = getelementptr inbounds i8, ptr %140, i64 32
  %148 = load float, ptr %147, align 8, !tbaa !27
  %149 = fsub float %148, %136
  %150 = getelementptr inbounds i8, ptr %140, i64 20
  %151 = load float, ptr %150, align 4, !tbaa !28
  %152 = fmul float %151, %151
  %153 = fmul float %146, %146
  %154 = tail call float @llvm.fmuladd.f32(float %143, float %143, float %153)
  %155 = tail call float @llvm.fmuladd.f32(float %149, float %149, float %154)
  %156 = fcmp ogt float %152, %155
  br i1 %156, label %.thread, label %137, !llvm.loop !29

.thread:                                          ; preds = %138
  %157 = add nsw i32 %.0160216, 1
  br label %.preheader

.preheader:                                       ; preds = %137, %.thread
  %.2162 = phi i32 [ %157, %.thread ], [ %.0160216, %137 ]
  %158 = add nuw nsw i32 %.1165215, 1
  %exitcond222.not = icmp eq i32 %158, %4
  br i1 %exitcond222.not, label %._crit_edge, label %.lr.ph217.split, !llvm.loop !31

._crit_edge:                                      ; preds = %.preheader, %..loopexit_crit_edge.us, %.preheader183
  %.0160.lcssa = phi i32 [ 0, %.preheader183 ], [ %.2162.us, %..loopexit_crit_edge.us ], [ %.2162, %.preheader ]
  %159 = fsub float %.3152.lcssa, %.3157.lcssa
  %160 = fsub float %.3143.lcssa, %.3147.lcssa
  %161 = fmul float %159, %160
  %162 = fsub float %.2.lcssa, %.2138.lcssa
  %163 = fmul float %161, %162
  %164 = sitofp i32 %.0160.lcssa to float
  %165 = sitofp i32 %4 to float
  %166 = fdiv float %164, %165
  %167 = fmul float %163, %166
  %168 = load ptr, ptr %3, align 8, !tbaa !33
  %169 = getelementptr inbounds i8, ptr %168, i64 8
  %170 = load float, ptr %169, align 4, !tbaa !34
  %171 = fadd float %170, %2
  %172 = fsub float %171, %167
  %173 = fdiv float %172, %2
  %174 = getelementptr inbounds i8, ptr %3, i64 28
  store float %173, ptr %174, align 4, !tbaa !36
  ret float %173
}

declare float @rand_uniform(float noundef, float noundef) local_unnamed_addr #1

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

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 = { "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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"s_pocket", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !8, i64 32, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !10, i64 20}
!14 = !{!"s_atm", !11, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !8, i64 32, !8, i64 37, !8, i64 44, !8, i64 60, !8, i64 76, !8, i64 79, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !8, i64 144, !8, i64 145, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !15, i64 164, !7, i64 168, !11, i64 176}
!15 = !{!"short", !8, i64 0}
!16 = !{!14, !10, i64 12}
!17 = !{!14, !10, i64 24}
!18 = !{!14, !10, i64 28}
!19 = distinct !{!19, !20, !21}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!"llvm.loop.peeled.count", i32 1}
!22 = !{!23, !7, i64 16}
!23 = !{!"node_vertice", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!25, !10, i64 24}
!25 = !{!"s_vvertice", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !11, i64 36, !11, i64 40, !8, i64 44, !8, i64 64, !8, i64 96, !10, i64 108}
!26 = !{!25, !10, i64 28}
!27 = !{!25, !10, i64 32}
!28 = !{!25, !10, i64 20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = !{!6, !7, i64 0}
!34 = !{!35, !10, i64 8}
!35 = !{!"s_desc", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !11, i64 108, !8, i64 112, !11, i64 192, !11, i64 196, !11, i64 200, !10, i64 204, !10, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !8, i64 232, !8, i64 487, !8, i64 742}
!36 = !{!6, !10, i64 28}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass