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

; 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.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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #1

; Function Attrs: nounwind uwtable
define dso_local float @set_pocket_volume(ptr noundef %0, i32 noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, 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 ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  store i32 0, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  store i32 0, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  %28 = load i32, ptr %4, align 4, !tbaa !9
  %29 = sitofp i32 %28 to float
  %30 = fpext float %29 to double
  %31 = fdiv double 1.000000e+00, %30
  %32 = fptrunc double %31 to float
  store float %32, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  store float 0.000000e+00, ptr %9, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  store float 0.000000e+00, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store float 0.000000e+00, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store float 0.000000e+00, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store float 0.000000e+00, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store float 0.000000e+00, ptr %14, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store float 0.000000e+00, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store float 0.000000e+00, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store float 0.000000e+00, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  store float 0.000000e+00, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store float 0.000000e+00, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store float 0.000000e+00, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store float 0.000000e+00, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store float 0.000000e+00, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store float 0.000000e+00, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %33 = load ptr, ptr %3, 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 %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  %36 = load ptr, ptr %25, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.c_lst_vertices, ptr %36, i32 0, i32 0
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  store ptr %38, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  store ptr null, ptr %27, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %167, %2
  %40 = load ptr, ptr %26, align 8, !tbaa !5
  %41 = icmp ne ptr %40, null
  br i1 %41, label %42, label %173

42:                                               ; preds = %39
  %43 = load ptr, ptr %26, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.node_vertice, ptr %43, i32 0, i32 2
  %45 = load ptr, ptr %44, align 8, !tbaa !18
  store ptr %45, ptr %27, align 8, !tbaa !5
  %46 = load i32, ptr %7, align 4, !tbaa !9
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %91

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

91:                                               ; preds = %42
  %92 = load float, ptr %15, align 4, !tbaa !11
  %93 = load ptr, ptr %27, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.s_vvertice, ptr %93, i32 0, i32 6
  %95 = load float, ptr %94, align 8, !tbaa !20
  %96 = load ptr, ptr %27, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.s_vvertice, ptr %96, i32 0, i32 5
  %98 = load float, ptr %97, align 4, !tbaa !22
  %99 = fsub float %95, %98
  store float %99, ptr %21, align 4, !tbaa !11
  %100 = fcmp ogt float %92, %99
  br i1 %100, label %101, label %103

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

103:                                              ; preds = %91
  %104 = load float, ptr %16, align 4, !tbaa !11
  %105 = load ptr, ptr %27, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.s_vvertice, ptr %105, i32 0, i32 6
  %107 = load float, ptr %106, align 8, !tbaa !20
  %108 = load ptr, ptr %27, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.s_vvertice, ptr %108, i32 0, i32 5
  %110 = load float, ptr %109, align 4, !tbaa !22
  %111 = fadd float %107, %110
  store float %111, ptr %21, align 4, !tbaa !11
  %112 = fcmp olt float %104, %111
  br i1 %112, label %113, label %115

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

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

116:                                              ; preds = %115, %101
  %117 = load float, ptr %17, align 4, !tbaa !11
  %118 = load ptr, ptr %27, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.s_vvertice, ptr %118, i32 0, i32 7
  %120 = load float, ptr %119, align 4, !tbaa !23
  %121 = load ptr, ptr %27, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.s_vvertice, ptr %121, i32 0, i32 5
  %123 = load float, ptr %122, align 4, !tbaa !22
  %124 = fsub float %120, %123
  store float %124, ptr %22, align 4, !tbaa !11
  %125 = fcmp ogt float %117, %124
  br i1 %125, label %126, label %128

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

128:                                              ; preds = %116
  %129 = load float, ptr %18, align 4, !tbaa !11
  %130 = load ptr, ptr %27, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.s_vvertice, ptr %130, i32 0, i32 7
  %132 = load float, ptr %131, align 4, !tbaa !23
  %133 = load ptr, ptr %27, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.s_vvertice, ptr %133, i32 0, i32 5
  %135 = load float, ptr %134, align 4, !tbaa !22
  %136 = fadd float %132, %135
  store float %136, ptr %22, align 4, !tbaa !11
  %137 = fcmp olt float %129, %136
  br i1 %137, label %138, label %140

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

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

141:                                              ; preds = %140, %126
  %142 = load float, ptr %19, align 4, !tbaa !11
  %143 = load ptr, ptr %27, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.s_vvertice, ptr %143, i32 0, i32 8
  %145 = load float, ptr %144, align 8, !tbaa !24
  %146 = load ptr, ptr %27, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.s_vvertice, ptr %146, i32 0, i32 5
  %148 = load float, ptr %147, align 4, !tbaa !22
  %149 = fsub float %145, %148
  store float %149, ptr %23, align 4, !tbaa !11
  %150 = fcmp ogt float %142, %149
  br i1 %150, label %151, label %153

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

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

163:                                              ; preds = %153
  %164 = load float, ptr %23, align 4, !tbaa !11
  store float %164, ptr %20, 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
  %168 = load ptr, ptr %26, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.node_vertice, ptr %168, i32 0, i32 0
  %170 = load ptr, ptr %169, align 8, !tbaa !25
  store ptr %170, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %7, align 4, !tbaa !9
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %7, align 4, !tbaa !9
  br label %39, !llvm.loop !26

173:                                              ; preds = %39
  %174 = load float, ptr %16, align 4, !tbaa !11
  %175 = load float, ptr %15, align 4, !tbaa !11
  %176 = fsub float %174, %175
  %177 = load float, ptr %18, align 4, !tbaa !11
  %178 = load float, ptr %17, align 4, !tbaa !11
  %179 = fsub float %177, %178
  %180 = fmul float %176, %179
  %181 = load float, ptr %20, align 4, !tbaa !11
  %182 = load float, ptr %19, align 4, !tbaa !11
  %183 = fsub float %181, %182
  %184 = fmul float %180, %183
  store float %184, ptr %24, align 4, !tbaa !11
  %185 = load float, ptr %8, align 4, !tbaa !11
  %186 = load float, ptr %16, align 4, !tbaa !11
  %187 = load float, ptr %15, align 4, !tbaa !11
  %188 = fsub float %186, %187
  %189 = fmul float %185, %188
  store float %189, ptr %12, align 4, !tbaa !11
  %190 = load float, ptr %8, align 4, !tbaa !11
  %191 = load float, ptr %18, align 4, !tbaa !11
  %192 = load float, ptr %17, align 4, !tbaa !11
  %193 = fsub float %191, %192
  %194 = fmul float %190, %193
  store float %194, ptr %13, align 4, !tbaa !11
  %195 = load float, ptr %8, align 4, !tbaa !11
  %196 = load float, ptr %20, align 4, !tbaa !11
  %197 = load float, ptr %19, align 4, !tbaa !11
  %198 = fsub float %196, %197
  %199 = fmul float %195, %198
  store float %199, ptr %14, align 4, !tbaa !11
  %200 = load float, ptr %15, align 4, !tbaa !11
  store float %200, ptr %9, align 4, !tbaa !11
  br label %201

201:                                              ; preds = %280, %173
  %202 = load float, ptr %9, align 4, !tbaa !11
  %203 = load float, ptr %16, align 4, !tbaa !11
  %204 = fcmp olt float %202, %203
  br i1 %204, label %205, label %284

205:                                              ; preds = %201
  %206 = load float, ptr %17, align 4, !tbaa !11
  store float %206, ptr %10, align 4, !tbaa !11
  br label %207

207:                                              ; preds = %275, %205
  %208 = load float, ptr %10, align 4, !tbaa !11
  %209 = load float, ptr %18, align 4, !tbaa !11
  %210 = fcmp olt float %208, %209
  br i1 %210, label %211, label %279

211:                                              ; preds = %207
  %212 = load float, ptr %19, align 4, !tbaa !11
  store float %212, ptr %11, align 4, !tbaa !11
  br label %213

213:                                              ; preds = %270, %211
  %214 = load float, ptr %11, align 4, !tbaa !11
  %215 = load float, ptr %20, align 4, !tbaa !11
  %216 = fcmp olt float %214, %215
  br i1 %216, label %217, label %274

217:                                              ; preds = %213
  %218 = load ptr, ptr %25, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.c_lst_vertices, ptr %218, i32 0, i32 0
  %220 = load ptr, ptr %219, align 8, !tbaa !15
  store ptr %220, ptr %26, align 8, !tbaa !5
  br label %221

221:                                              ; preds = %263, %217
  %222 = load ptr, ptr %26, align 8, !tbaa !5
  %223 = icmp ne ptr %222, null
  br i1 %223, label %224, label %267

224:                                              ; preds = %221
  %225 = load ptr, ptr %26, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.node_vertice, ptr %225, i32 0, i32 2
  %227 = load ptr, ptr %226, align 8, !tbaa !18
  store ptr %227, ptr %27, align 8, !tbaa !5
  %228 = load ptr, ptr %27, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.s_vvertice, ptr %228, i32 0, i32 6
  %230 = load float, ptr %229, align 8, !tbaa !20
  %231 = load float, ptr %9, align 4, !tbaa !11
  %232 = fsub float %230, %231
  store float %232, ptr %21, align 4, !tbaa !11
  %233 = load ptr, ptr %27, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.s_vvertice, ptr %233, i32 0, i32 7
  %235 = load float, ptr %234, align 4, !tbaa !23
  %236 = load float, ptr %10, align 4, !tbaa !11
  %237 = fsub float %235, %236
  store float %237, ptr %22, align 4, !tbaa !11
  %238 = load ptr, ptr %27, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.s_vvertice, ptr %238, i32 0, i32 8
  %240 = load float, ptr %239, align 8, !tbaa !24
  %241 = load float, ptr %11, align 4, !tbaa !11
  %242 = fsub float %240, %241
  store float %242, ptr %23, align 4, !tbaa !11
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.s_vvertice, ptr %243, i32 0, i32 5
  %245 = load float, ptr %244, align 4, !tbaa !22
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.s_vvertice, ptr %246, i32 0, i32 5
  %248 = load float, ptr %247, align 4, !tbaa !22
  %249 = fmul float %245, %248
  %250 = load float, ptr %21, align 4, !tbaa !11
  %251 = load float, ptr %21, align 4, !tbaa !11
  %252 = load float, ptr %22, align 4, !tbaa !11
  %253 = load float, ptr %22, align 4, !tbaa !11
  %254 = fmul float %252, %253
  %255 = call float @llvm.fmuladd.f32(float %250, float %251, float %254)
  %256 = load float, ptr %23, align 4, !tbaa !11
  %257 = load float, ptr %23, align 4, !tbaa !11
  %258 = call float @llvm.fmuladd.f32(float %256, float %257, float %255)
  %259 = fcmp ogt float %249, %258
  br i1 %259, label %260, label %263

260:                                              ; preds = %224
  %261 = load i32, ptr %6, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %6, align 4, !tbaa !9
  br label %267

263:                                              ; preds = %224
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.node_vertice, ptr %264, i32 0, i32 0
  %266 = load ptr, ptr %265, align 8, !tbaa !25
  store ptr %266, ptr %26, align 8, !tbaa !5
  br label %221, !llvm.loop !28

267:                                              ; preds = %260, %221
  %268 = load i32, ptr %5, align 4, !tbaa !9
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %5, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %267
  %271 = load float, ptr %14, align 4, !tbaa !11
  %272 = load float, ptr %11, align 4, !tbaa !11
  %273 = fadd float %272, %271
  store float %273, ptr %11, align 4, !tbaa !11
  br label %213, !llvm.loop !29

274:                                              ; preds = %213
  br label %275

275:                                              ; preds = %274
  %276 = load float, ptr %13, align 4, !tbaa !11
  %277 = load float, ptr %10, align 4, !tbaa !11
  %278 = fadd float %277, %276
  store float %278, ptr %10, align 4, !tbaa !11
  br label %207, !llvm.loop !30

279:                                              ; preds = %207
  br label %280

280:                                              ; preds = %279
  %281 = load float, ptr %12, align 4, !tbaa !11
  %282 = load float, ptr %9, align 4, !tbaa !11
  %283 = fadd float %282, %281
  store float %283, ptr %9, align 4, !tbaa !11
  br label %201, !llvm.loop !31

284:                                              ; preds = %201
  %285 = load i32, ptr %6, align 4, !tbaa !9
  %286 = sitofp i32 %285 to float
  %287 = load i32, ptr %5, align 4, !tbaa !9
  %288 = sitofp i32 %287 to float
  %289 = fdiv float %286, %288
  %290 = load float, ptr %24, align 4, !tbaa !11
  %291 = fmul float %289, %290
  %292 = load ptr, ptr %3, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.s_pocket, ptr %292, i32 0, i32 0
  %294 = load ptr, ptr %293, align 8, !tbaa !32
  %295 = getelementptr inbounds %struct.s_desc, ptr %294, i32 0, i32 2
  store float %291, ptr %295, align 4, !tbaa !33
  %296 = load ptr, ptr %3, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.s_pocket, ptr %296, i32 0, i32 0
  %298 = load ptr, ptr %297, align 8, !tbaa !32
  %299 = getelementptr inbounds %struct.s_desc, ptr %298, i32 0, i32 2
  %300 = load float, ptr %299, align 4, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  ret float %300
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #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, !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, !6, i64 0}
!16 = !{!"c_lst_vertices", !6, i64 0, !6, i64 8, !6, i64 16, !17, i64 24}
!17 = !{!"long", !7, i64 0}
!18 = !{!19, !6, i64 16}
!19 = !{!"node_vertice", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!21, !12, i64 24}
!21 = !{!"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}
!22 = !{!21, !12, i64 20}
!23 = !{!21, !12, i64 28}
!24 = !{!21, !12, i64 32}
!25 = !{!19, !6, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}
!32 = !{!14, !6, i64 0}
!33 = !{!34, !12, i64 8}
!34 = !{!"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}


; 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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #0

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local float @set_pocket_volume(ptr nocapture noundef readonly %0, i32 noundef %1) local_unnamed_addr #1 {
  %3 = sitofp i32 %1 to float
  %4 = fdiv float 1.000000e+00, %3
  %5 = getelementptr inbounds i8, ptr %0, i64 8
  %6 = load ptr, ptr %5, align 8, !tbaa !5
  %.0132 = load ptr, ptr %6, align 8, !tbaa !12
  %.not133 = icmp eq ptr %.0132, null
  br i1 %.not133, label %._crit_edge, label %7

7:                                                ; preds = %2
  %8 = getelementptr inbounds i8, ptr %.0132, i64 16
  %9 = load ptr, ptr %8, align 8, !tbaa !13
  %10 = getelementptr inbounds i8, ptr %9, i64 24
  %11 = load float, ptr %10, align 8, !tbaa !15
  %12 = getelementptr inbounds i8, ptr %9, i64 20
  %13 = load float, ptr %12, align 4, !tbaa !17
  %14 = fsub float %11, %13
  %15 = fadd float %11, %13
  %16 = getelementptr inbounds i8, ptr %9, i64 28
  %17 = load float, ptr %16, align 4, !tbaa !18
  %18 = fsub float %17, %13
  %19 = fadd float %13, %17
  %20 = getelementptr inbounds i8, ptr %9, i64 32
  %21 = load float, ptr %20, align 8, !tbaa !19
  %22 = fsub float %21, %13
  %23 = fadd float %13, %21
  %.0.peel = load ptr, ptr %.0132, align 8, !tbaa !12
  %.not.peel = icmp eq ptr %.0.peel, null
  br i1 %.not.peel, label %._crit_edge, label %.lr.ph.peel.next

.lr.ph.peel.next:                                 ; preds = %7, %54
  %.0141 = phi ptr [ %.0, %54 ], [ %.0.peel, %7 ]
  %.0100140 = phi float [ %.1101, %54 ], [ %23, %7 ]
  %.0102139 = phi float [ %.1103, %54 ], [ %22, %7 ]
  %.0104138 = phi float [ %.1105, %54 ], [ %19, %7 ]
  %.0107137 = phi float [ %.1108, %54 ], [ %18, %7 ]
  %.0110136 = phi float [ %.1111, %54 ], [ %15, %7 ]
  %.0113135 = phi float [ %.1114, %54 ], [ %14, %7 ]
  %24 = getelementptr inbounds i8, ptr %.0141, i64 16
  %25 = load ptr, ptr %24, align 8, !tbaa !13
  %26 = getelementptr inbounds i8, ptr %25, i64 24
  %27 = load float, ptr %26, align 8, !tbaa !15
  %28 = getelementptr inbounds i8, ptr %25, i64 20
  %29 = load float, ptr %28, align 4, !tbaa !17
  %30 = fsub float %27, %29
  %31 = fcmp ogt float %.0113135, %30
  br i1 %31, label %36, label %32

32:                                               ; preds = %.lr.ph.peel.next
  %33 = fadd float %27, %29
  %34 = fcmp olt float %.0110136, %33
  br i1 %34, label %35, label %36

35:                                               ; preds = %32
  br label %36

36:                                               ; preds = %.lr.ph.peel.next, %32, %35
  %.1114 = phi float [ %.0113135, %35 ], [ %.0113135, %32 ], [ %30, %.lr.ph.peel.next ]
  %.1111 = phi float [ %33, %35 ], [ %.0110136, %32 ], [ %.0110136, %.lr.ph.peel.next ]
  %37 = getelementptr inbounds i8, ptr %25, i64 28
  %38 = load float, ptr %37, align 4, !tbaa !18
  %39 = fsub float %38, %29
  %40 = fcmp ogt float %.0107137, %39
  br i1 %40, label %45, label %41

41:                                               ; preds = %36
  %42 = fadd float %29, %38
  %43 = fcmp olt float %.0104138, %42
  br i1 %43, label %44, label %45

44:                                               ; preds = %41
  br label %45

45:                                               ; preds = %36, %41, %44
  %.1108 = phi float [ %.0107137, %44 ], [ %.0107137, %41 ], [ %39, %36 ]
  %.1105 = phi float [ %42, %44 ], [ %.0104138, %41 ], [ %.0104138, %36 ]
  %46 = getelementptr inbounds i8, ptr %25, i64 32
  %47 = load float, ptr %46, align 8, !tbaa !19
  %48 = fsub float %47, %29
  %49 = fcmp ogt float %.0102139, %48
  br i1 %49, label %54, label %50

50:                                               ; preds = %45
  %51 = fadd float %29, %47
  %52 = fcmp olt float %.0100140, %51
  br i1 %52, label %53, label %54

53:                                               ; preds = %50
  br label %54

54:                                               ; preds = %45, %53, %50
  %.1103 = phi float [ %.0102139, %53 ], [ %.0102139, %50 ], [ %48, %45 ]
  %.1101 = phi float [ %51, %53 ], [ %.0100140, %50 ], [ %.0100140, %45 ]
  %.0 = load ptr, ptr %.0141, align 8, !tbaa !12
  %.not = icmp eq ptr %.0, null
  br i1 %.not, label %._crit_edge, label %.lr.ph.peel.next, !llvm.loop !20

._crit_edge:                                      ; preds = %54, %7, %2
  %.0113.lcssa = phi float [ 0.000000e+00, %2 ], [ %14, %7 ], [ %.1114, %54 ]
  %.0110.lcssa = phi float [ 0.000000e+00, %2 ], [ %15, %7 ], [ %.1111, %54 ]
  %.0107.lcssa = phi float [ 0.000000e+00, %2 ], [ %18, %7 ], [ %.1108, %54 ]
  %.0104.lcssa = phi float [ 0.000000e+00, %2 ], [ %19, %7 ], [ %.1105, %54 ]
  %.0102.lcssa = phi float [ 0.000000e+00, %2 ], [ %22, %7 ], [ %.1103, %54 ]
  %.0100.lcssa = phi float [ 0.000000e+00, %2 ], [ %23, %7 ], [ %.1101, %54 ]
  %55 = fsub float %.0110.lcssa, %.0113.lcssa
  %56 = fsub float %.0104.lcssa, %.0107.lcssa
  %57 = fsub float %.0100.lcssa, %.0102.lcssa
  %58 = fmul float %4, %55
  %59 = fmul float %4, %56
  %60 = fmul float %4, %57
  %61 = fcmp olt float %.0113.lcssa, %.0110.lcssa
  %62 = fcmp olt float %.0107.lcssa, %.0104.lcssa
  %or.cond = select i1 %61, i1 %62, i1 false
  %63 = fcmp olt float %.0102.lcssa, %.0100.lcssa
  %or.cond179 = select i1 %or.cond, i1 %63, i1 false
  br i1 %or.cond179, label %.preheader131.us.us, label %._crit_edge164

.preheader131.us.us:                              ; preds = %._crit_edge, %._crit_edge156.split.us.us.us
  %.098163.us.us = phi i32 [ %86, %._crit_edge156.split.us.us.us ], [ 0, %._crit_edge ]
  %.0118161.us.us = phi float [ %91, %._crit_edge156.split.us.us.us ], [ %.0113.lcssa, %._crit_edge ]
  %.0119160.us.us = phi i32 [ %.3.us.us.us, %._crit_edge156.split.us.us.us ], [ 0, %._crit_edge ]
  br label %.preheader130.us.us.us

.preheader130.us.us.us:                           ; preds = %._crit_edge150.us.us.us, %.preheader131.us.us
  %.199155.us.us.us = phi i32 [ %.098163.us.us, %.preheader131.us.us ], [ %86, %._crit_edge150.us.us.us ]
  %.0117154.us.us.us = phi float [ %.0107.lcssa, %.preheader131.us.us ], [ %89, %._crit_edge150.us.us.us ]
  %.1120153.us.us.us = phi i32 [ %.0119160.us.us, %.preheader131.us.us ], [ %.3.us.us.us, %._crit_edge150.us.us.us ]
  br label %.preheader.us.us.us

64:                                               ; preds = %.preheader.us.us.us, %65
  %.1.in.us.us.us = phi ptr [ %.1.us.us.us, %65 ], [ %6, %.preheader.us.us.us ]
  %.1.us.us.us = load ptr, ptr %.1.in.us.us.us, align 8, !tbaa !12
  %.not129.us.us.us = icmp eq ptr %.1.us.us.us, null
  br i1 %.not129.us.us.us, label %.loopexit.us.us.us, label %65

65:                                               ; preds = %64
  %66 = getelementptr inbounds i8, ptr %.1.us.us.us, i64 16
  %67 = load ptr, ptr %66, align 8, !tbaa !13
  %68 = getelementptr inbounds i8, ptr %67, i64 24
  %69 = load float, ptr %68, align 8, !tbaa !15
  %70 = fsub float %69, %.0118161.us.us
  %71 = getelementptr inbounds i8, ptr %67, i64 28
  %72 = load float, ptr %71, align 4, !tbaa !18
  %73 = fsub float %72, %.0117154.us.us.us
  %74 = getelementptr inbounds i8, ptr %67, i64 32
  %75 = load float, ptr %74, align 8, !tbaa !19
  %76 = fsub float %75, %.0116148.us.us.us
  %77 = getelementptr inbounds i8, ptr %67, i64 20
  %78 = load float, ptr %77, align 4, !tbaa !17
  %79 = fmul float %78, %78
  %80 = fmul float %73, %73
  %81 = tail call float @llvm.fmuladd.f32(float %70, float %70, float %80)
  %82 = tail call float @llvm.fmuladd.f32(float %76, float %76, float %81)
  %83 = fcmp ogt float %79, %82
  br i1 %83, label %84, label %64, !llvm.loop !23

84:                                               ; preds = %65
  %85 = add nsw i32 %.2121147.us.us.us, 1
  br label %.loopexit.us.us.us

.loopexit.us.us.us:                               ; preds = %64, %84
  %.3.us.us.us = phi i32 [ %85, %84 ], [ %.2121147.us.us.us, %64 ]
  %86 = add nsw i32 %.2149.us.us.us, 1
  %87 = fadd float %60, %.0116148.us.us.us
  %88 = fcmp olt float %87, %.0100.lcssa
  br i1 %88, label %.preheader.us.us.us, label %._crit_edge150.us.us.us, !llvm.loop !24

.preheader.us.us.us:                              ; preds = %.loopexit.us.us.us, %.preheader130.us.us.us
  %.2149.us.us.us = phi i32 [ %.199155.us.us.us, %.preheader130.us.us.us ], [ %86, %.loopexit.us.us.us ]
  %.0116148.us.us.us = phi float [ %.0102.lcssa, %.preheader130.us.us.us ], [ %87, %.loopexit.us.us.us ]
  %.2121147.us.us.us = phi i32 [ %.1120153.us.us.us, %.preheader130.us.us.us ], [ %.3.us.us.us, %.loopexit.us.us.us ]
  br label %64

._crit_edge150.us.us.us:                          ; preds = %.loopexit.us.us.us
  %89 = fadd float %59, %.0117154.us.us.us
  %90 = fcmp olt float %89, %.0104.lcssa
  br i1 %90, label %.preheader130.us.us.us, label %._crit_edge156.split.us.us.us, !llvm.loop !25

._crit_edge156.split.us.us.us:                    ; preds = %._crit_edge150.us.us.us
  %91 = fadd float %58, %.0118161.us.us
  %92 = fcmp olt float %91, %.0110.lcssa
  br i1 %92, label %.preheader131.us.us, label %._crit_edge164.loopexit, !llvm.loop !26

._crit_edge164.loopexit:                          ; preds = %._crit_edge156.split.us.us.us
  %93 = sitofp i32 %.3.us.us.us to float
  %94 = sitofp i32 %86 to float
  %95 = fdiv float %93, %94
  br label %._crit_edge164

._crit_edge164:                                   ; preds = %._crit_edge164.loopexit, %._crit_edge
  %96 = phi float [ 0x7FF8000000000000, %._crit_edge ], [ %95, %._crit_edge164.loopexit ]
  %97 = fmul float %55, %56
  %98 = fmul float %97, %57
  %99 = fmul float %98, %96
  %100 = load ptr, ptr %0, align 8, !tbaa !27
  %101 = getelementptr inbounds i8, ptr %100, i64 8
  store float %99, ptr %101, align 4, !tbaa !28
  ret float %99
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) 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" }

!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, !7, i64 16}
!14 = !{!"node_vertice", !7, i64 0, !7, i64 8, !7, i64 16}
!15 = !{!16, !10, i64 24}
!16 = !{!"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}
!17 = !{!16, !10, i64 20}
!18 = !{!16, !10, i64 28}
!19 = !{!16, !10, i64 32}
!20 = distinct !{!20, !21, !22}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!"llvm.loop.peeled.count", i32 1}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !21}
!25 = distinct !{!25, !21}
!26 = distinct !{!26, !21}
!27 = !{!6, !7, i64 0}
!28 = !{!29, !10, i64 8}
!29 = !{!"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}


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