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

; 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_desc = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i32, [20 x i32], i32, i32, i32, float, float, i32, i32, i32, i32, i32, [255 x i8], [255 x i8], [8 x i8] }
%struct.s_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_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_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
declare dso_local ptr @get_surrounding_atoms_idx(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @set_ASA(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #1 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  %32 = load ptr, ptr %5, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.s_desc, ptr %32, i32 0, i32 22
  store float 0.000000e+00, ptr %33, align 4, !tbaa !11
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.s_desc, ptr %34, i32 0, i32 25
  store float 0.000000e+00, ptr %35, align 4, !tbaa !14
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.s_desc, ptr %36, i32 0, i32 19
  store float 0.000000e+00, ptr %37, align 4, !tbaa !15
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.s_desc, ptr %38, i32 0, i32 20
  store float 0.000000e+00, ptr %39, align 4, !tbaa !16
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.s_desc, ptr %40, i32 0, i32 23
  store float 0.000000e+00, ptr %41, align 4, !tbaa !17
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.s_desc, ptr %42, i32 0, i32 26
  store float 0.000000e+00, ptr %43, align 4, !tbaa !18
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.s_desc, ptr %44, i32 0, i32 27
  store i32 0, ptr %45, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store float 0.000000e+00, ptr %9, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store float 0.000000e+00, ptr %10, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = load i32, ptr %8, align 4, !tbaa !9
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = call ptr @get_surrounding_atoms_idx(ptr noundef %46, i32 noundef %47, ptr noundef %48, ptr noundef %13)
  store ptr %49, ptr %11, align 8, !tbaa !5
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = load i32, ptr %8, align 4, !tbaa !9
  %52 = call ptr @get_unique_atoms_DEPRECATED(ptr noundef %50, i32 noundef %51, ptr noundef %14)
  store ptr %52, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store ptr null, ptr %16, align 8, !tbaa !5
  %53 = load i32, ptr %14, align 4, !tbaa !9
  %54 = sext i32 %53 to i64
  %55 = mul i64 4, %54
  %56 = call ptr @my_malloc(i64 noundef %55)
  store ptr %56, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  store ptr null, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %57 = call ptr @get_points_on_sphere(i32 noundef 100)
  store ptr %57, ptr %19, align 8, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %58

58:                                               ; preds = %351, %4
  %59 = load i32, ptr %15, align 4, !tbaa !9
  %60 = load i32, ptr %14, align 4, !tbaa !9
  %61 = icmp slt i32 %59, %60
  br i1 %61, label %62, label %354

62:                                               ; preds = %58
  store float 0.000000e+00, ptr %10, align 4, !tbaa !20
  store float 0.000000e+00, ptr %9, align 4, !tbaa !20
  %63 = load ptr, ptr %16, align 8, !tbaa !5
  %64 = load i32, ptr %15, align 4, !tbaa !9
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds float, ptr %63, i64 %65
  store float 0.000000e+00, ptr %66, align 4, !tbaa !20
  %67 = load ptr, ptr %12, align 8, !tbaa !5
  %68 = load i32, ptr %15, align 4, !tbaa !9
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds ptr, ptr %67, i64 %69
  %71 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %71, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %289, %62
  %73 = load i32, ptr %27, align 4, !tbaa !9
  %74 = icmp slt i32 %73, 100
  br i1 %74, label %75, label %292

75:                                               ; preds = %72
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %25, align 4, !tbaa !9
  %76 = load ptr, ptr %18, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.s_atm, ptr %76, i32 0, i32 5
  %78 = load float, ptr %77, align 4, !tbaa !21
  %79 = fpext float %78 to double
  %80 = load ptr, ptr %19, align 8, !tbaa !5
  %81 = load i32, ptr %27, align 4, !tbaa !9
  %82 = mul nsw i32 3, %81
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds float, ptr %80, i64 %83
  %85 = load float, ptr %84, align 4, !tbaa !20
  %86 = fpext float %85 to double
  %87 = load ptr, ptr %18, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.s_atm, ptr %87, i32 0, i32 3
  %89 = load float, ptr %88, align 4, !tbaa !24
  %90 = fpext float %89 to double
  %91 = fadd double %90, 1.400000e+00
  %92 = call double @llvm.fmuladd.f64(double %86, double %91, double %79)
  %93 = fptrunc double %92 to float
  store float %93, ptr %21, align 4, !tbaa !20
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.s_atm, ptr %94, i32 0, i32 6
  %96 = load float, ptr %95, align 8, !tbaa !25
  %97 = fpext float %96 to double
  %98 = load ptr, ptr %19, align 8, !tbaa !5
  %99 = load i32, ptr %27, align 4, !tbaa !9
  %100 = mul nsw i32 3, %99
  %101 = add nsw i32 %100, 1
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds float, ptr %98, i64 %102
  %104 = load float, ptr %103, align 4, !tbaa !20
  %105 = fpext float %104 to double
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.s_atm, ptr %106, i32 0, i32 3
  %108 = load float, ptr %107, align 4, !tbaa !24
  %109 = fpext float %108 to double
  %110 = fadd double %109, 1.400000e+00
  %111 = call double @llvm.fmuladd.f64(double %105, double %110, double %97)
  %112 = fptrunc double %111 to float
  store float %112, ptr %22, align 4, !tbaa !20
  %113 = load ptr, ptr %18, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.s_atm, ptr %113, i32 0, i32 7
  %115 = load float, ptr %114, align 4, !tbaa !26
  %116 = fpext float %115 to double
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %27, align 4, !tbaa !9
  %119 = mul nsw i32 3, %118
  %120 = add nsw i32 %119, 2
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %117, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !20
  %124 = fpext float %123 to double
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.s_atm, ptr %125, i32 0, i32 3
  %127 = load float, ptr %126, align 4, !tbaa !24
  %128 = fpext float %127 to double
  %129 = fadd double %128, 1.400000e+00
  %130 = call double @llvm.fmuladd.f64(double %124, double %129, double %116)
  %131 = fptrunc double %130 to float
  store float %131, ptr %20, align 4, !tbaa !20
  store i32 1, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %202, %75
  %133 = load i32, ptr %26, align 4, !tbaa !9
  %134 = load i32, ptr %8, align 4, !tbaa !9
  %135 = icmp slt i32 %133, %134
  br i1 %135, label %136, label %205

136:                                              ; preds = %132
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %198, %136
  %138 = load i32, ptr %30, align 4, !tbaa !9
  %139 = icmp slt i32 %138, 4
  br i1 %139, label %140, label %201

140:                                              ; preds = %137
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  %142 = load ptr, ptr %7, align 8, !tbaa !5
  %143 = load i32, ptr %26, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds ptr, ptr %142, i64 %144
  %146 = load ptr, ptr %145, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.s_vvertice, ptr %146, i32 0, i32 12
  %148 = load i32, ptr %30, align 4, !tbaa !9
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds [4 x ptr], ptr %147, i64 0, i64 %149
  %151 = load ptr, ptr %150, align 8, !tbaa !5
  %152 = icmp eq ptr %141, %151
  br i1 %152, label %153, label %197

153:                                              ; preds = %140
  %154 = load float, ptr %21, align 4, !tbaa !20
  %155 = load float, ptr %22, align 4, !tbaa !20
  %156 = load float, ptr %20, align 4, !tbaa !20
  %157 = load ptr, ptr %7, align 8, !tbaa !5
  %158 = load i32, ptr %26, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds ptr, ptr %157, i64 %159
  %161 = load ptr, ptr %160, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.s_vvertice, ptr %161, i32 0, i32 6
  %163 = load float, ptr %162, align 8, !tbaa !27
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = load i32, ptr %26, align 4, !tbaa !9
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds ptr, ptr %164, i64 %166
  %168 = load ptr, ptr %167, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.s_vvertice, ptr %168, i32 0, i32 7
  %170 = load float, ptr %169, align 4, !tbaa !29
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  %172 = load i32, ptr %26, align 4, !tbaa !9
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds ptr, ptr %171, i64 %173
  %175 = load ptr, ptr %174, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.s_vvertice, ptr %175, i32 0, i32 8
  %177 = load float, ptr %176, align 8, !tbaa !30
  %178 = call float @ddist(float noundef %154, float noundef %155, float noundef %156, float noundef %163, float noundef %170, float noundef %177)
  %179 = load ptr, ptr %7, align 8, !tbaa !5
  %180 = load i32, ptr %26, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds ptr, ptr %179, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.s_vvertice, ptr %183, i32 0, i32 5
  %185 = load float, ptr %184, align 4, !tbaa !31
  %186 = load ptr, ptr %7, align 8, !tbaa !5
  %187 = load i32, ptr %26, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds ptr, ptr %186, i64 %188
  %190 = load ptr, ptr %189, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.s_vvertice, ptr %190, i32 0, i32 5
  %192 = load float, ptr %191, align 4, !tbaa !31
  %193 = fmul float %185, %192
  %194 = fcmp ole float %178, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %153
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %195, %153
  br label %197

197:                                              ; preds = %196, %140
  br label %198

198:                                              ; preds = %197
  %199 = load i32, ptr %30, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %30, align 4, !tbaa !9
  br label %137, !llvm.loop !32

201:                                              ; preds = %137
  br label %202

202:                                              ; preds = %201
  %203 = load i32, ptr %26, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %26, align 4, !tbaa !9
  br label %132, !llvm.loop !34

205:                                              ; preds = %132
  br label %206

206:                                              ; preds = %276, %205
  %207 = load i32, ptr %28, align 4, !tbaa !9
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %217, label %209

209:                                              ; preds = %206
  %210 = load i32, ptr %25, align 4, !tbaa !9
  %211 = load i32, ptr %13, align 4, !tbaa !9
  %212 = icmp slt i32 %210, %211
  br i1 %212, label %213, label %217

213:                                              ; preds = %209
  %214 = load i32, ptr %31, align 4, !tbaa !9
  %215 = icmp ne i32 %214, 0
  %216 = xor i1 %215, true
  br label %217

217:                                              ; preds = %213, %209, %206
  %218 = phi i1 [ false, %209 ], [ false, %206 ], [ %216, %213 ]
  br i1 %218, label %219, label %279

219:                                              ; preds = %217
  %220 = load ptr, ptr %6, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.s_pdb, ptr %220, i32 0, i32 3
  %222 = load ptr, ptr %221, align 8, !tbaa !35
  %223 = load ptr, ptr %11, align 8, !tbaa !5
  %224 = load i32, ptr %25, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %223, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds ptr, ptr %222, i64 %228
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  store ptr %230, ptr %17, align 8, !tbaa !5
  %231 = load ptr, ptr %17, align 8, !tbaa !5
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = icmp ne ptr %231, %232
  br i1 %233, label %234, label %276

234:                                              ; preds = %219
  %235 = load float, ptr %21, align 4, !tbaa !20
  %236 = load float, ptr %22, align 4, !tbaa !20
  %237 = load float, ptr %20, align 4, !tbaa !20
  %238 = load ptr, ptr %17, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.s_atm, ptr %238, i32 0, i32 5
  %240 = load float, ptr %239, align 4, !tbaa !21
  %241 = load ptr, ptr %17, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.s_atm, ptr %241, i32 0, i32 6
  %243 = load float, ptr %242, align 8, !tbaa !25
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.s_atm, ptr %244, i32 0, i32 7
  %246 = load float, ptr %245, align 4, !tbaa !26
  %247 = call float @ddist(float noundef %235, float noundef %236, float noundef %237, float noundef %240, float noundef %243, float noundef %246)
  store float %247, ptr %23, align 4, !tbaa !20
  %248 = load float, ptr %23, align 4, !tbaa !20
  %249 = fpext float %248 to double
  %250 = load ptr, ptr %17, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.s_atm, ptr %250, i32 0, i32 3
  %252 = load float, ptr %251, align 4, !tbaa !24
  %253 = fpext float %252 to double
  %254 = fadd double %253, 1.400000e+00
  %255 = load ptr, ptr %17, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.s_atm, ptr %255, i32 0, i32 3
  %257 = load float, ptr %256, align 4, !tbaa !24
  %258 = fpext float %257 to double
  %259 = fadd double %258, 1.400000e+00
  %260 = fmul double %254, %259
  %261 = fcmp olt double %249, %260
  br i1 %261, label %262, label %275

262:                                              ; preds = %234
  store i32 1, ptr %28, align 4, !tbaa !9
  %263 = load ptr, ptr %17, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.s_atm, ptr %263, i32 0, i32 22
  %265 = load float, ptr %264, align 8, !tbaa !37
  %266 = fpext float %265 to double
  %267 = fcmp olt double %266, 2.800000e+00
  br i1 %267, label %268, label %271

268:                                              ; preds = %262
  %269 = load float, ptr %9, align 4, !tbaa !20
  %270 = fadd float %269, 1.000000e+00
  store float %270, ptr %9, align 4, !tbaa !20
  br label %274

271:                                              ; preds = %262
  %272 = load float, ptr %10, align 4, !tbaa !20
  %273 = fadd float %272, 1.000000e+00
  store float %273, ptr %10, align 4, !tbaa !20
  br label %274

274:                                              ; preds = %271, %268
  br label %275

275:                                              ; preds = %274, %234
  br label %276

276:                                              ; preds = %275, %219
  %277 = load i32, ptr %25, align 4, !tbaa !9
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %25, align 4, !tbaa !9
  br label %206, !llvm.loop !38

279:                                              ; preds = %217
  %280 = load i32, ptr %28, align 4, !tbaa !9
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %288, label %282

282:                                              ; preds = %279
  %283 = load i32, ptr %31, align 4, !tbaa !9
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %288, label %285

285:                                              ; preds = %282
  %286 = load i32, ptr %29, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %29, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %285, %282, %279
  br label %289

289:                                              ; preds = %288
  %290 = load i32, ptr %27, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %27, align 4, !tbaa !9
  br label %72, !llvm.loop !39

292:                                              ; preds = %72
  %293 = load ptr, ptr %18, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.s_atm, ptr %293, i32 0, i32 3
  %295 = load float, ptr %294, align 4, !tbaa !24
  %296 = fpext float %295 to double
  %297 = fadd double %296, 1.400000e+00
  %298 = fmul double 0x402921FB54442D18, %297
  %299 = load ptr, ptr %18, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.s_atm, ptr %299, i32 0, i32 3
  %301 = load float, ptr %300, align 4, !tbaa !24
  %302 = fpext float %301 to double
  %303 = fadd double %302, 1.400000e+00
  %304 = fmul double %298, %303
  %305 = fdiv double %304, 1.000000e+02
  %306 = load i32, ptr %29, align 4, !tbaa !9
  %307 = sitofp i32 %306 to double
  %308 = fmul double %305, %307
  %309 = fptrunc double %308 to float
  store float %309, ptr %24, align 4, !tbaa !20
  %310 = load float, ptr %24, align 4, !tbaa !20
  %311 = load ptr, ptr %16, align 8, !tbaa !5
  %312 = load i32, ptr %15, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds float, ptr %311, i64 %313
  store float %310, ptr %314, align 4, !tbaa !20
  %315 = load ptr, ptr %18, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.s_atm, ptr %315, i32 0, i32 22
  %317 = load float, ptr %316, align 8, !tbaa !37
  %318 = fpext float %317 to double
  %319 = fcmp olt double %318, 2.800000e+00
  br i1 %319, label %320, label %328

320:                                              ; preds = %292
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.s_desc, ptr %321, i32 0, i32 25
  %323 = load float, ptr %322, align 4, !tbaa !14
  %324 = load float, ptr %24, align 4, !tbaa !20
  %325 = fadd float %323, %324
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.s_desc, ptr %326, i32 0, i32 25
  store float %325, ptr %327, align 4, !tbaa !14
  br label %336

328:                                              ; preds = %292
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.s_desc, ptr %329, i32 0, i32 22
  %331 = load float, ptr %330, align 4, !tbaa !11
  %332 = load float, ptr %24, align 4, !tbaa !20
  %333 = fadd float %331, %332
  %334 = load ptr, ptr %5, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.s_desc, ptr %334, i32 0, i32 22
  store float %333, ptr %335, align 4, !tbaa !11
  br label %336

336:                                              ; preds = %328, %320
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.s_desc, ptr %337, i32 0, i32 19
  %339 = load float, ptr %338, align 4, !tbaa !15
  %340 = load float, ptr %24, align 4, !tbaa !20
  %341 = fadd float %339, %340
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.s_desc, ptr %342, i32 0, i32 19
  store float %341, ptr %343, align 4, !tbaa !15
  %344 = load float, ptr %9, align 4, !tbaa !20
  %345 = load float, ptr %9, align 4, !tbaa !20
  %346 = load float, ptr %10, align 4, !tbaa !20
  %347 = fadd float %345, %346
  %348 = fdiv float %344, %347
  %349 = load ptr, ptr %18, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.s_atm, ptr %349, i32 0, i32 27
  store float %348, ptr %350, align 4, !tbaa !40
  br label %351

351:                                              ; preds = %336
  %352 = load i32, ptr %15, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %15, align 4, !tbaa !9
  br label %58, !llvm.loop !41

354:                                              ; preds = %58
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %663, %354
  %356 = load i32, ptr %15, align 4, !tbaa !9
  %357 = load i32, ptr %14, align 4, !tbaa !9
  %358 = icmp slt i32 %356, %357
  br i1 %358, label %359, label %666

359:                                              ; preds = %355
  %360 = load ptr, ptr %12, align 8, !tbaa !5
  %361 = load i32, ptr %15, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds ptr, ptr %360, i64 %362
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  store ptr %364, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %365

365:                                              ; preds = %570, %359
  %366 = load i32, ptr %27, align 4, !tbaa !9
  %367 = icmp slt i32 %366, 100
  br i1 %367, label %368, label %573

368:                                              ; preds = %365
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %25, align 4, !tbaa !9
  %369 = load ptr, ptr %18, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.s_atm, ptr %369, i32 0, i32 5
  %371 = load float, ptr %370, align 4, !tbaa !21
  %372 = fpext float %371 to double
  %373 = load ptr, ptr %19, align 8, !tbaa !5
  %374 = load i32, ptr %27, align 4, !tbaa !9
  %375 = mul nsw i32 3, %374
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds float, ptr %373, i64 %376
  %378 = load float, ptr %377, align 4, !tbaa !20
  %379 = fpext float %378 to double
  %380 = load ptr, ptr %18, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.s_atm, ptr %380, i32 0, i32 3
  %382 = load float, ptr %381, align 4, !tbaa !24
  %383 = fpext float %382 to double
  %384 = fadd double %383, 2.200000e+00
  %385 = call double @llvm.fmuladd.f64(double %379, double %384, double %372)
  %386 = fptrunc double %385 to float
  store float %386, ptr %21, align 4, !tbaa !20
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.s_atm, ptr %387, i32 0, i32 6
  %389 = load float, ptr %388, align 8, !tbaa !25
  %390 = fpext float %389 to double
  %391 = load ptr, ptr %19, align 8, !tbaa !5
  %392 = load i32, ptr %27, align 4, !tbaa !9
  %393 = mul nsw i32 3, %392
  %394 = add nsw i32 %393, 1
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds float, ptr %391, i64 %395
  %397 = load float, ptr %396, align 4, !tbaa !20
  %398 = fpext float %397 to double
  %399 = load ptr, ptr %18, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.s_atm, ptr %399, i32 0, i32 3
  %401 = load float, ptr %400, align 4, !tbaa !24
  %402 = fpext float %401 to double
  %403 = fadd double %402, 2.200000e+00
  %404 = call double @llvm.fmuladd.f64(double %398, double %403, double %390)
  %405 = fptrunc double %404 to float
  store float %405, ptr %22, align 4, !tbaa !20
  %406 = load ptr, ptr %18, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.s_atm, ptr %406, i32 0, i32 7
  %408 = load float, ptr %407, align 4, !tbaa !26
  %409 = fpext float %408 to double
  %410 = load ptr, ptr %19, align 8, !tbaa !5
  %411 = load i32, ptr %27, align 4, !tbaa !9
  %412 = mul nsw i32 3, %411
  %413 = add nsw i32 %412, 2
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds float, ptr %410, i64 %414
  %416 = load float, ptr %415, align 4, !tbaa !20
  %417 = fpext float %416 to double
  %418 = load ptr, ptr %18, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.s_atm, ptr %418, i32 0, i32 3
  %420 = load float, ptr %419, align 4, !tbaa !24
  %421 = fpext float %420 to double
  %422 = fadd double %421, 2.200000e+00
  %423 = call double @llvm.fmuladd.f64(double %417, double %422, double %409)
  %424 = fptrunc double %423 to float
  store float %424, ptr %20, align 4, !tbaa !20
  store i32 1, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %495, %368
  %426 = load i32, ptr %26, align 4, !tbaa !9
  %427 = load i32, ptr %8, align 4, !tbaa !9
  %428 = icmp slt i32 %426, %427
  br i1 %428, label %429, label %498

429:                                              ; preds = %425
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %491, %429
  %431 = load i32, ptr %30, align 4, !tbaa !9
  %432 = icmp slt i32 %431, 4
  br i1 %432, label %433, label %494

433:                                              ; preds = %430
  %434 = load ptr, ptr %18, align 8, !tbaa !5
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = load i32, ptr %26, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds ptr, ptr %435, i64 %437
  %439 = load ptr, ptr %438, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.s_vvertice, ptr %439, i32 0, i32 12
  %441 = load i32, ptr %30, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [4 x ptr], ptr %440, i64 0, i64 %442
  %444 = load ptr, ptr %443, align 8, !tbaa !5
  %445 = icmp eq ptr %434, %444
  br i1 %445, label %446, label %490

446:                                              ; preds = %433
  %447 = load float, ptr %21, align 4, !tbaa !20
  %448 = load float, ptr %22, align 4, !tbaa !20
  %449 = load float, ptr %20, align 4, !tbaa !20
  %450 = load ptr, ptr %7, align 8, !tbaa !5
  %451 = load i32, ptr %26, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds ptr, ptr %450, i64 %452
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.s_vvertice, ptr %454, i32 0, i32 6
  %456 = load float, ptr %455, align 8, !tbaa !27
  %457 = load ptr, ptr %7, align 8, !tbaa !5
  %458 = load i32, ptr %26, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds ptr, ptr %457, i64 %459
  %461 = load ptr, ptr %460, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.s_vvertice, ptr %461, i32 0, i32 7
  %463 = load float, ptr %462, align 4, !tbaa !29
  %464 = load ptr, ptr %7, align 8, !tbaa !5
  %465 = load i32, ptr %26, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds ptr, ptr %464, i64 %466
  %468 = load ptr, ptr %467, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.s_vvertice, ptr %468, i32 0, i32 8
  %470 = load float, ptr %469, align 8, !tbaa !30
  %471 = call float @ddist(float noundef %447, float noundef %448, float noundef %449, float noundef %456, float noundef %463, float noundef %470)
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  %473 = load i32, ptr %26, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds ptr, ptr %472, i64 %474
  %476 = load ptr, ptr %475, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.s_vvertice, ptr %476, i32 0, i32 5
  %478 = load float, ptr %477, align 4, !tbaa !31
  %479 = load ptr, ptr %7, align 8, !tbaa !5
  %480 = load i32, ptr %26, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds ptr, ptr %479, i64 %481
  %483 = load ptr, ptr %482, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.s_vvertice, ptr %483, i32 0, i32 5
  %485 = load float, ptr %484, align 4, !tbaa !31
  %486 = fmul float %478, %485
  %487 = fcmp ole float %471, %486
  br i1 %487, label %488, label %489

488:                                              ; preds = %446
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %488, %446
  br label %490

490:                                              ; preds = %489, %433
  br label %491

491:                                              ; preds = %490
  %492 = load i32, ptr %30, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %30, align 4, !tbaa !9
  br label %430, !llvm.loop !42

494:                                              ; preds = %430
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %26, align 4, !tbaa !9
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %26, align 4, !tbaa !9
  br label %425, !llvm.loop !43

498:                                              ; preds = %425
  br label %499

499:                                              ; preds = %557, %498
  %500 = load i32, ptr %28, align 4, !tbaa !9
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %510, label %502

502:                                              ; preds = %499
  %503 = load i32, ptr %25, align 4, !tbaa !9
  %504 = load i32, ptr %13, align 4, !tbaa !9
  %505 = icmp slt i32 %503, %504
  br i1 %505, label %506, label %510

506:                                              ; preds = %502
  %507 = load i32, ptr %31, align 4, !tbaa !9
  %508 = icmp ne i32 %507, 0
  %509 = xor i1 %508, true
  br label %510

510:                                              ; preds = %506, %502, %499
  %511 = phi i1 [ false, %502 ], [ false, %499 ], [ %509, %506 ]
  br i1 %511, label %512, label %560

512:                                              ; preds = %510
  %513 = load ptr, ptr %6, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.s_pdb, ptr %513, i32 0, i32 3
  %515 = load ptr, ptr %514, align 8, !tbaa !35
  %516 = load ptr, ptr %11, align 8, !tbaa !5
  %517 = load i32, ptr %25, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds i32, ptr %516, i64 %518
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds ptr, ptr %515, i64 %521
  %523 = load ptr, ptr %522, align 8, !tbaa !5
  store ptr %523, ptr %17, align 8, !tbaa !5
  %524 = load ptr, ptr %17, align 8, !tbaa !5
  %525 = load ptr, ptr %18, align 8, !tbaa !5
  %526 = icmp ne ptr %524, %525
  br i1 %526, label %527, label %557

527:                                              ; preds = %512
  %528 = load float, ptr %21, align 4, !tbaa !20
  %529 = load float, ptr %22, align 4, !tbaa !20
  %530 = load float, ptr %20, align 4, !tbaa !20
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.s_atm, ptr %531, i32 0, i32 5
  %533 = load float, ptr %532, align 4, !tbaa !21
  %534 = load ptr, ptr %17, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.s_atm, ptr %534, i32 0, i32 6
  %536 = load float, ptr %535, align 8, !tbaa !25
  %537 = load ptr, ptr %17, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.s_atm, ptr %537, i32 0, i32 7
  %539 = load float, ptr %538, align 4, !tbaa !26
  %540 = call float @ddist(float noundef %528, float noundef %529, float noundef %530, float noundef %533, float noundef %536, float noundef %539)
  store float %540, ptr %23, align 4, !tbaa !20
  %541 = load float, ptr %23, align 4, !tbaa !20
  %542 = fpext float %541 to double
  %543 = load ptr, ptr %17, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.s_atm, ptr %543, i32 0, i32 3
  %545 = load float, ptr %544, align 4, !tbaa !24
  %546 = fpext float %545 to double
  %547 = fadd double %546, 2.200000e+00
  %548 = load ptr, ptr %17, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.s_atm, ptr %548, i32 0, i32 3
  %550 = load float, ptr %549, align 4, !tbaa !24
  %551 = fpext float %550 to double
  %552 = fadd double %551, 2.200000e+00
  %553 = fmul double %547, %552
  %554 = fcmp olt double %542, %553
  br i1 %554, label %555, label %556

555:                                              ; preds = %527
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %555, %527
  br label %557

557:                                              ; preds = %556, %512
  %558 = load i32, ptr %25, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %25, align 4, !tbaa !9
  br label %499, !llvm.loop !44

560:                                              ; preds = %510
  %561 = load i32, ptr %28, align 4, !tbaa !9
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %569, label %563

563:                                              ; preds = %560
  %564 = load i32, ptr %31, align 4, !tbaa !9
  %565 = icmp ne i32 %564, 0
  br i1 %565, label %569, label %566

566:                                              ; preds = %563
  %567 = load i32, ptr %29, align 4, !tbaa !9
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %29, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %566, %563, %560
  br label %570

570:                                              ; preds = %569
  %571 = load i32, ptr %27, align 4, !tbaa !9
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr %27, align 4, !tbaa !9
  br label %365, !llvm.loop !45

573:                                              ; preds = %365
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.s_atm, ptr %574, i32 0, i32 3
  %576 = load float, ptr %575, align 4, !tbaa !24
  %577 = fpext float %576 to double
  %578 = fadd double %577, 2.200000e+00
  %579 = fmul double 0x402921FB54442D18, %578
  %580 = load ptr, ptr %18, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.s_atm, ptr %580, i32 0, i32 3
  %582 = load float, ptr %581, align 4, !tbaa !24
  %583 = fpext float %582 to double
  %584 = fadd double %583, 2.200000e+00
  %585 = fmul double %579, %584
  %586 = fdiv double %585, 1.000000e+02
  %587 = load i32, ptr %29, align 4, !tbaa !9
  %588 = sitofp i32 %587 to double
  %589 = fmul double %586, %588
  %590 = fptrunc double %589 to float
  store float %590, ptr %24, align 4, !tbaa !20
  %591 = load ptr, ptr %18, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.s_atm, ptr %591, i32 0, i32 22
  %593 = load float, ptr %592, align 8, !tbaa !37
  %594 = fpext float %593 to double
  %595 = fcmp olt double %594, 2.800000e+00
  br i1 %595, label %596, label %604

596:                                              ; preds = %573
  %597 = load ptr, ptr %5, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.s_desc, ptr %597, i32 0, i32 26
  %599 = load float, ptr %598, align 4, !tbaa !18
  %600 = load float, ptr %24, align 4, !tbaa !20
  %601 = fadd float %599, %600
  %602 = load ptr, ptr %5, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.s_desc, ptr %602, i32 0, i32 26
  store float %601, ptr %603, align 4, !tbaa !18
  br label %655

604:                                              ; preds = %573
  %605 = load float, ptr %24, align 4, !tbaa !20
  %606 = load ptr, ptr %16, align 8, !tbaa !5
  %607 = load i32, ptr %15, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds float, ptr %606, i64 %608
  %610 = load float, ptr %609, align 4, !tbaa !20
  %611 = fcmp olt float %605, %610
  br i1 %611, label %612, label %647

612:                                              ; preds = %604
  %613 = load ptr, ptr %16, align 8, !tbaa !5
  %614 = load i32, ptr %15, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds float, ptr %613, i64 %615
  %617 = load float, ptr %616, align 4, !tbaa !20
  %618 = fpext float %617 to double
  %619 = fcmp ole double %618, 1.000000e+01
  br i1 %619, label %620, label %647

620:                                              ; preds = %612
  %621 = load float, ptr %24, align 4, !tbaa !20
  %622 = fpext float %621 to double
  %623 = fcmp oge double %622, 0.000000e+00
  br i1 %623, label %624, label %647

624:                                              ; preds = %620
  %625 = load ptr, ptr %5, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.s_desc, ptr %625, i32 0, i32 27
  %627 = load i32, ptr %626, align 4, !tbaa !19
  %628 = add nsw i32 %627, 1
  store i32 %628, ptr %626, align 4, !tbaa !19
  %629 = load ptr, ptr %18, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.s_atm, ptr %629, i32 0, i32 20
  store i32 1, ptr %630, align 8, !tbaa !46
  %631 = load ptr, ptr %16, align 8, !tbaa !5
  %632 = load i32, ptr %15, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds float, ptr %631, i64 %633
  %635 = load float, ptr %634, align 4, !tbaa !20
  %636 = load ptr, ptr %18, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.s_atm, ptr %636, i32 0, i32 25
  store float %635, ptr %637, align 4, !tbaa !47
  %638 = load float, ptr %24, align 4, !tbaa !20
  %639 = load ptr, ptr %16, align 8, !tbaa !5
  %640 = load i32, ptr %15, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds float, ptr %639, i64 %641
  %643 = load float, ptr %642, align 4, !tbaa !20
  %644 = fsub float %638, %643
  %645 = load ptr, ptr %18, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.s_atm, ptr %645, i32 0, i32 26
  store float %644, ptr %646, align 8, !tbaa !48
  br label %647

647:                                              ; preds = %624, %620, %612, %604
  %648 = load ptr, ptr %5, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.s_desc, ptr %648, i32 0, i32 23
  %650 = load float, ptr %649, align 4, !tbaa !17
  %651 = load float, ptr %24, align 4, !tbaa !20
  %652 = fadd float %650, %651
  %653 = load ptr, ptr %5, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.s_desc, ptr %653, i32 0, i32 23
  store float %652, ptr %654, align 4, !tbaa !17
  br label %655

655:                                              ; preds = %647, %596
  %656 = load ptr, ptr %5, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.s_desc, ptr %656, i32 0, i32 20
  %658 = load float, ptr %657, align 4, !tbaa !16
  %659 = load float, ptr %24, align 4, !tbaa !20
  %660 = fadd float %658, %659
  %661 = load ptr, ptr %5, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.s_desc, ptr %661, i32 0, i32 20
  store float %660, ptr %662, align 4, !tbaa !16
  br label %663

663:                                              ; preds = %655
  %664 = load i32, ptr %15, align 4, !tbaa !9
  %665 = add nsw i32 %664, 1
  store i32 %665, ptr %15, align 4, !tbaa !9
  br label %355, !llvm.loop !49

666:                                              ; preds = %355
  %667 = load ptr, ptr %19, align 8, !tbaa !5
  call void @free(ptr noundef %667) #5
  store ptr null, ptr %19, align 8, !tbaa !5
  %668 = load ptr, ptr %12, align 8, !tbaa !5
  call void @free(ptr noundef %668) #5
  %669 = load ptr, ptr %11, align 8, !tbaa !5
  call void @free(ptr noundef %669) #5
  %670 = load ptr, ptr %16, align 8, !tbaa !5
  call void @my_free(ptr noundef %670)
  store ptr null, ptr %11, align 8, !tbaa !5
  store ptr null, ptr %12, align 8, !tbaa !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
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret void
}

declare ptr @my_malloc(i64 noundef) #2

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #4

declare void @my_free(ptr noundef) #2

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


; 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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

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

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

declare float @ddist(float noundef, float noundef, float noundef, float noundef, float noundef, float noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local void @set_ASA(ptr nocapture noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) local_unnamed_addr #1 {
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = getelementptr inbounds i8, ptr %0, i64 88
  %8 = getelementptr inbounds i8, ptr %0, i64 100
  %9 = getelementptr inbounds i8, ptr %0, i64 76
  %10 = getelementptr inbounds i8, ptr %0, i64 80
  store <2 x float> zeroinitializer, ptr %9, align 4, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 92
  store <2 x float> zeroinitializer, ptr %7, align 4, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %0, i64 104
  store <2 x float> zeroinitializer, ptr %8, align 4, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 108
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  store i32 0, ptr %5, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  store i32 0, ptr %6, align 4, !tbaa !12
  %14 = call ptr @get_surrounding_atoms_idx(ptr noundef %2, i32 noundef %3, ptr noundef %1, ptr noundef nonnull %5)
  %15 = call ptr @get_unique_atoms_DEPRECATED(ptr noundef %2, i32 noundef %3, ptr noundef nonnull %6)
  %16 = load i32, ptr %6, align 4, !tbaa !12
  %17 = sext i32 %16 to i64
  %18 = shl nsw i64 %17, 2
  %19 = call ptr @my_malloc(i64 noundef %18) #5
  %20 = call ptr @get_points_on_sphere(i32 noundef 100)
  %21 = load i32, ptr %6, align 4, !tbaa !12
  %22 = icmp sgt i32 %21, 0
  br i1 %22, label %.lr.ph264, label %._crit_edge

.lr.ph264:                                        ; preds = %4
  %23 = icmp sgt i32 %3, 0
  %24 = getelementptr inbounds i8, ptr %1, i64 24
  %wide.trip.count = zext nneg i32 %3 to i64
  br label %28

.preheader242:                                    ; preds = %175
  %25 = icmp sgt i32 %196, 0
  br i1 %25, label %.lr.ph278, label %._crit_edge

.lr.ph278:                                        ; preds = %.preheader242
  %26 = icmp sgt i32 %3, 0
  %27 = getelementptr inbounds i8, ptr %1, i64 24
  %wide.trip.count300 = zext nneg i32 %3 to i64
  br label %199

28:                                               ; preds = %.lr.ph264, %175
  %indvars.iv290 = phi i64 [ 0, %.lr.ph264 ], [ %indvars.iv.next291, %175 ]
  %29 = getelementptr inbounds float, ptr %19, i64 %indvars.iv290
  store float 0.000000e+00, ptr %29, align 4, !tbaa !5
  %30 = getelementptr inbounds ptr, ptr %15, i64 %indvars.iv290
  %31 = load ptr, ptr %30, align 8, !tbaa !13
  %32 = getelementptr inbounds i8, ptr %31, i64 20
  %33 = getelementptr inbounds i8, ptr %31, i64 12
  %34 = getelementptr inbounds i8, ptr %31, i64 24
  %35 = getelementptr inbounds i8, ptr %31, i64 28
  br label %36

36:                                               ; preds = %28, %.critedge
  %indvars.iv286 = phi i64 [ 0, %28 ], [ %indvars.iv.next287, %.critedge ]
  %.0197262 = phi i32 [ 0, %28 ], [ %spec.select, %.critedge ]
  %.0213260 = phi float [ 0.000000e+00, %28 ], [ %.1214.lcssa, %.critedge ]
  %.0216259 = phi float [ 0.000000e+00, %28 ], [ %.1217.lcssa, %.critedge ]
  %37 = load float, ptr %32, align 4, !tbaa !15
  %38 = fpext float %37 to double
  %.idx = mul i64 %indvars.iv286, 12
  %39 = getelementptr inbounds i8, ptr %20, i64 %.idx
  %40 = load float, ptr %39, align 4, !tbaa !5
  %41 = fpext float %40 to double
  %42 = load float, ptr %33, align 4, !tbaa !18
  %43 = fpext float %42 to double
  %44 = fadd double %43, 1.400000e+00
  %45 = call double @llvm.fmuladd.f64(double %41, double %44, double %38)
  %46 = fptrunc double %45 to float
  %47 = load float, ptr %34, align 8, !tbaa !19
  %48 = fpext float %47 to double
  %49 = getelementptr inbounds i8, ptr %39, i64 4
  %50 = load float, ptr %49, align 4, !tbaa !5
  %51 = fpext float %50 to double
  %52 = call double @llvm.fmuladd.f64(double %51, double %44, double %48)
  %53 = fptrunc double %52 to float
  %54 = load float, ptr %35, align 4, !tbaa !20
  %55 = fpext float %54 to double
  %56 = getelementptr inbounds i8, ptr %39, i64 8
  %57 = load float, ptr %56, align 4, !tbaa !5
  %58 = fpext float %57 to double
  %59 = call double @llvm.fmuladd.f64(double %58, double %44, double %55)
  %60 = fptrunc double %59 to float
  br i1 %23, label %.preheader243, label %.critedge

.preheader244:                                    ; preds = %139
  %.not224 = icmp eq i32 %.2.3, 0
  %61 = load i32, ptr %5, align 4
  %62 = icmp sgt i32 %61, 0
  %or.cond229250 = and i1 %62, %.not224
  br i1 %or.cond229250, label %.lr.ph.split, label %.critedge

.preheader243:                                    ; preds = %36, %139
  %indvars.iv = phi i64 [ %indvars.iv.next, %139 ], [ 0, %36 ]
  %.0249 = phi i32 [ %.2.3, %139 ], [ 1, %36 ]
  %63 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv
  %64 = load ptr, ptr %63, align 8, !tbaa !13
  %65 = getelementptr inbounds i8, ptr %64, i64 64
  %66 = load ptr, ptr %65, align 8, !tbaa !13
  %67 = icmp eq ptr %31, %66
  br i1 %67, label %68, label %82

68:                                               ; preds = %.preheader243
  %69 = getelementptr inbounds i8, ptr %64, i64 24
  %70 = load float, ptr %69, align 8, !tbaa !21
  %71 = getelementptr inbounds i8, ptr %64, i64 28
  %72 = load float, ptr %71, align 4, !tbaa !23
  %73 = getelementptr inbounds i8, ptr %64, i64 32
  %74 = load float, ptr %73, align 8, !tbaa !24
  %75 = call float @ddist(float noundef %46, float noundef %53, float noundef %60, float noundef %70, float noundef %72, float noundef %74) #5
  %76 = load ptr, ptr %63, align 8, !tbaa !13
  %77 = getelementptr inbounds i8, ptr %76, i64 20
  %78 = load float, ptr %77, align 4, !tbaa !25
  %79 = fmul float %78, %78
  %80 = fcmp ugt float %75, %79
  br i1 %80, label %82, label %81

81:                                               ; preds = %68
  br label %82

82:                                               ; preds = %.preheader243, %81, %68
  %83 = phi ptr [ %76, %81 ], [ %76, %68 ], [ %64, %.preheader243 ]
  %.2 = phi i32 [ 0, %81 ], [ %.0249, %68 ], [ %.0249, %.preheader243 ]
  %84 = getelementptr inbounds i8, ptr %83, i64 72
  %85 = load ptr, ptr %84, align 8, !tbaa !13
  %86 = icmp eq ptr %31, %85
  br i1 %86, label %87, label %101

87:                                               ; preds = %82
  %88 = getelementptr inbounds i8, ptr %83, i64 24
  %89 = load float, ptr %88, align 8, !tbaa !21
  %90 = getelementptr inbounds i8, ptr %83, i64 28
  %91 = load float, ptr %90, align 4, !tbaa !23
  %92 = getelementptr inbounds i8, ptr %83, i64 32
  %93 = load float, ptr %92, align 8, !tbaa !24
  %94 = call float @ddist(float noundef %46, float noundef %53, float noundef %60, float noundef %89, float noundef %91, float noundef %93) #5
  %95 = load ptr, ptr %63, align 8, !tbaa !13
  %96 = getelementptr inbounds i8, ptr %95, i64 20
  %97 = load float, ptr %96, align 4, !tbaa !25
  %98 = fmul float %97, %97
  %99 = fcmp ugt float %94, %98
  br i1 %99, label %101, label %100

100:                                              ; preds = %87
  br label %101

101:                                              ; preds = %100, %87, %82
  %102 = phi ptr [ %95, %100 ], [ %95, %87 ], [ %83, %82 ]
  %.2.1 = phi i32 [ 0, %100 ], [ %.2, %87 ], [ %.2, %82 ]
  %103 = getelementptr inbounds i8, ptr %102, i64 80
  %104 = load ptr, ptr %103, align 8, !tbaa !13
  %105 = icmp eq ptr %31, %104
  br i1 %105, label %106, label %120

106:                                              ; preds = %101
  %107 = getelementptr inbounds i8, ptr %102, i64 24
  %108 = load float, ptr %107, align 8, !tbaa !21
  %109 = getelementptr inbounds i8, ptr %102, i64 28
  %110 = load float, ptr %109, align 4, !tbaa !23
  %111 = getelementptr inbounds i8, ptr %102, i64 32
  %112 = load float, ptr %111, align 8, !tbaa !24
  %113 = call float @ddist(float noundef %46, float noundef %53, float noundef %60, float noundef %108, float noundef %110, float noundef %112) #5
  %114 = load ptr, ptr %63, align 8, !tbaa !13
  %115 = getelementptr inbounds i8, ptr %114, i64 20
  %116 = load float, ptr %115, align 4, !tbaa !25
  %117 = fmul float %116, %116
  %118 = fcmp ugt float %113, %117
  br i1 %118, label %120, label %119

119:                                              ; preds = %106
  br label %120

120:                                              ; preds = %119, %106, %101
  %121 = phi ptr [ %114, %119 ], [ %114, %106 ], [ %102, %101 ]
  %.2.2 = phi i32 [ 0, %119 ], [ %.2.1, %106 ], [ %.2.1, %101 ]
  %122 = getelementptr inbounds i8, ptr %121, i64 88
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = icmp eq ptr %31, %123
  br i1 %124, label %125, label %139

125:                                              ; preds = %120
  %126 = getelementptr inbounds i8, ptr %121, i64 24
  %127 = load float, ptr %126, align 8, !tbaa !21
  %128 = getelementptr inbounds i8, ptr %121, i64 28
  %129 = load float, ptr %128, align 4, !tbaa !23
  %130 = getelementptr inbounds i8, ptr %121, i64 32
  %131 = load float, ptr %130, align 8, !tbaa !24
  %132 = call float @ddist(float noundef %46, float noundef %53, float noundef %60, float noundef %127, float noundef %129, float noundef %131) #5
  %133 = load ptr, ptr %63, align 8, !tbaa !13
  %134 = getelementptr inbounds i8, ptr %133, i64 20
  %135 = load float, ptr %134, align 4, !tbaa !25
  %136 = fmul float %135, %135
  %137 = fcmp ugt float %132, %136
  br i1 %137, label %139, label %138

138:                                              ; preds = %125
  br label %139

139:                                              ; preds = %138, %125, %120
  %.2.3 = phi i32 [ 0, %138 ], [ %.2.2, %125 ], [ %.2.2, %120 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader244, label %.preheader243, !llvm.loop !26

.lr.ph.split:                                     ; preds = %.preheader244, %170
  %indvars.iv283 = phi i64 [ %indvars.iv.next284, %170 ], [ 0, %.preheader244 ]
  %140 = load ptr, ptr %24, align 8, !tbaa !28
  %141 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv283
  %142 = load i32, ptr %141, align 4, !tbaa !12
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds ptr, ptr %140, i64 %143
  %145 = load ptr, ptr %144, align 8, !tbaa !13
  %.not225 = icmp eq ptr %145, %31
  br i1 %.not225, label %170, label %146

146:                                              ; preds = %.lr.ph.split
  %147 = getelementptr inbounds i8, ptr %145, i64 20
  %148 = load float, ptr %147, align 4, !tbaa !15
  %149 = getelementptr inbounds i8, ptr %145, i64 24
  %150 = load float, ptr %149, align 8, !tbaa !19
  %151 = getelementptr inbounds i8, ptr %145, i64 28
  %152 = load float, ptr %151, align 4, !tbaa !20
  %153 = call float @ddist(float noundef %46, float noundef %53, float noundef %60, float noundef %148, float noundef %150, float noundef %152) #5
  %154 = fpext float %153 to double
  %155 = getelementptr inbounds i8, ptr %145, i64 12
  %156 = load float, ptr %155, align 4, !tbaa !18
  %157 = fpext float %156 to double
  %158 = fadd double %157, 1.400000e+00
  %159 = fmul double %158, %158
  %160 = fcmp ogt double %159, %154
  br i1 %160, label %161, label %170

161:                                              ; preds = %146
  %162 = getelementptr inbounds i8, ptr %145, i64 120
  %163 = load float, ptr %162, align 8, !tbaa !30
  %164 = fpext float %163 to double
  %165 = fcmp olt double %164, 2.800000e+00
  br i1 %165, label %166, label %168

166:                                              ; preds = %161
  %167 = fadd float %.0216259, 1.000000e+00
  br label %.critedge

168:                                              ; preds = %161
  %169 = fadd float %.0213260, 1.000000e+00
  br label %.critedge

170:                                              ; preds = %146, %.lr.ph.split
  %indvars.iv.next284 = add nuw nsw i64 %indvars.iv283, 1
  %171 = load i32, ptr %5, align 4
  %172 = sext i32 %171 to i64
  %173 = icmp slt i64 %indvars.iv.next284, %172
  br i1 %173, label %.lr.ph.split, label %.critedge, !llvm.loop !31

.critedge:                                        ; preds = %170, %168, %166, %36, %.preheader244
  %.not224317 = phi i1 [ %.not224, %.preheader244 ], [ false, %36 ], [ %.not224, %166 ], [ %.not224, %168 ], [ %.not224, %170 ]
  %.1217.lcssa = phi float [ %.0216259, %.preheader244 ], [ %.0216259, %36 ], [ %167, %166 ], [ %.0216259, %168 ], [ %.0216259, %170 ]
  %.1214.lcssa = phi float [ %.0213260, %.preheader244 ], [ %.0213260, %36 ], [ %.0213260, %166 ], [ %169, %168 ], [ %.0213260, %170 ]
  %.lcssa245 = phi i1 [ true, %.preheader244 ], [ true, %36 ], [ false, %166 ], [ false, %168 ], [ true, %170 ]
  %or.cond.not = and i1 %.lcssa245, %.not224317
  %174 = zext i1 %or.cond.not to i32
  %spec.select = add nuw nsw i32 %.0197262, %174
  %indvars.iv.next287 = add nuw nsw i64 %indvars.iv286, 1
  %exitcond289.not = icmp eq i64 %indvars.iv.next287, 100
  br i1 %exitcond289.not, label %175, label %36, !llvm.loop !32

175:                                              ; preds = %.critedge
  %176 = load float, ptr %33, align 4, !tbaa !18
  %177 = fpext float %176 to double
  %178 = fadd double %177, 1.400000e+00
  %179 = fmul double %178, 0x402921FB54442D18
  %180 = fmul double %178, %179
  %181 = fdiv double %180, 1.000000e+02
  %182 = uitofp nneg i32 %spec.select to double
  %183 = fmul double %181, %182
  %184 = fptrunc double %183 to float
  store float %184, ptr %29, align 4, !tbaa !5
  %185 = getelementptr inbounds i8, ptr %31, i64 120
  %186 = load float, ptr %185, align 8, !tbaa !30
  %187 = fpext float %186 to double
  %188 = fcmp olt double %187, 2.800000e+00
  %. = select i1 %188, ptr %8, ptr %7
  %189 = load float, ptr %., align 4, !tbaa !5
  %190 = fadd float %189, %184
  store float %190, ptr %., align 4, !tbaa !5
  %191 = load float, ptr %9, align 4, !tbaa !33
  %192 = fadd float %191, %184
  store float %192, ptr %9, align 4, !tbaa !33
  %193 = fadd float %.1217.lcssa, %.1214.lcssa
  %194 = fdiv float %.1217.lcssa, %193
  %195 = getelementptr inbounds i8, ptr %31, i64 140
  store float %194, ptr %195, align 4, !tbaa !34
  %indvars.iv.next291 = add nuw nsw i64 %indvars.iv290, 1
  %196 = load i32, ptr %6, align 4, !tbaa !12
  %197 = sext i32 %196 to i64
  %198 = icmp slt i64 %indvars.iv.next291, %197
  br i1 %198, label %28, label %.preheader242, !llvm.loop !35

199:                                              ; preds = %.lr.ph278, %364
  %indvars.iv309 = phi i64 [ 0, %.lr.ph278 ], [ %indvars.iv.next310, %364 ]
  %200 = getelementptr inbounds ptr, ptr %15, i64 %indvars.iv309
  %201 = load ptr, ptr %200, align 8, !tbaa !13
  %202 = getelementptr inbounds i8, ptr %201, i64 20
  %203 = getelementptr inbounds i8, ptr %201, i64 12
  %204 = getelementptr inbounds i8, ptr %201, i64 24
  %205 = getelementptr inbounds i8, ptr %201, i64 28
  br label %206

206:                                              ; preds = %199, %.critedge3
  %indvars.iv305 = phi i64 [ 0, %199 ], [ %indvars.iv.next306, %.critedge3 ]
  %.2199276 = phi i32 [ 0, %199 ], [ %spec.select234, %.critedge3 ]
  %207 = load float, ptr %202, align 4, !tbaa !15
  %208 = fpext float %207 to double
  %.idx312 = mul i64 %indvars.iv305, 12
  %209 = getelementptr inbounds i8, ptr %20, i64 %.idx312
  %210 = load float, ptr %209, align 4, !tbaa !5
  %211 = fpext float %210 to double
  %212 = load float, ptr %203, align 4, !tbaa !18
  %213 = fpext float %212 to double
  %214 = fadd double %213, 2.200000e+00
  %215 = call double @llvm.fmuladd.f64(double %211, double %214, double %208)
  %216 = fptrunc double %215 to float
  %217 = load float, ptr %204, align 8, !tbaa !19
  %218 = fpext float %217 to double
  %219 = getelementptr inbounds i8, ptr %209, i64 4
  %220 = load float, ptr %219, align 4, !tbaa !5
  %221 = fpext float %220 to double
  %222 = call double @llvm.fmuladd.f64(double %221, double %214, double %218)
  %223 = fptrunc double %222 to float
  %224 = load float, ptr %205, align 4, !tbaa !20
  %225 = fpext float %224 to double
  %226 = getelementptr inbounds i8, ptr %209, i64 8
  %227 = load float, ptr %226, align 4, !tbaa !5
  %228 = fpext float %227 to double
  %229 = call double @llvm.fmuladd.f64(double %228, double %214, double %225)
  %230 = fptrunc double %229 to float
  br i1 %26, label %.preheader, label %.critedge3

.preheader241:                                    ; preds = %309
  %.not = icmp eq i32 %.5.3, 0
  %231 = load i32, ptr %5, align 4
  %232 = icmp sgt i32 %231, 0
  %or.cond233270 = and i1 %232, %.not
  br i1 %or.cond233270, label %.lr.ph272.split, label %.critedge3

.preheader:                                       ; preds = %206, %309
  %indvars.iv297 = phi i64 [ %indvars.iv.next298, %309 ], [ 0, %206 ]
  %.3268 = phi i32 [ %.5.3, %309 ], [ 1, %206 ]
  %233 = getelementptr inbounds ptr, ptr %2, i64 %indvars.iv297
  %234 = load ptr, ptr %233, align 8, !tbaa !13
  %235 = getelementptr inbounds i8, ptr %234, i64 64
  %236 = load ptr, ptr %235, align 8, !tbaa !13
  %237 = icmp eq ptr %201, %236
  br i1 %237, label %238, label %252

238:                                              ; preds = %.preheader
  %239 = getelementptr inbounds i8, ptr %234, i64 24
  %240 = load float, ptr %239, align 8, !tbaa !21
  %241 = getelementptr inbounds i8, ptr %234, i64 28
  %242 = load float, ptr %241, align 4, !tbaa !23
  %243 = getelementptr inbounds i8, ptr %234, i64 32
  %244 = load float, ptr %243, align 8, !tbaa !24
  %245 = call float @ddist(float noundef %216, float noundef %223, float noundef %230, float noundef %240, float noundef %242, float noundef %244) #5
  %246 = load ptr, ptr %233, align 8, !tbaa !13
  %247 = getelementptr inbounds i8, ptr %246, i64 20
  %248 = load float, ptr %247, align 4, !tbaa !25
  %249 = fmul float %248, %248
  %250 = fcmp ugt float %245, %249
  br i1 %250, label %252, label %251

251:                                              ; preds = %238
  br label %252

252:                                              ; preds = %.preheader, %251, %238
  %253 = phi ptr [ %246, %251 ], [ %246, %238 ], [ %234, %.preheader ]
  %.5 = phi i32 [ 0, %251 ], [ %.3268, %238 ], [ %.3268, %.preheader ]
  %254 = getelementptr inbounds i8, ptr %253, i64 72
  %255 = load ptr, ptr %254, align 8, !tbaa !13
  %256 = icmp eq ptr %201, %255
  br i1 %256, label %257, label %271

257:                                              ; preds = %252
  %258 = getelementptr inbounds i8, ptr %253, i64 24
  %259 = load float, ptr %258, align 8, !tbaa !21
  %260 = getelementptr inbounds i8, ptr %253, i64 28
  %261 = load float, ptr %260, align 4, !tbaa !23
  %262 = getelementptr inbounds i8, ptr %253, i64 32
  %263 = load float, ptr %262, align 8, !tbaa !24
  %264 = call float @ddist(float noundef %216, float noundef %223, float noundef %230, float noundef %259, float noundef %261, float noundef %263) #5
  %265 = load ptr, ptr %233, align 8, !tbaa !13
  %266 = getelementptr inbounds i8, ptr %265, i64 20
  %267 = load float, ptr %266, align 4, !tbaa !25
  %268 = fmul float %267, %267
  %269 = fcmp ugt float %264, %268
  br i1 %269, label %271, label %270

270:                                              ; preds = %257
  br label %271

271:                                              ; preds = %270, %257, %252
  %272 = phi ptr [ %265, %270 ], [ %265, %257 ], [ %253, %252 ]
  %.5.1 = phi i32 [ 0, %270 ], [ %.5, %257 ], [ %.5, %252 ]
  %273 = getelementptr inbounds i8, ptr %272, i64 80
  %274 = load ptr, ptr %273, align 8, !tbaa !13
  %275 = icmp eq ptr %201, %274
  br i1 %275, label %276, label %290

276:                                              ; preds = %271
  %277 = getelementptr inbounds i8, ptr %272, i64 24
  %278 = load float, ptr %277, align 8, !tbaa !21
  %279 = getelementptr inbounds i8, ptr %272, i64 28
  %280 = load float, ptr %279, align 4, !tbaa !23
  %281 = getelementptr inbounds i8, ptr %272, i64 32
  %282 = load float, ptr %281, align 8, !tbaa !24
  %283 = call float @ddist(float noundef %216, float noundef %223, float noundef %230, float noundef %278, float noundef %280, float noundef %282) #5
  %284 = load ptr, ptr %233, align 8, !tbaa !13
  %285 = getelementptr inbounds i8, ptr %284, i64 20
  %286 = load float, ptr %285, align 4, !tbaa !25
  %287 = fmul float %286, %286
  %288 = fcmp ugt float %283, %287
  br i1 %288, label %290, label %289

289:                                              ; preds = %276
  br label %290

290:                                              ; preds = %289, %276, %271
  %291 = phi ptr [ %284, %289 ], [ %284, %276 ], [ %272, %271 ]
  %.5.2 = phi i32 [ 0, %289 ], [ %.5.1, %276 ], [ %.5.1, %271 ]
  %292 = getelementptr inbounds i8, ptr %291, i64 88
  %293 = load ptr, ptr %292, align 8, !tbaa !13
  %294 = icmp eq ptr %201, %293
  br i1 %294, label %295, label %309

295:                                              ; preds = %290
  %296 = getelementptr inbounds i8, ptr %291, i64 24
  %297 = load float, ptr %296, align 8, !tbaa !21
  %298 = getelementptr inbounds i8, ptr %291, i64 28
  %299 = load float, ptr %298, align 4, !tbaa !23
  %300 = getelementptr inbounds i8, ptr %291, i64 32
  %301 = load float, ptr %300, align 8, !tbaa !24
  %302 = call float @ddist(float noundef %216, float noundef %223, float noundef %230, float noundef %297, float noundef %299, float noundef %301) #5
  %303 = load ptr, ptr %233, align 8, !tbaa !13
  %304 = getelementptr inbounds i8, ptr %303, i64 20
  %305 = load float, ptr %304, align 4, !tbaa !25
  %306 = fmul float %305, %305
  %307 = fcmp ugt float %302, %306
  br i1 %307, label %309, label %308

308:                                              ; preds = %295
  br label %309

309:                                              ; preds = %308, %295, %290
  %.5.3 = phi i32 [ 0, %308 ], [ %.5.2, %295 ], [ %.5.2, %290 ]
  %indvars.iv.next298 = add nuw nsw i64 %indvars.iv297, 1
  %exitcond301.not = icmp eq i64 %indvars.iv.next298, %wide.trip.count300
  br i1 %exitcond301.not, label %.preheader241, label %.preheader, !llvm.loop !36

.lr.ph272.split:                                  ; preds = %.preheader241, %331
  %indvars.iv302 = phi i64 [ %indvars.iv.next303, %331 ], [ 0, %.preheader241 ]
  %310 = load ptr, ptr %27, align 8, !tbaa !28
  %311 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv302
  %312 = load i32, ptr %311, align 4, !tbaa !12
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds ptr, ptr %310, i64 %313
  %315 = load ptr, ptr %314, align 8, !tbaa !13
  %.not223 = icmp eq ptr %315, %201
  br i1 %.not223, label %331, label %316

316:                                              ; preds = %.lr.ph272.split
  %317 = getelementptr inbounds i8, ptr %315, i64 20
  %318 = load float, ptr %317, align 4, !tbaa !15
  %319 = getelementptr inbounds i8, ptr %315, i64 24
  %320 = load float, ptr %319, align 8, !tbaa !19
  %321 = getelementptr inbounds i8, ptr %315, i64 28
  %322 = load float, ptr %321, align 4, !tbaa !20
  %323 = call float @ddist(float noundef %216, float noundef %223, float noundef %230, float noundef %318, float noundef %320, float noundef %322) #5
  %324 = fpext float %323 to double
  %325 = getelementptr inbounds i8, ptr %315, i64 12
  %326 = load float, ptr %325, align 4, !tbaa !18
  %327 = fpext float %326 to double
  %328 = fadd double %327, 2.200000e+00
  %329 = fmul double %328, %328
  %330 = fcmp ogt double %329, %324
  br i1 %330, label %.critedge3, label %331

331:                                              ; preds = %316, %.lr.ph272.split
  %indvars.iv.next303 = add nuw nsw i64 %indvars.iv302, 1
  %332 = load i32, ptr %5, align 4
  %333 = sext i32 %332 to i64
  %334 = icmp slt i64 %indvars.iv.next303, %333
  br i1 %334, label %.lr.ph272.split, label %.critedge3, !llvm.loop !37

.critedge3:                                       ; preds = %316, %331, %206, %.preheader241
  %.not328 = phi i1 [ %.not, %.preheader241 ], [ false, %206 ], [ %.not, %331 ], [ %.not, %316 ]
  %.lcssa = phi i1 [ true, %.preheader241 ], [ true, %206 ], [ false, %316 ], [ true, %331 ]
  %or.cond5.not = and i1 %.lcssa, %.not328
  %335 = zext i1 %or.cond5.not to i32
  %spec.select234 = add nuw nsw i32 %.2199276, %335
  %indvars.iv.next306 = add nuw nsw i64 %indvars.iv305, 1
  %exitcond308.not = icmp eq i64 %indvars.iv.next306, 100
  br i1 %exitcond308.not, label %336, label %206, !llvm.loop !38

336:                                              ; preds = %.critedge3
  %337 = load float, ptr %203, align 4, !tbaa !18
  %338 = fpext float %337 to double
  %339 = fadd double %338, 2.200000e+00
  %340 = fmul double %339, 0x402921FB54442D18
  %341 = fmul double %339, %340
  %342 = fdiv double %341, 1.000000e+02
  %343 = uitofp nneg i32 %spec.select234 to double
  %344 = fmul double %342, %343
  %345 = fptrunc double %344 to float
  %346 = getelementptr inbounds i8, ptr %201, i64 120
  %347 = load float, ptr %346, align 8, !tbaa !30
  %348 = fpext float %347 to double
  %349 = fcmp olt double %348, 2.800000e+00
  br i1 %349, label %364, label %350

350:                                              ; preds = %336
  %351 = getelementptr inbounds float, ptr %19, i64 %indvars.iv309
  %352 = load float, ptr %351, align 4, !tbaa !5
  %353 = fcmp ule float %352, %345
  %354 = fcmp ugt float %352, 1.000000e+01
  %or.cond235 = or i1 %353, %354
  %355 = fcmp ult float %345, 0.000000e+00
  %or.cond236 = or i1 %355, %or.cond235
  br i1 %or.cond236, label %364, label %356

356:                                              ; preds = %350
  %357 = load i32, ptr %13, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr %13, align 4, !tbaa !9
  %359 = getelementptr inbounds i8, ptr %201, i64 112
  store i32 1, ptr %359, align 8, !tbaa !39
  %360 = getelementptr inbounds i8, ptr %201, i64 132
  store float %352, ptr %360, align 4, !tbaa !40
  %361 = load float, ptr %351, align 4, !tbaa !5
  %362 = fsub float %345, %361
  %363 = getelementptr inbounds i8, ptr %201, i64 136
  store float %362, ptr %363, align 8, !tbaa !41
  br label %364

364:                                              ; preds = %350, %356, %336
  %.sink340 = phi ptr [ %12, %336 ], [ %11, %356 ], [ %11, %350 ]
  %365 = load float, ptr %.sink340, align 4, !tbaa !5
  %366 = fadd float %365, %345
  store float %366, ptr %.sink340, align 4, !tbaa !5
  %367 = load float, ptr %10, align 4, !tbaa !42
  %368 = fadd float %367, %345
  store float %368, ptr %10, align 4, !tbaa !42
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %369 = load i32, ptr %6, align 4, !tbaa !12
  %370 = sext i32 %369 to i64
  %371 = icmp slt i64 %indvars.iv.next310, %370
  br i1 %371, label %199, label %._crit_edge, !llvm.loop !43

._crit_edge:                                      ; preds = %364, %4, %.preheader242
  call void @free(ptr noundef %20) #5
  call void @free(ptr noundef %15) #5
  call void @free(ptr noundef %14) #5
  call void @my_free(ptr noundef %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  ret void
}

declare ptr @my_malloc(i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @get_points_on_sphere(i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4

declare void @my_free(ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 108}
!10 = !{!"s_desc", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !11, i64 108, !7, i64 112, !11, i64 192, !11, i64 196, !11, i64 200, !6, i64 204, !6, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !7, i64 232, !7, i64 487, !7, i64 742}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!16, !6, i64 20}
!16 = !{!"s_atm", !11, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !7, i64 32, !7, i64 37, !7, i64 44, !7, i64 60, !7, i64 76, !7, i64 79, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !7, i64 144, !7, i64 145, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !17, i64 164, !14, i64 168, !11, i64 176}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !6, i64 12}
!19 = !{!16, !6, i64 24}
!20 = !{!16, !6, i64 28}
!21 = !{!22, !6, i64 24}
!22 = !{!"s_vvertice", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !11, i64 36, !11, i64 40, !7, i64 44, !7, i64 64, !7, i64 96, !6, i64 108}
!23 = !{!22, !6, i64 28}
!24 = !{!22, !6, i64 32}
!25 = !{!22, !6, i64 20}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!29, !14, i64 24}
!29 = !{!"s_pdb", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !7, i64 116, !7, i64 199, !6, i64 700, !6, i64 704, !6, i64 708, !11, i64 712, !11, i64 716}
!30 = !{!16, !6, i64 120}
!31 = distinct !{!31, !27}
!32 = distinct !{!32, !27}
!33 = !{!10, !6, i64 76}
!34 = !{!16, !6, i64 140}
!35 = distinct !{!35, !27}
!36 = distinct !{!36, !27}
!37 = distinct !{!37, !27}
!38 = distinct !{!38, !27}
!39 = !{!16, !11, i64 112}
!40 = !{!16, !6, i64 132}
!41 = !{!16, !6, i64 136}
!42 = !{!10, !6, i64 80}
!43 = distinct !{!43, !27}


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