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

; 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_pdb = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, float, float, float, float, float, float, [83 x i8], [500 x i8], float, float, float, i32, i32 }
%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] }
%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 }

; 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 void @set_descriptors(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef %6, i32 noundef %7) #1 {
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %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 i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca float, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store i32 %1, ptr %10, align 4, !tbaa !9
  store ptr %2, ptr %11, align 8, !tbaa !5
  store i32 %3, ptr %12, align 4, !tbaa !9
  store ptr %4, ptr %13, align 8, !tbaa !5
  store i32 %5, ptr %14, align 4, !tbaa !9
  store ptr %6, ptr %15, align 8, !tbaa !5
  store i32 %7, ptr %16, align 4, !tbaa !9
  %34 = load ptr, ptr %9, align 8, !tbaa !5
  %35 = load i32, ptr %10, align 4, !tbaa !9
  %36 = load ptr, ptr %13, align 8, !tbaa !5
  %37 = load ptr, ptr %15, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.s_pdb, ptr %37, i32 0, i32 2
  %39 = load ptr, ptr %38, align 8, !tbaa !11
  %40 = load ptr, ptr %15, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.s_pdb, ptr %40, i32 0, i32 10
  %42 = load i32, ptr %41, align 4, !tbaa !14
  call void @set_atom_based_descriptors(ptr noundef %34, i32 noundef %35, ptr noundef %36, ptr noundef %39, i32 noundef %42)
  %43 = load ptr, ptr %11, align 8, !tbaa !5
  %44 = icmp ne ptr %43, null
  br i1 %44, label %46, label %45

45:                                               ; preds = %8
  br label %351

46:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store float 0.000000e+00, ptr %17, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store float 0.000000e+00, ptr %22, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store float 0.000000e+00, ptr %23, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store float 0.000000e+00, ptr %24, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  store float -1.000000e+00, ptr %25, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store float 0.000000e+00, ptr %26, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store float -1.000000e+00, ptr %31, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  store ptr null, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  store ptr null, ptr %33, align 8, !tbaa !5
  %47 = load ptr, ptr %13, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.s_desc, ptr %47, i32 0, i32 8
  store float 0.000000e+00, ptr %48, align 4, !tbaa !16
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %49

49:                                               ; preds = %262, %46
  %50 = load i32, ptr %27, align 4, !tbaa !9
  %51 = load i32, ptr %12, align 4, !tbaa !9
  %52 = icmp slt i32 %50, %51
  br i1 %52, label %53, label %265

53:                                               ; preds = %49
  %54 = load ptr, ptr %11, align 8, !tbaa !5
  %55 = load i32, ptr %27, align 4, !tbaa !9
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds ptr, ptr %54, i64 %56
  %58 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %58, ptr %32, align 8, !tbaa !5
  %59 = load ptr, ptr %32, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.s_vvertice, ptr %59, i32 0, i32 5
  %61 = load float, ptr %60, align 4, !tbaa !18
  %62 = load float, ptr %31, align 4, !tbaa !15
  %63 = fcmp ogt float %61, %62
  br i1 %63, label %64, label %68

64:                                               ; preds = %53
  %65 = load ptr, ptr %32, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.s_vvertice, ptr %65, i32 0, i32 5
  %67 = load float, ptr %66, align 4, !tbaa !18
  store float %67, ptr %31, align 4, !tbaa !15
  br label %68

68:                                               ; preds = %64, %53
  %69 = load ptr, ptr %32, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.s_vvertice, ptr %69, i32 0, i32 6
  %71 = load float, ptr %70, align 8, !tbaa !20
  store float %71, ptr %18, align 4, !tbaa !15
  %72 = load ptr, ptr %32, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.s_vvertice, ptr %72, i32 0, i32 7
  %74 = load float, ptr %73, align 4, !tbaa !21
  store float %74, ptr %19, align 4, !tbaa !15
  %75 = load ptr, ptr %32, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.s_vvertice, ptr %75, i32 0, i32 8
  %77 = load float, ptr %76, align 8, !tbaa !22
  store float %77, ptr %20, align 4, !tbaa !15
  %78 = load ptr, ptr %32, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.s_vvertice, ptr %78, i32 0, i32 5
  %80 = load float, ptr %79, align 4, !tbaa !18
  store float %80, ptr %21, align 4, !tbaa !15
  store i32 0, ptr %28, align 4, !tbaa !9
  %81 = load ptr, ptr %32, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.s_vvertice, ptr %81, i32 0, i32 4
  %83 = load i32, ptr %82, align 8, !tbaa !23
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %175

85:                                               ; preds = %68
  store i32 0, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %163, %85
  %87 = load i32, ptr %28, align 4, !tbaa !9
  %88 = load i32, ptr %12, align 4, !tbaa !9
  %89 = icmp slt i32 %87, %88
  br i1 %89, label %90, label %166

90:                                               ; preds = %86
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = load i32, ptr %28, align 4, !tbaa !9
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds ptr, ptr %91, i64 %93
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  store ptr %95, ptr %33, align 8, !tbaa !5
  %96 = load ptr, ptr %33, align 8, !tbaa !5
  %97 = load ptr, ptr %32, align 8, !tbaa !5
  %98 = icmp ne ptr %96, %97
  br i1 %98, label %99, label %129

99:                                               ; preds = %90
  %100 = load ptr, ptr %33, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.s_vvertice, ptr %100, i32 0, i32 4
  %102 = load i32, ptr %101, align 8, !tbaa !23
  %103 = icmp eq i32 %102, 0
  br i1 %103, label %104, label %129

104:                                              ; preds = %99
  %105 = load float, ptr %18, align 4, !tbaa !15
  %106 = load float, ptr %19, align 4, !tbaa !15
  %107 = load float, ptr %20, align 4, !tbaa !15
  %108 = load ptr, ptr %33, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.s_vvertice, ptr %108, i32 0, i32 6
  %110 = load float, ptr %109, align 8, !tbaa !20
  %111 = load ptr, ptr %33, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.s_vvertice, ptr %111, i32 0, i32 7
  %113 = load float, ptr %112, align 4, !tbaa !21
  %114 = load ptr, ptr %33, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.s_vvertice, ptr %114, i32 0, i32 8
  %116 = load float, ptr %115, align 8, !tbaa !22
  %117 = call float @dist(float noundef %105, float noundef %106, float noundef %107, float noundef %110, float noundef %113, float noundef %116)
  %118 = load ptr, ptr %33, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.s_vvertice, ptr %118, i32 0, i32 5
  %120 = load float, ptr %119, align 4, !tbaa !18
  %121 = load float, ptr %21, align 4, !tbaa !15
  %122 = fadd float %120, %121
  %123 = fsub float %117, %122
  %124 = fpext float %123 to double
  %125 = fcmp ole double %124, 0.000000e+00
  br i1 %125, label %126, label %129

126:                                              ; preds = %104
  %127 = load i32, ptr %29, align 4, !tbaa !9
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %29, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %126, %104, %99, %90
  %130 = load i32, ptr %28, align 4, !tbaa !9
  %131 = load i32, ptr %27, align 4, !tbaa !9
  %132 = icmp sgt i32 %130, %131
  br i1 %132, label %133, label %162

133:                                              ; preds = %129
  %134 = load ptr, ptr %32, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.s_vvertice, ptr %134, i32 0, i32 6
  %136 = load float, ptr %135, align 8, !tbaa !20
  %137 = load ptr, ptr %32, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.s_vvertice, ptr %137, i32 0, i32 7
  %139 = load float, ptr %138, align 4, !tbaa !21
  %140 = load ptr, ptr %32, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.s_vvertice, ptr %140, i32 0, i32 8
  %142 = load float, ptr %141, align 8, !tbaa !22
  %143 = load ptr, ptr %33, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.s_vvertice, ptr %143, i32 0, i32 6
  %145 = load float, ptr %144, align 8, !tbaa !20
  %146 = load ptr, ptr %33, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.s_vvertice, ptr %146, i32 0, i32 7
  %148 = load float, ptr %147, align 4, !tbaa !21
  %149 = load ptr, ptr %33, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.s_vvertice, ptr %149, i32 0, i32 8
  %151 = load float, ptr %150, align 8, !tbaa !22
  %152 = call float @dist(float noundef %136, float noundef %139, float noundef %142, float noundef %145, float noundef %148, float noundef %151)
  store float %152, ptr %26, align 4, !tbaa !15
  %153 = load float, ptr %26, align 4, !tbaa !15
  %154 = load float, ptr %25, align 4, !tbaa !15
  %155 = fcmp ogt float %153, %154
  br i1 %155, label %156, label %158

156:                                              ; preds = %133
  %157 = load float, ptr %26, align 4, !tbaa !15
  store float %157, ptr %25, align 4, !tbaa !15
  br label %158

158:                                              ; preds = %156, %133
  %159 = load float, ptr %26, align 4, !tbaa !15
  %160 = load float, ptr %24, align 4, !tbaa !15
  %161 = fadd float %160, %159
  store float %161, ptr %24, align 4, !tbaa !15
  br label %162

162:                                              ; preds = %158, %129
  br label %163

163:                                              ; preds = %162
  %164 = load i32, ptr %28, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %28, align 4, !tbaa !9
  br label %86, !llvm.loop !24

166:                                              ; preds = %86
  %167 = load i32, ptr %29, align 4, !tbaa !9
  %168 = sitofp i32 %167 to float
  %169 = load ptr, ptr %13, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.s_desc, ptr %169, i32 0, i32 8
  %171 = load float, ptr %170, align 4, !tbaa !16
  %172 = fadd float %171, %168
  store float %172, ptr %170, align 4, !tbaa !16
  %173 = load i32, ptr %30, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %30, align 4, !tbaa !9
  br label %227

175:                                              ; preds = %68
  %176 = load i32, ptr %27, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %28, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %223, %175
  %179 = load i32, ptr %28, align 4, !tbaa !9
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = icmp slt i32 %179, %180
  br i1 %181, label %182, label %226

182:                                              ; preds = %178
  %183 = load ptr, ptr %32, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.s_vvertice, ptr %183, i32 0, i32 6
  %185 = load float, ptr %184, align 8, !tbaa !20
  %186 = load ptr, ptr %32, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.s_vvertice, ptr %186, i32 0, i32 7
  %188 = load float, ptr %187, align 4, !tbaa !21
  %189 = load ptr, ptr %32, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.s_vvertice, ptr %189, i32 0, i32 8
  %191 = load float, ptr %190, align 8, !tbaa !22
  %192 = load ptr, ptr %11, align 8, !tbaa !5
  %193 = load i32, ptr %28, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds ptr, ptr %192, i64 %194
  %196 = load ptr, ptr %195, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.s_vvertice, ptr %196, i32 0, i32 6
  %198 = load float, ptr %197, align 8, !tbaa !20
  %199 = load ptr, ptr %11, align 8, !tbaa !5
  %200 = load i32, ptr %28, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds ptr, ptr %199, i64 %201
  %203 = load ptr, ptr %202, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.s_vvertice, ptr %203, i32 0, i32 7
  %205 = load float, ptr %204, align 4, !tbaa !21
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = load i32, ptr %28, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds ptr, ptr %206, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.s_vvertice, ptr %210, i32 0, i32 8
  %212 = load float, ptr %211, align 8, !tbaa !22
  %213 = call float @dist(float noundef %185, float noundef %188, float noundef %191, float noundef %198, float noundef %205, float noundef %212)
  store float %213, ptr %26, align 4, !tbaa !15
  %214 = load float, ptr %26, align 4, !tbaa !15
  %215 = load float, ptr %25, align 4, !tbaa !15
  %216 = fcmp ogt float %214, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %182
  %218 = load float, ptr %26, align 4, !tbaa !15
  store float %218, ptr %25, align 4, !tbaa !15
  br label %219

219:                                              ; preds = %217, %182
  %220 = load float, ptr %26, align 4, !tbaa !15
  %221 = load float, ptr %24, align 4, !tbaa !15
  %222 = fadd float %221, %220
  store float %222, ptr %24, align 4, !tbaa !15
  br label %223

223:                                              ; preds = %219
  %224 = load i32, ptr %28, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %28, align 4, !tbaa !9
  br label %178, !llvm.loop !26

226:                                              ; preds = %178
  br label %227

227:                                              ; preds = %226, %166
  %228 = load ptr, ptr %32, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.s_vvertice, ptr %228, i32 0, i32 5
  %230 = load float, ptr %229, align 4, !tbaa !18
  %231 = load float, ptr %23, align 4, !tbaa !15
  %232 = fadd float %231, %230
  store float %232, ptr %23, align 4, !tbaa !15
  %233 = load ptr, ptr %32, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.s_vvertice, ptr %233, i32 0, i32 6
  %235 = load float, ptr %234, align 8, !tbaa !20
  %236 = load ptr, ptr %32, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.s_vvertice, ptr %236, i32 0, i32 7
  %238 = load float, ptr %237, align 4, !tbaa !21
  %239 = load ptr, ptr %32, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.s_vvertice, ptr %239, i32 0, i32 8
  %241 = load float, ptr %240, align 8, !tbaa !22
  %242 = load ptr, ptr %32, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.s_vvertice, ptr %242, i32 0, i32 13
  %244 = getelementptr inbounds [3 x float], ptr %243, i64 0, i64 0
  %245 = load float, ptr %244, align 8, !tbaa !15
  %246 = load ptr, ptr %32, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.s_vvertice, ptr %246, i32 0, i32 13
  %248 = getelementptr inbounds [3 x float], ptr %247, i64 0, i64 1
  %249 = load float, ptr %248, align 4, !tbaa !15
  %250 = load ptr, ptr %32, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.s_vvertice, ptr %250, i32 0, i32 13
  %252 = getelementptr inbounds [3 x float], ptr %251, i64 0, i64 2
  %253 = load float, ptr %252, align 8, !tbaa !15
  %254 = call float @dist(float noundef %235, float noundef %238, float noundef %241, float noundef %245, float noundef %249, float noundef %253)
  store float %254, ptr %17, align 4, !tbaa !15
  %255 = load float, ptr %17, align 4, !tbaa !15
  %256 = load ptr, ptr %32, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.s_vvertice, ptr %256, i32 0, i32 5
  %258 = load float, ptr %257, align 4, !tbaa !18
  %259 = fdiv float %255, %258
  %260 = load float, ptr %22, align 4, !tbaa !15
  %261 = fadd float %260, %259
  store float %261, ptr %22, align 4, !tbaa !15
  br label %262

262:                                              ; preds = %227
  %263 = load i32, ptr %27, align 4, !tbaa !9
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %27, align 4, !tbaa !9
  br label %49, !llvm.loop !27

265:                                              ; preds = %49
  %266 = load i32, ptr %30, align 4, !tbaa !9
  %267 = icmp sgt i32 %266, 0
  br i1 %267, label %268, label %275

268:                                              ; preds = %265
  %269 = load i32, ptr %30, align 4, !tbaa !9
  %270 = sitofp i32 %269 to float
  %271 = load ptr, ptr %13, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.s_desc, ptr %271, i32 0, i32 8
  %273 = load float, ptr %272, align 4, !tbaa !16
  %274 = fdiv float %273, %270
  store float %274, ptr %272, align 4, !tbaa !16
  br label %278

275:                                              ; preds = %265
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.s_desc, ptr %276, i32 0, i32 8
  store float 0.000000e+00, ptr %277, align 4, !tbaa !16
  br label %278

278:                                              ; preds = %275, %268
  %279 = load i32, ptr %16, align 4, !tbaa !9
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %281, label %297

281:                                              ; preds = %278
  %282 = load ptr, ptr %13, align 8, !tbaa !5
  %283 = load ptr, ptr %15, align 8, !tbaa !5
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = load i32, ptr %12, align 4, !tbaa !9
  call void @set_ASA(ptr noundef %282, ptr noundef %283, ptr noundef %284, i32 noundef %285)
  %286 = load ptr, ptr %11, align 8, !tbaa !5
  %287 = load i32, ptr %12, align 4, !tbaa !9
  %288 = load i32, ptr %14, align 4, !tbaa !9
  %289 = call float @get_verts_volume_ptr(ptr noundef %286, i32 noundef %287, i32 noundef %288, float noundef 0xBFF99999A0000000)
  %290 = load ptr, ptr %13, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.s_desc, ptr %290, i32 0, i32 2
  store float %289, ptr %291, align 4, !tbaa !28
  %292 = load ptr, ptr %11, align 8, !tbaa !5
  %293 = load i32, ptr %12, align 4, !tbaa !9
  %294 = call float @get_convex_hull_volume(ptr noundef %292, i32 noundef %293)
  %295 = load ptr, ptr %13, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.s_desc, ptr %295, i32 0, i32 3
  store float %294, ptr %296, align 4, !tbaa !29
  br label %297

297:                                              ; preds = %281, %278
  %298 = load float, ptr %25, align 4, !tbaa !15
  %299 = load ptr, ptr %13, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.s_desc, ptr %299, i32 0, i32 10
  store float %298, ptr %300, align 4, !tbaa !30
  %301 = load i32, ptr %30, align 4, !tbaa !9
  %302 = sitofp i32 %301 to float
  %303 = load i32, ptr %12, align 4, !tbaa !9
  %304 = sitofp i32 %303 to float
  %305 = fdiv float %302, %304
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.s_desc, ptr %306, i32 0, i32 7
  store float %305, ptr %307, align 4, !tbaa !31
  %308 = load float, ptr %22, align 4, !tbaa !15
  %309 = load i32, ptr %12, align 4, !tbaa !9
  %310 = sitofp i32 %309 to float
  %311 = fdiv float %308, %310
  %312 = load ptr, ptr %13, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.s_desc, ptr %312, i32 0, i32 6
  store float %311, ptr %313, align 4, !tbaa !32
  %314 = load float, ptr %23, align 4, !tbaa !15
  %315 = load i32, ptr %12, align 4, !tbaa !9
  %316 = sitofp i32 %315 to float
  %317 = fdiv float %314, %316
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.s_desc, ptr %318, i32 0, i32 5
  store float %317, ptr %319, align 4, !tbaa !33
  %320 = load i32, ptr %12, align 4, !tbaa !9
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.s_desc, ptr %321, i32 0, i32 29
  store i32 %320, ptr %322, align 4, !tbaa !34
  %323 = load float, ptr %24, align 4, !tbaa !15
  %324 = fpext float %323 to double
  %325 = load i32, ptr %12, align 4, !tbaa !9
  %326 = load i32, ptr %12, align 4, !tbaa !9
  %327 = mul nsw i32 %325, %326
  %328 = load i32, ptr %12, align 4, !tbaa !9
  %329 = sub nsw i32 %327, %328
  %330 = sitofp i32 %329 to double
  %331 = fmul double %330, 5.000000e-01
  %332 = fdiv double %324, %331
  %333 = fptrunc double %332 to float
  %334 = load ptr, ptr %13, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.s_desc, ptr %334, i32 0, i32 9
  store float %333, ptr %335, align 4, !tbaa !35
  %336 = load float, ptr %31, align 4, !tbaa !15
  %337 = load ptr, ptr %13, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.s_desc, ptr %337, i32 0, i32 32
  store float %336, ptr %338, align 4, !tbaa !36
  %339 = load i32, ptr %12, align 4, !tbaa !9
  %340 = icmp eq i32 %339, 0
  br i1 %340, label %341, label %350

341:                                              ; preds = %297
  %342 = load ptr, ptr %13, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.s_desc, ptr %342, i32 0, i32 7
  store float 0.000000e+00, ptr %343, align 4, !tbaa !31
  %344 = load ptr, ptr %13, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.s_desc, ptr %344, i32 0, i32 6
  store float 0.000000e+00, ptr %345, align 4, !tbaa !32
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.s_desc, ptr %346, i32 0, i32 5
  store float 0.000000e+00, ptr %347, align 4, !tbaa !33
  %348 = load ptr, ptr %13, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.s_desc, ptr %348, i32 0, i32 9
  store float 0.000000e+00, ptr %349, align 4, !tbaa !35
  br label %350

350:                                              ; preds = %341, %297
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  br label %351

351:                                              ; preds = %350, %45
  ret void
}

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

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

declare void @set_ASA(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #2

declare float @get_verts_volume_ptr(ptr noundef, i32 noundef, i32 noundef, float noundef) #2

declare float @get_convex_hull_volume(ptr noundef, i32 noundef) #2

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 = { 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, !6, i64 16}
!12 = !{!"s_pdb", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !7, i64 116, !7, i64 199, !13, i64 700, !13, i64 704, !13, i64 708, !10, i64 712, !10, i64 716}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !10, i64 76}
!15 = !{!13, !13, i64 0}
!16 = !{!17, !13, i64 32}
!17 = !{!"s_desc", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !10, i64 108, !7, i64 112, !10, i64 192, !10, i64 196, !10, i64 200, !13, i64 204, !13, 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}
!18 = !{!19, !13, i64 20}
!19 = !{!"s_vvertice", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !10, i64 36, !10, i64 40, !7, i64 44, !7, i64 64, !7, i64 96, !13, i64 108}
!20 = !{!19, !13, i64 24}
!21 = !{!19, !13, i64 28}
!22 = !{!19, !13, i64 32}
!23 = !{!19, !10, i64 16}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = !{!17, !13, i64 8}
!29 = !{!17, !13, i64 12}
!30 = !{!17, !13, i64 40}
!31 = !{!17, !13, i64 28}
!32 = !{!17, !13, i64 24}
!33 = !{!17, !13, i64 20}
!34 = !{!17, !10, i64 192}
!35 = !{!17, !13, i64 36}
!36 = !{!17, !13, i64 204}


; 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 void @set_descriptors(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i32 noundef %5, ptr noundef %6, i32 noundef %7) local_unnamed_addr #0 {
  %9 = getelementptr inbounds i8, ptr %6, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %6, i64 76
  %12 = load i32, ptr %11, align 4, !tbaa !12
  tail call void @set_atom_based_descriptors(ptr noundef %0, i32 noundef %1, ptr noundef %4, ptr noundef %10, i32 noundef %12)
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %139, label %13

13:                                               ; preds = %8
  %14 = getelementptr inbounds i8, ptr %4, i64 32
  store float 0.000000e+00, ptr %14, align 4, !tbaa !13
  %15 = icmp sgt i32 %3, 0
  br i1 %15, label %.lr.ph170, label %._crit_edge171.thread

.lr.ph170:                                        ; preds = %13
  %16 = zext nneg i32 %3 to i64
  %wide.trip.count192 = zext nneg i32 %3 to i64
  br label %17

17:                                               ; preds = %.lr.ph170, %.loopexit
  %indvars.iv188 = phi i64 [ 0, %.lr.ph170 ], [ %indvars.iv.next189.pre-phi, %.loopexit ]
  %indvars.iv = phi i64 [ 1, %.lr.ph170 ], [ %indvars.iv.next, %.loopexit ]
  %.0168 = phi float [ -1.000000e+00, %.lr.ph170 ], [ %.1, %.loopexit ]
  %.0122167 = phi i32 [ 0, %.lr.ph170 ], [ %.1123, %.loopexit ]
  %.0129164 = phi float [ -1.000000e+00, %.lr.ph170 ], [ %.6, %.loopexit ]
  %.0131163 = phi float [ 0.000000e+00, %.lr.ph170 ], [ %.4135, %.loopexit ]
  %18 = phi <2 x float> [ zeroinitializer, %.lr.ph170 ], [ %105, %.loopexit ]
  %19 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv188
  %20 = load ptr, ptr %19, align 8, !tbaa !15
  %21 = getelementptr inbounds i8, ptr %20, i64 20
  %22 = load float, ptr %21, align 4, !tbaa !16
  %23 = fcmp ogt float %22, %.0168
  %.1 = select i1 %23, float %22, float %.0168
  %24 = getelementptr inbounds i8, ptr %20, i64 24
  %25 = load float, ptr %24, align 8, !tbaa !18
  %26 = getelementptr inbounds i8, ptr %20, i64 28
  %27 = load float, ptr %26, align 4, !tbaa !19
  %28 = getelementptr inbounds i8, ptr %20, i64 32
  %29 = load float, ptr %28, align 8, !tbaa !20
  %30 = getelementptr inbounds i8, ptr %20, i64 16
  %31 = load i32, ptr %30, align 8, !tbaa !21
  %32 = icmp eq i32 %31, 0
  br i1 %32, label %.lr.ph157, label %.preheader147

.preheader147:                                    ; preds = %17
  %33 = add nuw nsw i64 %indvars.iv188, 1
  %34 = icmp slt i64 %33, %16
  br i1 %34, label %.lr.ph, label %.loopexit

.lr.ph157:                                        ; preds = %17, %71
  %indvars.iv183 = phi i64 [ %indvars.iv.next184, %71 ], [ 0, %17 ]
  %.0124156 = phi i32 [ %.1125, %71 ], [ 0, %17 ]
  %.1130154 = phi float [ %.3, %71 ], [ %.0129164, %17 ]
  %.1132153 = phi float [ %.2133, %71 ], [ %.0131163, %17 ]
  %35 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv183
  %36 = load ptr, ptr %35, align 8, !tbaa !15
  %.not146 = icmp eq ptr %36, %20
  br i1 %.not146, label %56, label %37

37:                                               ; preds = %.lr.ph157
  %38 = getelementptr inbounds i8, ptr %36, i64 16
  %39 = load i32, ptr %38, align 8, !tbaa !21
  %40 = icmp eq i32 %39, 0
  br i1 %40, label %41, label %56

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %36, i64 24
  %43 = load float, ptr %42, align 8, !tbaa !18
  %44 = getelementptr inbounds i8, ptr %36, i64 28
  %45 = load float, ptr %44, align 4, !tbaa !19
  %46 = getelementptr inbounds i8, ptr %36, i64 32
  %47 = load float, ptr %46, align 8, !tbaa !20
  %48 = tail call float @dist(float noundef %25, float noundef %27, float noundef %29, float noundef %43, float noundef %45, float noundef %47) #2
  %49 = getelementptr inbounds i8, ptr %36, i64 20
  %50 = load float, ptr %49, align 4, !tbaa !16
  %51 = fadd float %22, %50
  %52 = fsub float %48, %51
  %53 = fcmp ugt float %52, 0.000000e+00
  br i1 %53, label %56, label %54

54:                                               ; preds = %41
  %55 = add nsw i32 %.0124156, 1
  br label %56

56:                                               ; preds = %54, %41, %37, %.lr.ph157
  %.1125 = phi i32 [ %55, %54 ], [ %.0124156, %41 ], [ %.0124156, %37 ], [ %.0124156, %.lr.ph157 ]
  %57 = icmp ugt i64 %indvars.iv183, %indvars.iv188
  br i1 %57, label %58, label %71

58:                                               ; preds = %56
  %59 = load float, ptr %24, align 8, !tbaa !18
  %60 = load float, ptr %26, align 4, !tbaa !19
  %61 = load float, ptr %28, align 8, !tbaa !20
  %62 = getelementptr inbounds i8, ptr %36, i64 24
  %63 = load float, ptr %62, align 8, !tbaa !18
  %64 = getelementptr inbounds i8, ptr %36, i64 28
  %65 = load float, ptr %64, align 4, !tbaa !19
  %66 = getelementptr inbounds i8, ptr %36, i64 32
  %67 = load float, ptr %66, align 8, !tbaa !20
  %68 = tail call float @dist(float noundef %59, float noundef %60, float noundef %61, float noundef %63, float noundef %65, float noundef %67) #2
  %69 = fcmp ogt float %68, %.1130154
  %.2 = select i1 %69, float %68, float %.1130154
  %70 = fadd float %.1132153, %68
  br label %71

71:                                               ; preds = %56, %58
  %.2133 = phi float [ %70, %58 ], [ %.1132153, %56 ]
  %.3 = phi float [ %.2, %58 ], [ %.1130154, %56 ]
  %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1
  %exitcond187.not = icmp eq i64 %indvars.iv.next184, %wide.trip.count192
  br i1 %exitcond187.not, label %._crit_edge, label %.lr.ph157, !llvm.loop !22

._crit_edge:                                      ; preds = %71
  %72 = sitofp i32 %.1125 to float
  %73 = load float, ptr %14, align 4, !tbaa !13
  %74 = fadd float %73, %72
  store float %74, ptr %14, align 4, !tbaa !13
  %75 = add nsw i32 %.0122167, 1
  %.pre = add nuw nsw i64 %indvars.iv188, 1
  br label %.loopexit

.lr.ph:                                           ; preds = %.preheader147, %.lr.ph
  %indvars.iv180 = phi i64 [ %indvars.iv.next181, %.lr.ph ], [ %indvars.iv, %.preheader147 ]
  %.4150 = phi float [ %.5, %.lr.ph ], [ %.0129164, %.preheader147 ]
  %.3134149 = phi float [ %89, %.lr.ph ], [ %.0131163, %.preheader147 ]
  %76 = load float, ptr %24, align 8, !tbaa !18
  %77 = load float, ptr %26, align 4, !tbaa !19
  %78 = load float, ptr %28, align 8, !tbaa !20
  %79 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv180
  %80 = load ptr, ptr %79, align 8, !tbaa !15
  %81 = getelementptr inbounds i8, ptr %80, i64 24
  %82 = load float, ptr %81, align 8, !tbaa !18
  %83 = getelementptr inbounds i8, ptr %80, i64 28
  %84 = load float, ptr %83, align 4, !tbaa !19
  %85 = getelementptr inbounds i8, ptr %80, i64 32
  %86 = load float, ptr %85, align 8, !tbaa !20
  %87 = tail call float @dist(float noundef %76, float noundef %77, float noundef %78, float noundef %82, float noundef %84, float noundef %86) #2
  %88 = fcmp ogt float %87, %.4150
  %.5 = select i1 %88, float %87, float %.4150
  %89 = fadd float %.3134149, %87
  %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next181, %wide.trip.count192
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !24

.loopexit:                                        ; preds = %.lr.ph, %.preheader147, %._crit_edge
  %indvars.iv.next189.pre-phi = phi i64 [ %33, %.preheader147 ], [ %.pre, %._crit_edge ], [ %33, %.lr.ph ]
  %.4135 = phi float [ %.0131163, %.preheader147 ], [ %.2133, %._crit_edge ], [ %89, %.lr.ph ]
  %.6 = phi float [ %.0129164, %.preheader147 ], [ %.3, %._crit_edge ], [ %.5, %.lr.ph ]
  %.1123 = phi i32 [ %.0122167, %.preheader147 ], [ %75, %._crit_edge ], [ %.0122167, %.lr.ph ]
  %90 = load float, ptr %21, align 4, !tbaa !16
  %91 = load float, ptr %24, align 8, !tbaa !18
  %92 = load float, ptr %26, align 4, !tbaa !19
  %93 = load float, ptr %28, align 8, !tbaa !20
  %94 = getelementptr inbounds i8, ptr %20, i64 96
  %95 = load float, ptr %94, align 8, !tbaa !25
  %96 = getelementptr inbounds i8, ptr %20, i64 100
  %97 = load float, ptr %96, align 4, !tbaa !25
  %98 = getelementptr inbounds i8, ptr %20, i64 104
  %99 = load float, ptr %98, align 8, !tbaa !25
  %100 = tail call float @dist(float noundef %91, float noundef %92, float noundef %93, float noundef %95, float noundef %97, float noundef %99) #2
  %101 = load float, ptr %21, align 4, !tbaa !16
  %102 = fdiv float %100, %101
  %103 = insertelement <2 x float> poison, float %90, i64 0
  %104 = insertelement <2 x float> %103, float %102, i64 1
  %105 = fadd <2 x float> %18, %104
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond193.not = icmp eq i64 %indvars.iv.next189.pre-phi, %wide.trip.count192
  br i1 %exitcond193.not, label %._crit_edge171, label %17, !llvm.loop !26

._crit_edge171:                                   ; preds = %.loopexit
  %106 = fpext float %.4135 to double
  %107 = icmp sgt i32 %.1123, 0
  br i1 %107, label %108, label %._crit_edge171.thread

108:                                              ; preds = %._crit_edge171
  %109 = uitofp nneg i32 %.1123 to float
  %110 = load float, ptr %14, align 4, !tbaa !13
  %111 = fdiv float %110, %109
  br label %._crit_edge171.thread

._crit_edge171.thread:                            ; preds = %13, %._crit_edge171, %108
  %.0.lcssa205 = phi float [ %.1, %108 ], [ %.1, %._crit_edge171 ], [ -1.000000e+00, %13 ]
  %.0122.lcssa204 = phi i32 [ %.1123, %108 ], [ %.1123, %._crit_edge171 ], [ 0, %13 ]
  %.0129.lcssa203 = phi float [ %.6, %108 ], [ %.6, %._crit_edge171 ], [ -1.000000e+00, %13 ]
  %.0131.lcssa202 = phi double [ %106, %108 ], [ %106, %._crit_edge171 ], [ 0.000000e+00, %13 ]
  %storemerge = phi float [ %111, %108 ], [ 0.000000e+00, %._crit_edge171 ], [ 0.000000e+00, %13 ]
  %112 = phi <2 x float> [ %105, %108 ], [ %105, %._crit_edge171 ], [ zeroinitializer, %13 ]
  store float %storemerge, ptr %14, align 4, !tbaa !13
  %.not145 = icmp eq i32 %7, 0
  br i1 %.not145, label %118, label %113

113:                                              ; preds = %._crit_edge171.thread
  tail call void @set_ASA(ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %2, i32 noundef %3) #2
  %114 = tail call float @get_verts_volume_ptr(ptr noundef nonnull %2, i32 noundef %3, i32 noundef %5, float noundef 0xBFF99999A0000000) #2
  %115 = getelementptr inbounds i8, ptr %4, i64 8
  store float %114, ptr %115, align 4, !tbaa !27
  %116 = tail call float @get_convex_hull_volume(ptr noundef nonnull %2, i32 noundef %3) #2
  %117 = getelementptr inbounds i8, ptr %4, i64 12
  store float %116, ptr %117, align 4, !tbaa !28
  br label %118

118:                                              ; preds = %113, %._crit_edge171.thread
  %119 = getelementptr inbounds i8, ptr %4, i64 40
  store float %.0129.lcssa203, ptr %119, align 4, !tbaa !29
  %120 = sitofp i32 %.0122.lcssa204 to float
  %121 = sitofp i32 %3 to float
  %122 = fdiv float %120, %121
  %123 = getelementptr inbounds i8, ptr %4, i64 28
  store float %122, ptr %123, align 4, !tbaa !30
  %124 = getelementptr inbounds i8, ptr %4, i64 20
  %125 = insertelement <2 x float> poison, float %121, i64 0
  %126 = shufflevector <2 x float> %125, <2 x float> poison, <2 x i32> zeroinitializer
  %127 = fdiv <2 x float> %112, %126
  store <2 x float> %127, ptr %124, align 4, !tbaa !25
  %128 = getelementptr inbounds i8, ptr %4, i64 192
  store i32 %3, ptr %128, align 4, !tbaa !31
  %129 = add i32 %3, -1
  %130 = mul i32 %129, %3
  %131 = sitofp i32 %130 to double
  %132 = fmul double %131, 5.000000e-01
  %133 = fdiv double %.0131.lcssa202, %132
  %134 = fptrunc double %133 to float
  %135 = getelementptr inbounds i8, ptr %4, i64 36
  store float %134, ptr %135, align 4, !tbaa !32
  %136 = getelementptr inbounds i8, ptr %4, i64 204
  store float %.0.lcssa205, ptr %136, align 4, !tbaa !33
  %137 = icmp eq i32 %3, 0
  br i1 %137, label %138, label %139

138:                                              ; preds = %118
  store float 0.000000e+00, ptr %123, align 4, !tbaa !30
  store <2 x float> zeroinitializer, ptr %124, align 4, !tbaa !25
  store float 0.000000e+00, ptr %135, align 4, !tbaa !32
  br label %139

139:                                              ; preds = %118, %138, %8
  ret void
}

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

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

declare void @set_ASA(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare float @get_verts_volume_ptr(ptr noundef, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #1

declare float @get_convex_hull_volume(ptr 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 = { "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 = { 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 16}
!6 = !{!"s_pdb", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !8, i64 116, !8, i64 199, !11, i64 700, !11, i64 704, !11, i64 708, !10, i64 712, !10, i64 716}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!6, !10, i64 76}
!13 = !{!14, !11, i64 32}
!14 = !{!"s_desc", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !10, i64 108, !8, i64 112, !10, i64 192, !10, i64 196, !10, i64 200, !11, i64 204, !11, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !8, i64 232, !8, i64 487, !8, i64 742}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !11, i64 20}
!17 = !{!"s_vvertice", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !10, i64 36, !10, i64 40, !8, i64 44, !8, i64 64, !8, i64 96, !11, i64 108}
!18 = !{!17, !11, i64 24}
!19 = !{!17, !11, i64 28}
!20 = !{!17, !11, i64 32}
!21 = !{!17, !10, i64 16}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = !{!11, !11, i64 0}
!26 = distinct !{!26, !23}
!27 = !{!14, !11, i64 8}
!28 = !{!14, !11, i64 12}
!29 = !{!14, !11, i64 40}
!30 = !{!14, !11, i64 28}
!31 = !{!14, !10, i64 192}
!32 = !{!14, !11, i64 36}
!33 = !{!14, !11, i64 204}


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