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

; 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_fparams = type { [2000 x i8], [2000 x i8], [2000 x i8], [8000 x i8], ptr, ptr, ptr, i32, i32, ptr, ptr, ptr, i8, i8, i32, i32, i16, i32, i32, i32, i16, i32, i32, i32, i16, float, float, float, float, float, [20 x ptr], i16, i16, [20 x ptr], i32, [10 x i8] }
%struct.s_lst_vvertice = type { ptr, ptr, ptr, i32, ptr, 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.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 }

; 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 @testVvertice(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8, ptr noundef %9) #1 {
  %11 = alloca float, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca ptr, align 8
  %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 float, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i16, align 2
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca float, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store float %5, ptr %17, align 4, !tbaa !9
  store float %6, ptr %18, align 4, !tbaa !9
  store float %7, ptr %19, align 4, !tbaa !9
  store float %8, ptr %20, align 4, !tbaa !9
  store ptr %9, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %45 = load ptr, ptr %15, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.s_fparams, ptr %45, i32 0, i32 27
  %47 = load float, ptr %46, align 8, !tbaa !11
  store float %47, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %48 = load ptr, ptr %15, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.s_fparams, ptr %48, i32 0, i32 29
  %50 = load float, ptr %49, align 8, !tbaa !15
  store float %50, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  %51 = load ptr, ptr %12, align 8, !tbaa !5
  %52 = getelementptr inbounds float, ptr %51, i64 0
  %53 = load float, ptr %52, align 4, !tbaa !9
  %54 = load float, ptr %17, align 4, !tbaa !9
  %55 = fsub float %53, %54
  store float %55, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %56 = load ptr, ptr %12, align 8, !tbaa !5
  %57 = getelementptr inbounds float, ptr %56, i64 1
  %58 = load float, ptr %57, align 4, !tbaa !9
  %59 = load float, ptr %18, align 4, !tbaa !9
  %60 = fsub float %58, %59
  store float %60, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = getelementptr inbounds float, ptr %61, i64 2
  %63 = load float, ptr %62, align 4, !tbaa !9
  %64 = load float, ptr %19, align 4, !tbaa !9
  %65 = fsub float %63, %64
  store float %65, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store float 0.000000e+00, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store float 0.000000e+00, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  store float 0.000000e+00, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  store float 0.000000e+00, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  store float 0.000000e+00, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr %33) #5
  store i16 0, ptr %33, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  store i32 0, ptr %34, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  %66 = load ptr, ptr %15, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.s_fparams, ptr %66, i32 0, i32 8
  %68 = load i32, ptr %67, align 4, !tbaa !18
  %69 = icmp sgt i32 %68, 0
  br i1 %69, label %70, label %109

70:                                               ; preds = %10
  store i16 0, ptr %33, align 2, !tbaa !16
  br label %71

71:                                               ; preds = %98, %70
  %72 = load i16, ptr %33, align 2, !tbaa !16
  %73 = zext i16 %72 to i32
  %74 = icmp slt i32 %73, 4
  br i1 %74, label %75, label %101

75:                                               ; preds = %71
  %76 = load ptr, ptr %14, align 8, !tbaa !5
  %77 = load ptr, ptr %16, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.s_lst_vvertice, ptr %77, i32 0, i32 2
  %79 = load ptr, ptr %78, align 8, !tbaa !19
  %80 = load ptr, ptr %13, align 8, !tbaa !5
  %81 = load i16, ptr %33, align 2, !tbaa !16
  %82 = zext i16 %81 to i64
  %83 = getelementptr inbounds i32, ptr %80, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !17
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds i32, ptr %79, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !17
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds %struct.s_atm, ptr %76, i64 %88
  store ptr %89, ptr %32, align 8, !tbaa !5
  %90 = load ptr, ptr %32, align 8, !tbaa !5
  %91 = load ptr, ptr %15, align 8, !tbaa !5
  %92 = call float @atom_in_explicit_pocket(ptr noundef %90, ptr noundef %91)
  %93 = fcmp une float %92, 0.000000e+00
  br i1 %93, label %94, label %97

94:                                               ; preds = %75
  %95 = load i32, ptr %34, align 4, !tbaa !17
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr %34, align 4, !tbaa !17
  br label %97

97:                                               ; preds = %94, %75
  br label %98

98:                                               ; preds = %97
  %99 = load i16, ptr %33, align 2, !tbaa !16
  %100 = add i16 %99, 1
  store i16 %100, ptr %33, align 2, !tbaa !16
  br label %71, !llvm.loop !21

101:                                              ; preds = %71
  %102 = load i32, ptr %34, align 4, !tbaa !17
  %103 = load ptr, ptr %15, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.s_fparams, ptr %103, i32 0, i32 14
  %105 = load i32, ptr %104, align 4, !tbaa !23
  %106 = icmp slt i32 %102, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %101
  store float -3.000000e+00, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %484

108:                                              ; preds = %101
  br label %109

109:                                              ; preds = %108, %10
  %110 = load ptr, ptr %14, align 8, !tbaa !5
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.s_lst_vvertice, ptr %111, i32 0, i32 2
  %113 = load ptr, ptr %112, align 8, !tbaa !19
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = getelementptr inbounds i32, ptr %114, i64 0
  %116 = load i32, ptr %115, align 4, !tbaa !17
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds i32, ptr %113, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !17
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds %struct.s_atm, ptr %110, i64 %120
  store ptr %121, ptr %32, align 8, !tbaa !5
  %122 = load ptr, ptr %32, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.s_atm, ptr %122, i32 0, i32 5
  %124 = load float, ptr %123, align 4, !tbaa !24
  %125 = load float, ptr %27, align 4, !tbaa !9
  %126 = fadd float %125, %124
  store float %126, ptr %27, align 4, !tbaa !9
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.s_atm, ptr %127, i32 0, i32 6
  %129 = load float, ptr %128, align 8, !tbaa !26
  %130 = load float, ptr %28, align 4, !tbaa !9
  %131 = fadd float %130, %129
  store float %131, ptr %28, align 4, !tbaa !9
  %132 = load ptr, ptr %32, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.s_atm, ptr %132, i32 0, i32 7
  %134 = load float, ptr %133, align 4, !tbaa !27
  %135 = load float, ptr %29, align 4, !tbaa !9
  %136 = fadd float %135, %134
  store float %136, ptr %29, align 4, !tbaa !9
  %137 = load ptr, ptr %32, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.s_atm, ptr %137, i32 0, i32 24
  %139 = load float, ptr %138, align 8, !tbaa !28
  %140 = load float, ptr %30, align 4, !tbaa !9
  %141 = fadd float %140, %139
  store float %141, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  store float 0.000000e+00, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  store float 0.000000e+00, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #5
  store float 0.000000e+00, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #5
  %142 = load float, ptr %24, align 4, !tbaa !9
  %143 = load float, ptr %25, align 4, !tbaa !9
  %144 = load float, ptr %26, align 4, !tbaa !9
  %145 = load ptr, ptr %32, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.s_atm, ptr %145, i32 0, i32 5
  %147 = load float, ptr %146, align 4, !tbaa !24
  %148 = load ptr, ptr %32, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.s_atm, ptr %148, i32 0, i32 6
  %150 = load float, ptr %149, align 8, !tbaa !26
  %151 = load ptr, ptr %32, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.s_atm, ptr %151, i32 0, i32 7
  %153 = load float, ptr %152, align 4, !tbaa !27
  %154 = call float @dist(float noundef %142, float noundef %143, float noundef %144, float noundef %147, float noundef %150, float noundef %153)
  store float %154, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  store i32 0, ptr %44, align 4, !tbaa !17
  %155 = load float, ptr %22, align 4, !tbaa !9
  %156 = fpext float %155 to double
  %157 = load float, ptr %40, align 4, !tbaa !9
  %158 = fpext float %157 to double
  %159 = fadd double %158, 1.000000e-03
  %160 = fcmp ole double %156, %159
  br i1 %160, label %161, label %482

161:                                              ; preds = %109
  %162 = load float, ptr %40, align 4, !tbaa !9
  %163 = fpext float %162 to double
  %164 = fsub double %163, 1.000000e-03
  %165 = load float, ptr %23, align 4, !tbaa !9
  %166 = fpext float %165 to double
  %167 = fcmp ole double %164, %166
  br i1 %167, label %168, label %482

168:                                              ; preds = %161
  %169 = load ptr, ptr %14, align 8, !tbaa !5
  %170 = load ptr, ptr %16, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.s_lst_vvertice, ptr %170, i32 0, i32 2
  %172 = load ptr, ptr %171, align 8, !tbaa !19
  %173 = load ptr, ptr %13, align 8, !tbaa !5
  %174 = getelementptr inbounds i32, ptr %173, i64 1
  %175 = load i32, ptr %174, align 4, !tbaa !17
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %172, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !17
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds %struct.s_atm, ptr %169, i64 %179
  store ptr %180, ptr %32, align 8, !tbaa !5
  %181 = load float, ptr %24, align 4, !tbaa !9
  %182 = load float, ptr %25, align 4, !tbaa !9
  %183 = load float, ptr %26, align 4, !tbaa !9
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.s_atm, ptr %184, i32 0, i32 5
  %186 = load float, ptr %185, align 4, !tbaa !24
  %187 = load ptr, ptr %32, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.s_atm, ptr %187, i32 0, i32 6
  %189 = load float, ptr %188, align 8, !tbaa !26
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.s_atm, ptr %190, i32 0, i32 7
  %192 = load float, ptr %191, align 4, !tbaa !27
  %193 = call float @dist(float noundef %181, float noundef %182, float noundef %183, float noundef %186, float noundef %189, float noundef %192)
  store float %193, ptr %41, align 4, !tbaa !9
  %194 = load ptr, ptr %32, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.s_atm, ptr %194, i32 0, i32 5
  %196 = load float, ptr %195, align 4, !tbaa !24
  %197 = load float, ptr %27, align 4, !tbaa !9
  %198 = fadd float %197, %196
  store float %198, ptr %27, align 4, !tbaa !9
  %199 = load ptr, ptr %32, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.s_atm, ptr %199, i32 0, i32 6
  %201 = load float, ptr %200, align 8, !tbaa !26
  %202 = load float, ptr %28, align 4, !tbaa !9
  %203 = fadd float %202, %201
  store float %203, ptr %28, align 4, !tbaa !9
  %204 = load ptr, ptr %32, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.s_atm, ptr %204, i32 0, i32 7
  %206 = load float, ptr %205, align 4, !tbaa !27
  %207 = load float, ptr %29, align 4, !tbaa !9
  %208 = fadd float %207, %206
  store float %208, ptr %29, align 4, !tbaa !9
  %209 = load ptr, ptr %32, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.s_atm, ptr %209, i32 0, i32 24
  %211 = load float, ptr %210, align 8, !tbaa !28
  %212 = load float, ptr %30, align 4, !tbaa !9
  %213 = fadd float %212, %211
  store float %213, ptr %30, align 4, !tbaa !9
  %214 = load ptr, ptr %14, align 8, !tbaa !5
  %215 = load ptr, ptr %16, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.s_lst_vvertice, ptr %215, i32 0, i32 2
  %217 = load ptr, ptr %216, align 8, !tbaa !19
  %218 = load ptr, ptr %13, align 8, !tbaa !5
  %219 = getelementptr inbounds i32, ptr %218, i64 2
  %220 = load i32, ptr %219, align 4, !tbaa !17
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %217, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !17
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds %struct.s_atm, ptr %214, i64 %224
  store ptr %225, ptr %32, align 8, !tbaa !5
  %226 = load float, ptr %24, align 4, !tbaa !9
  %227 = load float, ptr %25, align 4, !tbaa !9
  %228 = load float, ptr %26, align 4, !tbaa !9
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.s_atm, ptr %229, i32 0, i32 5
  %231 = load float, ptr %230, align 4, !tbaa !24
  %232 = load ptr, ptr %32, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.s_atm, ptr %232, i32 0, i32 6
  %234 = load float, ptr %233, align 8, !tbaa !26
  %235 = load ptr, ptr %32, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.s_atm, ptr %235, i32 0, i32 7
  %237 = load float, ptr %236, align 4, !tbaa !27
  %238 = call float @dist(float noundef %226, float noundef %227, float noundef %228, float noundef %231, float noundef %234, float noundef %237)
  store float %238, ptr %42, align 4, !tbaa !9
  %239 = load ptr, ptr %32, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.s_atm, ptr %239, i32 0, i32 5
  %241 = load float, ptr %240, align 4, !tbaa !24
  %242 = load float, ptr %27, align 4, !tbaa !9
  %243 = fadd float %242, %241
  store float %243, ptr %27, align 4, !tbaa !9
  %244 = load ptr, ptr %32, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.s_atm, ptr %244, i32 0, i32 6
  %246 = load float, ptr %245, align 8, !tbaa !26
  %247 = load float, ptr %28, align 4, !tbaa !9
  %248 = fadd float %247, %246
  store float %248, ptr %28, align 4, !tbaa !9
  %249 = load ptr, ptr %32, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.s_atm, ptr %249, i32 0, i32 7
  %251 = load float, ptr %250, align 4, !tbaa !27
  %252 = load float, ptr %29, align 4, !tbaa !9
  %253 = fadd float %252, %251
  store float %253, ptr %29, align 4, !tbaa !9
  %254 = load ptr, ptr %32, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.s_atm, ptr %254, i32 0, i32 24
  %256 = load float, ptr %255, align 8, !tbaa !28
  %257 = load float, ptr %30, align 4, !tbaa !9
  %258 = fadd float %257, %256
  store float %258, ptr %30, align 4, !tbaa !9
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = load ptr, ptr %16, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.s_lst_vvertice, ptr %260, i32 0, i32 2
  %262 = load ptr, ptr %261, align 8, !tbaa !19
  %263 = load ptr, ptr %13, align 8, !tbaa !5
  %264 = getelementptr inbounds i32, ptr %263, i64 3
  %265 = load i32, ptr %264, align 4, !tbaa !17
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds i32, ptr %262, i64 %266
  %268 = load i32, ptr %267, align 4, !tbaa !17
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds %struct.s_atm, ptr %259, i64 %269
  store ptr %270, ptr %32, align 8, !tbaa !5
  %271 = load float, ptr %24, align 4, !tbaa !9
  %272 = load float, ptr %25, align 4, !tbaa !9
  %273 = load float, ptr %26, align 4, !tbaa !9
  %274 = load ptr, ptr %32, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.s_atm, ptr %274, i32 0, i32 5
  %276 = load float, ptr %275, align 4, !tbaa !24
  %277 = load ptr, ptr %32, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.s_atm, ptr %277, i32 0, i32 6
  %279 = load float, ptr %278, align 8, !tbaa !26
  %280 = load ptr, ptr %32, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.s_atm, ptr %280, i32 0, i32 7
  %282 = load float, ptr %281, align 4, !tbaa !27
  %283 = call float @dist(float noundef %271, float noundef %272, float noundef %273, float noundef %276, float noundef %279, float noundef %282)
  store float %283, ptr %43, align 4, !tbaa !9
  %284 = load ptr, ptr %32, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.s_atm, ptr %284, i32 0, i32 5
  %286 = load float, ptr %285, align 4, !tbaa !24
  %287 = load float, ptr %27, align 4, !tbaa !9
  %288 = fadd float %287, %286
  store float %288, ptr %27, align 4, !tbaa !9
  %289 = load ptr, ptr %32, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.s_atm, ptr %289, i32 0, i32 6
  %291 = load float, ptr %290, align 8, !tbaa !26
  %292 = load float, ptr %28, align 4, !tbaa !9
  %293 = fadd float %292, %291
  store float %293, ptr %28, align 4, !tbaa !9
  %294 = load ptr, ptr %32, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.s_atm, ptr %294, i32 0, i32 7
  %296 = load float, ptr %295, align 4, !tbaa !27
  %297 = load float, ptr %29, align 4, !tbaa !9
  %298 = fadd float %297, %296
  store float %298, ptr %29, align 4, !tbaa !9
  %299 = load ptr, ptr %32, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.s_atm, ptr %299, i32 0, i32 24
  %301 = load float, ptr %300, align 8, !tbaa !28
  %302 = load float, ptr %30, align 4, !tbaa !9
  %303 = fadd float %302, %301
  store float %303, ptr %30, align 4, !tbaa !9
  %304 = load float, ptr %27, align 4, !tbaa !9
  %305 = fpext float %304 to double
  %306 = fmul double %305, 2.500000e-01
  %307 = fptrunc double %306 to float
  store float %307, ptr %27, align 4, !tbaa !9
  %308 = load float, ptr %28, align 4, !tbaa !9
  %309 = fpext float %308 to double
  %310 = fmul double %309, 2.500000e-01
  %311 = fptrunc double %310 to float
  store float %311, ptr %28, align 4, !tbaa !9
  %312 = load float, ptr %29, align 4, !tbaa !9
  %313 = fpext float %312 to double
  %314 = fmul double %313, 2.500000e-01
  %315 = fptrunc double %314 to float
  store float %315, ptr %29, align 4, !tbaa !9
  %316 = load float, ptr %30, align 4, !tbaa !9
  %317 = fpext float %316 to double
  %318 = fmul double %317, 2.500000e-01
  %319 = fptrunc double %318 to float
  store float %319, ptr %30, align 4, !tbaa !9
  %320 = load float, ptr %40, align 4, !tbaa !9
  %321 = load float, ptr %41, align 4, !tbaa !9
  %322 = fsub float %320, %321
  %323 = fpext float %322 to double
  %324 = call double @llvm.fabs.f64(double %323)
  %325 = fcmp olt double %324, 1.000000e-03
  br i1 %325, label %326, label %481

326:                                              ; preds = %168
  %327 = load float, ptr %40, align 4, !tbaa !9
  %328 = load float, ptr %42, align 4, !tbaa !9
  %329 = fsub float %327, %328
  %330 = fpext float %329 to double
  %331 = call double @llvm.fabs.f64(double %330)
  %332 = fcmp olt double %331, 1.000000e-03
  br i1 %332, label %333, label %481

333:                                              ; preds = %326
  %334 = load float, ptr %40, align 4, !tbaa !9
  %335 = load float, ptr %43, align 4, !tbaa !9
  %336 = fsub float %334, %335
  %337 = fpext float %336 to double
  %338 = call double @llvm.fabs.f64(double %337)
  %339 = fcmp olt double %338, 1.000000e-03
  br i1 %339, label %340, label %481

340:                                              ; preds = %333
  %341 = load ptr, ptr %21, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.s_pdb, ptr %341, i32 0, i32 9
  %343 = load i32, ptr %342, align 8, !tbaa !29
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %390

345:                                              ; preds = %340
  store i32 0, ptr %44, align 4, !tbaa !17
  br label %346

346:                                              ; preds = %386, %345
  %347 = load i32, ptr %44, align 4, !tbaa !17
  %348 = load ptr, ptr %21, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.s_pdb, ptr %348, i32 0, i32 9
  %350 = load i32, ptr %349, align 8, !tbaa !29
  %351 = icmp slt i32 %347, %350
  br i1 %351, label %352, label %389

352:                                              ; preds = %346
  %353 = load ptr, ptr %21, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.s_pdb, ptr %353, i32 0, i32 6
  %355 = load ptr, ptr %354, align 8, !tbaa !31
  %356 = load i32, ptr %44, align 4, !tbaa !17
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds float, ptr %355, i64 %357
  %359 = load float, ptr %358, align 4, !tbaa !9
  store float %359, ptr %37, align 4, !tbaa !9
  %360 = load ptr, ptr %21, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.s_pdb, ptr %360, i32 0, i32 7
  %362 = load ptr, ptr %361, align 8, !tbaa !32
  %363 = load i32, ptr %44, align 4, !tbaa !17
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds float, ptr %362, i64 %364
  %366 = load float, ptr %365, align 4, !tbaa !9
  store float %366, ptr %38, align 4, !tbaa !9
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.s_pdb, ptr %367, i32 0, i32 8
  %369 = load ptr, ptr %368, align 8, !tbaa !33
  %370 = load i32, ptr %44, align 4, !tbaa !17
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds float, ptr %369, i64 %371
  %373 = load float, ptr %372, align 4, !tbaa !9
  store float %373, ptr %39, align 4, !tbaa !9
  %374 = load float, ptr %37, align 4, !tbaa !9
  %375 = load float, ptr %38, align 4, !tbaa !9
  %376 = load float, ptr %39, align 4, !tbaa !9
  %377 = load float, ptr %24, align 4, !tbaa !9
  %378 = load float, ptr %25, align 4, !tbaa !9
  %379 = load float, ptr %26, align 4, !tbaa !9
  %380 = call float @dist(float noundef %374, float noundef %375, float noundef %376, float noundef %377, float noundef %378, float noundef %379)
  %381 = load float, ptr %40, align 4, !tbaa !9
  %382 = fcmp ole float %380, %381
  br i1 %382, label %383, label %385

383:                                              ; preds = %352
  %384 = load float, ptr %40, align 4, !tbaa !9
  store float %384, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

385:                                              ; preds = %352
  br label %386

386:                                              ; preds = %385
  %387 = load i32, ptr %44, align 4, !tbaa !17
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %44, align 4, !tbaa !17
  br label %346, !llvm.loop !34

389:                                              ; preds = %346
  store float -1.000000e+00, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

390:                                              ; preds = %340
  store i32 0, ptr %35, align 4, !tbaa !17
  br label %391

391:                                              ; preds = %421, %390
  %392 = load i32, ptr %35, align 4, !tbaa !17
  %393 = icmp slt i32 %392, 4
  br i1 %393, label %394, label %424

394:                                              ; preds = %391
  %395 = load ptr, ptr %14, align 8, !tbaa !5
  %396 = load ptr, ptr %16, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.s_lst_vvertice, ptr %396, i32 0, i32 2
  %398 = load ptr, ptr %397, align 8, !tbaa !19
  %399 = load ptr, ptr %13, align 8, !tbaa !5
  %400 = load i32, ptr %35, align 4, !tbaa !17
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %399, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !17
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %398, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !17
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.s_atm, ptr %395, i64 %407
  store ptr %408, ptr %32, align 8, !tbaa !5
  %409 = load ptr, ptr %32, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.s_atm, ptr %409, i32 0, i32 24
  %411 = load float, ptr %410, align 8, !tbaa !28
  %412 = load float, ptr %30, align 4, !tbaa !9
  %413 = fsub float %411, %412
  %414 = load ptr, ptr %32, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.s_atm, ptr %414, i32 0, i32 24
  %416 = load float, ptr %415, align 8, !tbaa !28
  %417 = load float, ptr %30, align 4, !tbaa !9
  %418 = fsub float %416, %417
  %419 = load float, ptr %31, align 4, !tbaa !9
  %420 = call float @llvm.fmuladd.f32(float %413, float %418, float %419)
  store float %420, ptr %31, align 4, !tbaa !9
  br label %421

421:                                              ; preds = %394
  %422 = load i32, ptr %35, align 4, !tbaa !17
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr %35, align 4, !tbaa !17
  br label %391, !llvm.loop !35

424:                                              ; preds = %391
  %425 = load float, ptr %31, align 4, !tbaa !9
  %426 = fdiv float %425, 3.000000e+00
  %427 = fpext float %426 to double
  %428 = call double @sqrt(double noundef %427) #5
  %429 = fptrunc double %428 to float
  store float %429, ptr %31, align 4, !tbaa !9
  %430 = load float, ptr %31, align 4, !tbaa !9
  %431 = load float, ptr %20, align 4, !tbaa !9
  %432 = fcmp ogt float %430, %431
  br i1 %432, label %444, label %433

433:                                              ; preds = %424
  %434 = load float, ptr %31, align 4, !tbaa !9
  %435 = load ptr, ptr %21, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.s_pdb, ptr %435, i32 0, i32 24
  %437 = load float, ptr %436, align 4, !tbaa !36
  %438 = load ptr, ptr %21, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.s_pdb, ptr %438, i32 0, i32 23
  %440 = load float, ptr %439, align 8, !tbaa !37
  %441 = fsub float %437, %440
  %442 = fdiv float %441, 4.000000e+00
  %443 = fcmp ogt float %434, %442
  br i1 %443, label %444, label %455

444:                                              ; preds = %433, %424
  %445 = load float, ptr %20, align 4, !tbaa !9
  %446 = fpext float %445 to double
  %447 = fcmp ogt double %446, 0.000000e+00
  br i1 %447, label %448, label %455

448:                                              ; preds = %444
  %449 = load float, ptr %30, align 4, !tbaa !9
  %450 = load float, ptr %20, align 4, !tbaa !9
  %451 = fdiv float %449, %450
  %452 = fpext float %451 to double
  %453 = fcmp ogt double %452, 1.400000e+00
  br i1 %453, label %454, label %455

454:                                              ; preds = %448
  store float -1.000000e+00, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

455:                                              ; preds = %448, %444, %433
  %456 = load float, ptr %27, align 4, !tbaa !9
  %457 = load float, ptr %28, align 4, !tbaa !9
  %458 = load float, ptr %29, align 4, !tbaa !9
  %459 = load ptr, ptr %12, align 8, !tbaa !5
  %460 = getelementptr inbounds float, ptr %459, i64 0
  %461 = load float, ptr %460, align 4, !tbaa !9
  %462 = load ptr, ptr %12, align 8, !tbaa !5
  %463 = getelementptr inbounds float, ptr %462, i64 1
  %464 = load float, ptr %463, align 4, !tbaa !9
  %465 = load ptr, ptr %12, align 8, !tbaa !5
  %466 = getelementptr inbounds float, ptr %465, i64 2
  %467 = load float, ptr %466, align 4, !tbaa !9
  %468 = call float @dist(float noundef %456, float noundef %457, float noundef %458, float noundef %461, float noundef %464, float noundef %467)
  %469 = fpext float %468 to double
  %470 = fcmp ogt double %469, 1.000000e+00
  br i1 %470, label %471, label %479

471:                                              ; preds = %455
  %472 = load float, ptr %40, align 4, !tbaa !9
  %473 = fpext float %472 to double
  %474 = load float, ptr %23, align 4, !tbaa !9
  %475 = fpext float %474 to double
  %476 = fsub double %475, 1.500000e+00
  %477 = fcmp ogt double %473, %476
  br i1 %477, label %478, label %479

478:                                              ; preds = %471
  store float -2.000000e+00, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

479:                                              ; preds = %471, %455
  %480 = load float, ptr %40, align 4, !tbaa !9
  store float %480, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

481:                                              ; preds = %333, %326, %168
  br label %482

482:                                              ; preds = %481, %161, %109
  store float -3.000000e+00, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %483

483:                                              ; preds = %482, %479, %478, %454, %389, %383
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %484

484:                                              ; preds = %483, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  %485 = load float, ptr %11, align 4
  ret float %485
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local float @atom_in_explicit_pocket(ptr noundef, ptr noundef) #1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 14112}
!12 = !{!"s_fparams", !7, i64 0, !7, i64 2000, !7, i64 4000, !7, i64 6000, !6, i64 14000, !6, i64 14008, !6, i64 14016, !13, i64 14024, !13, i64 14028, !6, i64 14032, !6, i64 14040, !6, i64 14048, !7, i64 14056, !7, i64 14057, !13, i64 14060, !13, i64 14064, !14, i64 14068, !13, i64 14072, !13, i64 14076, !13, i64 14080, !14, i64 14084, !13, i64 14088, !13, i64 14092, !13, i64 14096, !14, i64 14100, !10, i64 14104, !10, i64 14108, !10, i64 14112, !10, i64 14116, !10, i64 14120, !7, i64 14128, !14, i64 14288, !14, i64 14290, !7, i64 14296, !13, i64 14456, !7, i64 14460}
!13 = !{!"int", !7, i64 0}
!14 = !{!"short", !7, i64 0}
!15 = !{!12, !10, i64 14120}
!16 = !{!14, !14, i64 0}
!17 = !{!13, !13, i64 0}
!18 = !{!12, !13, i64 14028}
!19 = !{!20, !6, i64 16}
!20 = !{!"s_lst_vvertice", !6, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !6, i64 32, !13, i64 40, !13, i64 44}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!12, !13, i64 14060}
!24 = !{!25, !10, i64 20}
!25 = !{!"s_atm", !13, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !7, i64 32, !7, i64 37, !7, i64 44, !7, i64 60, !7, i64 76, !7, i64 79, !13, i64 88, !13, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !7, i64 144, !7, i64 145, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !14, i64 164, !6, i64 168, !13, i64 176}
!26 = !{!25, !10, i64 24}
!27 = !{!25, !10, i64 28}
!28 = !{!25, !10, i64 128}
!29 = !{!30, !13, i64 72}
!30 = !{!"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, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !7, i64 116, !7, i64 199, !10, i64 700, !10, i64 704, !10, i64 708, !13, i64 712, !13, i64 716}
!31 = !{!30, !6, i64 48}
!32 = !{!30, !6, i64 56}
!33 = !{!30, !6, i64 64}
!34 = distinct !{!34, !22}
!35 = distinct !{!35, !22}
!36 = !{!30, !10, i64 708}
!37 = !{!30, !10, i64 704}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.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 }

; Function Attrs: nounwind uwtable
define dso_local float @testVvertice(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8, ptr nocapture noundef readonly %9) local_unnamed_addr #0 {
  %11 = getelementptr inbounds i8, ptr %3, i64 14112
  %12 = load float, ptr %11, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %3, i64 14120
  %14 = load float, ptr %13, align 8, !tbaa !13
  %15 = load float, ptr %0, align 4, !tbaa !14
  %16 = fsub float %15, %5
  %17 = getelementptr inbounds i8, ptr %0, i64 4
  %18 = load float, ptr %17, align 4, !tbaa !14
  %19 = fsub float %18, %6
  %20 = getelementptr inbounds i8, ptr %0, i64 8
  %21 = load float, ptr %20, align 4, !tbaa !14
  %22 = fsub float %21, %7
  %23 = getelementptr inbounds i8, ptr %3, i64 14028
  %24 = load i32, ptr %23, align 4, !tbaa !15
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.preheader162, label %73

.preheader162:                                    ; preds = %10
  %26 = getelementptr inbounds i8, ptr %4, i64 16
  %27 = load ptr, ptr %26, align 8, !tbaa !16
  %28 = load i32, ptr %1, align 4, !tbaa !18
  %29 = sext i32 %28 to i64
  %30 = getelementptr inbounds i32, ptr %27, i64 %29
  %31 = load i32, ptr %30, align 4, !tbaa !18
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %32
  %34 = tail call float @atom_in_explicit_pocket(ptr noundef %33, ptr noundef nonnull %3)
  %35 = load ptr, ptr %26, align 8, !tbaa !16
  %36 = getelementptr inbounds i8, ptr %1, i64 4
  %37 = load i32, ptr %36, align 4, !tbaa !18
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds i32, ptr %35, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !18
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %41
  %43 = tail call float @atom_in_explicit_pocket(ptr noundef %42, ptr noundef nonnull %3)
  %44 = load ptr, ptr %26, align 8, !tbaa !16
  %45 = getelementptr inbounds i8, ptr %1, i64 8
  %46 = load i32, ptr %45, align 4, !tbaa !18
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds i32, ptr %44, i64 %47
  %49 = load i32, ptr %48, align 4, !tbaa !18
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %50
  %52 = tail call float @atom_in_explicit_pocket(ptr noundef %51, ptr noundef nonnull %3)
  %53 = load ptr, ptr %26, align 8, !tbaa !16
  %54 = getelementptr inbounds i8, ptr %1, i64 12
  %55 = load i32, ptr %54, align 4, !tbaa !18
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds i32, ptr %53, i64 %56
  %58 = load i32, ptr %57, align 4, !tbaa !18
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %59
  %61 = tail call float @atom_in_explicit_pocket(ptr noundef %60, ptr noundef nonnull %3)
  %62 = insertelement <4 x float> poison, float %34, i64 0
  %63 = insertelement <4 x float> %62, float %43, i64 1
  %64 = insertelement <4 x float> %63, float %52, i64 2
  %65 = insertelement <4 x float> %64, float %61, i64 3
  %66 = fcmp une <4 x float> %65, zeroinitializer
  %67 = bitcast <4 x i1> %66 to i4
  %68 = tail call range(i4 0, 5) i4 @llvm.ctpop.i4(i4 %67)
  %69 = zext nneg i4 %68 to i32
  %70 = getelementptr inbounds i8, ptr %3, i64 14060
  %71 = load i32, ptr %70, align 4, !tbaa !19
  %72 = icmp sgt i32 %71, %69
  br i1 %72, label %.loopexit, label %73

73:                                               ; preds = %.preheader162, %10
  %74 = getelementptr inbounds i8, ptr %4, i64 16
  %75 = load ptr, ptr %74, align 8, !tbaa !16
  %76 = load i32, ptr %1, align 4, !tbaa !18
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds i32, ptr %75, i64 %77
  %79 = load i32, ptr %78, align 4, !tbaa !18
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %80
  %82 = getelementptr inbounds i8, ptr %81, i64 20
  %83 = load float, ptr %82, align 4, !tbaa !20
  %84 = fadd float %83, 0.000000e+00
  %85 = getelementptr inbounds i8, ptr %81, i64 24
  %86 = load float, ptr %85, align 8, !tbaa !22
  %87 = fadd float %86, 0.000000e+00
  %88 = getelementptr inbounds i8, ptr %81, i64 28
  %89 = load float, ptr %88, align 4, !tbaa !23
  %90 = fadd float %89, 0.000000e+00
  %91 = getelementptr inbounds i8, ptr %81, i64 128
  %92 = load float, ptr %91, align 8, !tbaa !24
  %93 = fadd float %92, 0.000000e+00
  %94 = tail call float @dist(float noundef %16, float noundef %19, float noundef %22, float noundef %83, float noundef %86, float noundef %89) #4
  %95 = fpext float %12 to double
  %96 = fpext float %94 to double
  %97 = fadd double %96, 1.000000e-03
  %98 = fcmp ult double %97, %95
  br i1 %98, label %.loopexit, label %99

99:                                               ; preds = %73
  %100 = fadd double %96, -1.000000e-03
  %101 = fpext float %14 to double
  %102 = fcmp ugt double %100, %101
  br i1 %102, label %.loopexit, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %74, align 8, !tbaa !16
  %105 = getelementptr inbounds i8, ptr %1, i64 4
  %106 = load i32, ptr %105, align 4, !tbaa !18
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds i32, ptr %104, i64 %107
  %109 = load i32, ptr %108, align 4, !tbaa !18
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %110
  %112 = getelementptr inbounds i8, ptr %111, i64 20
  %113 = load float, ptr %112, align 4, !tbaa !20
  %114 = getelementptr inbounds i8, ptr %111, i64 24
  %115 = load float, ptr %114, align 8, !tbaa !22
  %116 = getelementptr inbounds i8, ptr %111, i64 28
  %117 = load float, ptr %116, align 4, !tbaa !23
  %118 = tail call float @dist(float noundef %16, float noundef %19, float noundef %22, float noundef %113, float noundef %115, float noundef %117) #4
  %119 = load float, ptr %112, align 4, !tbaa !20
  %120 = fadd float %84, %119
  %121 = load float, ptr %114, align 8, !tbaa !22
  %122 = fadd float %87, %121
  %123 = load float, ptr %116, align 4, !tbaa !23
  %124 = fadd float %90, %123
  %125 = getelementptr inbounds i8, ptr %111, i64 128
  %126 = load float, ptr %125, align 8, !tbaa !24
  %127 = fadd float %93, %126
  %128 = load ptr, ptr %74, align 8, !tbaa !16
  %129 = getelementptr inbounds i8, ptr %1, i64 8
  %130 = load i32, ptr %129, align 4, !tbaa !18
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i32, ptr %128, i64 %131
  %133 = load i32, ptr %132, align 4, !tbaa !18
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %134
  %136 = getelementptr inbounds i8, ptr %135, i64 20
  %137 = load float, ptr %136, align 4, !tbaa !20
  %138 = getelementptr inbounds i8, ptr %135, i64 24
  %139 = load float, ptr %138, align 8, !tbaa !22
  %140 = getelementptr inbounds i8, ptr %135, i64 28
  %141 = load float, ptr %140, align 4, !tbaa !23
  %142 = tail call float @dist(float noundef %16, float noundef %19, float noundef %22, float noundef %137, float noundef %139, float noundef %141) #4
  %143 = load float, ptr %136, align 4, !tbaa !20
  %144 = fadd float %120, %143
  %145 = load float, ptr %138, align 8, !tbaa !22
  %146 = fadd float %122, %145
  %147 = load float, ptr %140, align 4, !tbaa !23
  %148 = fadd float %124, %147
  %149 = getelementptr inbounds i8, ptr %135, i64 128
  %150 = load float, ptr %149, align 8, !tbaa !24
  %151 = fadd float %127, %150
  %152 = load ptr, ptr %74, align 8, !tbaa !16
  %153 = getelementptr inbounds i8, ptr %1, i64 12
  %154 = load i32, ptr %153, align 4, !tbaa !18
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds i32, ptr %152, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !18
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %158
  %160 = getelementptr inbounds i8, ptr %159, i64 20
  %161 = load float, ptr %160, align 4, !tbaa !20
  %162 = getelementptr inbounds i8, ptr %159, i64 24
  %163 = load float, ptr %162, align 8, !tbaa !22
  %164 = getelementptr inbounds i8, ptr %159, i64 28
  %165 = load float, ptr %164, align 4, !tbaa !23
  %166 = tail call float @dist(float noundef %16, float noundef %19, float noundef %22, float noundef %161, float noundef %163, float noundef %165) #4
  %167 = load float, ptr %160, align 4, !tbaa !20
  %168 = fadd float %144, %167
  %169 = load float, ptr %162, align 8, !tbaa !22
  %170 = fadd float %146, %169
  %171 = load float, ptr %164, align 4, !tbaa !23
  %172 = fadd float %148, %171
  %173 = getelementptr inbounds i8, ptr %159, i64 128
  %174 = load float, ptr %173, align 8, !tbaa !24
  %175 = fadd float %151, %174
  %176 = fmul float %168, 2.500000e-01
  %177 = fmul float %170, 2.500000e-01
  %178 = fmul float %172, 2.500000e-01
  %179 = fmul float %175, 2.500000e-01
  %180 = fsub float %94, %118
  %181 = tail call float @llvm.fabs.f32(float %180)
  %182 = fpext float %181 to double
  %183 = fcmp olt double %182, 1.000000e-03
  br i1 %183, label %184, label %.loopexit

184:                                              ; preds = %103
  %185 = fsub float %94, %142
  %186 = tail call float @llvm.fabs.f32(float %185)
  %187 = fpext float %186 to double
  %188 = fcmp olt double %187, 1.000000e-03
  br i1 %188, label %189, label %.loopexit

189:                                              ; preds = %184
  %190 = fsub float %94, %166
  %191 = tail call float @llvm.fabs.f32(float %190)
  %192 = fpext float %191 to double
  %193 = fcmp olt double %192, 1.000000e-03
  br i1 %193, label %194, label %.loopexit

194:                                              ; preds = %189
  %195 = getelementptr inbounds i8, ptr %9, i64 72
  %196 = load i32, ptr %195, align 8, !tbaa !25
  %.not = icmp eq i32 %196, 0
  br i1 %.not, label %.preheader, label %.preheader161

.preheader161:                                    ; preds = %194
  %197 = getelementptr inbounds i8, ptr %9, i64 48
  %198 = icmp sgt i32 %196, 0
  br i1 %198, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader161
  %199 = getelementptr inbounds i8, ptr %9, i64 56
  %200 = getelementptr inbounds i8, ptr %9, i64 64
  br label %244

.preheader:                                       ; preds = %194
  %201 = load ptr, ptr %74, align 8, !tbaa !16
  %202 = load i32, ptr %1, align 4, !tbaa !18
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds i32, ptr %201, i64 %203
  %205 = load i32, ptr %204, align 4, !tbaa !18
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %206, i32 24
  %208 = load float, ptr %207, align 8, !tbaa !24
  %209 = fsub float %208, %179
  %210 = tail call float @llvm.fmuladd.f32(float %209, float %209, float 0.000000e+00)
  %211 = load i32, ptr %105, align 4, !tbaa !18
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds i32, ptr %201, i64 %212
  %214 = load i32, ptr %213, align 4, !tbaa !18
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %215, i32 24
  %217 = load float, ptr %216, align 8, !tbaa !24
  %218 = fsub float %217, %179
  %219 = tail call float @llvm.fmuladd.f32(float %218, float %218, float %210)
  %220 = load i32, ptr %129, align 4, !tbaa !18
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %201, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !18
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %224, i32 24
  %226 = load float, ptr %225, align 8, !tbaa !24
  %227 = fsub float %226, %179
  %228 = tail call float @llvm.fmuladd.f32(float %227, float %227, float %219)
  %229 = load i32, ptr %153, align 4, !tbaa !18
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %201, i64 %230
  %232 = load i32, ptr %231, align 4, !tbaa !18
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.s_atm, ptr %2, i64 %233, i32 24
  %235 = load float, ptr %234, align 8, !tbaa !24
  %236 = fsub float %235, %179
  %237 = tail call float @llvm.fmuladd.f32(float %236, float %236, float %228)
  %238 = fdiv float %237, 3.000000e+00
  %sqrtf = tail call float @sqrtf(float noundef %238) #5
  %239 = fcmp ogt float %sqrtf, %8
  br i1 %239, label %265, label %256

240:                                              ; preds = %244
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %241 = load i32, ptr %195, align 8, !tbaa !25
  %242 = sext i32 %241 to i64
  %243 = icmp slt i64 %indvars.iv.next, %242
  br i1 %243, label %244, label %.loopexit, !llvm.loop !27

244:                                              ; preds = %.lr.ph, %240
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %240 ]
  %245 = load ptr, ptr %197, align 8, !tbaa !29
  %246 = getelementptr inbounds float, ptr %245, i64 %indvars.iv
  %247 = load float, ptr %246, align 4, !tbaa !14
  %248 = load ptr, ptr %199, align 8, !tbaa !30
  %249 = getelementptr inbounds float, ptr %248, i64 %indvars.iv
  %250 = load float, ptr %249, align 4, !tbaa !14
  %251 = load ptr, ptr %200, align 8, !tbaa !31
  %252 = getelementptr inbounds float, ptr %251, i64 %indvars.iv
  %253 = load float, ptr %252, align 4, !tbaa !14
  %254 = tail call float @dist(float noundef %247, float noundef %250, float noundef %253, float noundef %16, float noundef %19, float noundef %22) #4
  %255 = fcmp ugt float %254, %94
  br i1 %255, label %240, label %.loopexit

256:                                              ; preds = %.preheader
  %257 = getelementptr inbounds i8, ptr %9, i64 708
  %258 = load float, ptr %257, align 4, !tbaa !32
  %259 = getelementptr inbounds i8, ptr %9, i64 704
  %260 = load float, ptr %259, align 8, !tbaa !33
  %261 = fsub float %258, %260
  %262 = fmul float %261, 2.500000e-01
  %263 = fcmp ogt float %sqrtf, %262
  %264 = fcmp ogt float %8, 0.000000e+00
  %or.cond = and i1 %264, %263
  br i1 %or.cond, label %266, label %270

265:                                              ; preds = %.preheader
  %.old = fcmp ogt float %8, 0.000000e+00
  br i1 %.old, label %266, label %270

266:                                              ; preds = %256, %265
  %267 = fdiv float %179, %8
  %268 = fpext float %267 to double
  %269 = fcmp ogt double %268, 1.400000e+00
  br i1 %269, label %.loopexit, label %270

270:                                              ; preds = %266, %265, %256
  %271 = load float, ptr %0, align 4, !tbaa !14
  %272 = load float, ptr %17, align 4, !tbaa !14
  %273 = load float, ptr %20, align 4, !tbaa !14
  %274 = tail call float @dist(float noundef %176, float noundef %177, float noundef %178, float noundef %271, float noundef %272, float noundef %273) #4
  %275 = fcmp ogt float %274, 1.000000e+00
  %276 = fadd double %101, -1.500000e+00
  %277 = fcmp olt double %276, %96
  %or.cond160 = and i1 %277, %275
  br i1 %or.cond160, label %.loopexit, label %278

278:                                              ; preds = %270
  br label %.loopexit

.loopexit:                                        ; preds = %240, %244, %.preheader161, %278, %266, %270, %103, %184, %189, %99, %73, %.preheader162
  %.1 = phi float [ -3.000000e+00, %.preheader162 ], [ %94, %278 ], [ -1.000000e+00, %266 ], [ -2.000000e+00, %270 ], [ -3.000000e+00, %103 ], [ -3.000000e+00, %184 ], [ -3.000000e+00, %189 ], [ -3.000000e+00, %99 ], [ -3.000000e+00, %73 ], [ -1.000000e+00, %.preheader161 ], [ -1.000000e+00, %240 ], [ %94, %244 ]
  ret float %.1
}

; Function Attrs: nounwind uwtable
declare dso_local float @atom_in_explicit_pocket(ptr noundef, ptr noundef) local_unnamed_addr #0

declare float @dist(float noundef, float noundef, float noundef, float noundef, 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

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

declare float @sqrtf(float) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i4 @llvm.ctpop.i4(i4) #3

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

!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, !12, i64 14112}
!6 = !{!"s_fparams", !7, i64 0, !7, i64 2000, !7, i64 4000, !7, i64 6000, !9, i64 14000, !9, i64 14008, !9, i64 14016, !10, i64 14024, !10, i64 14028, !9, i64 14032, !9, i64 14040, !9, i64 14048, !7, i64 14056, !7, i64 14057, !10, i64 14060, !10, i64 14064, !11, i64 14068, !10, i64 14072, !10, i64 14076, !10, i64 14080, !11, i64 14084, !10, i64 14088, !10, i64 14092, !10, i64 14096, !11, i64 14100, !12, i64 14104, !12, i64 14108, !12, i64 14112, !12, i64 14116, !12, i64 14120, !7, i64 14128, !11, i64 14288, !11, i64 14290, !7, i64 14296, !10, i64 14456, !7, i64 14460}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"any pointer", !7, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!6, !12, i64 14120}
!14 = !{!12, !12, i64 0}
!15 = !{!6, !10, i64 14028}
!16 = !{!17, !9, i64 16}
!17 = !{!"s_lst_vvertice", !9, i64 0, !9, i64 8, !9, i64 16, !10, i64 24, !9, i64 32, !10, i64 40, !10, i64 44}
!18 = !{!10, !10, i64 0}
!19 = !{!6, !10, i64 14060}
!20 = !{!21, !12, i64 20}
!21 = !{!"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, !11, i64 164, !9, i64 168, !10, i64 176}
!22 = !{!21, !12, i64 24}
!23 = !{!21, !12, i64 28}
!24 = !{!21, !12, i64 128}
!25 = !{!26, !10, i64 72}
!26 = !{!"s_pdb", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !7, i64 116, !7, i64 199, !12, i64 700, !12, i64 704, !12, i64 708, !10, i64 712, !10, i64 716}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!26, !9, i64 48}
!30 = !{!26, !9, i64 56}
!31 = !{!26, !9, i64 64}
!32 = !{!26, !12, i64 708}
!33 = !{!26, !12, i64 704}


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