; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/EdgeDetector._e581785e (Z10followEdgeiiP12ImageContentP7Segmenti)

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

%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.Segment = type { %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ChainPoint *, std::allocator<ChainPoint *>>::_Vector_impl" }
%"struct.std::_Vector_base<ChainPoint *, std::allocator<ChainPoint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ChainPoint *, std::allocator<ChainPoint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ChainPoint *, std::allocator<ChainPoint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; 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: mustprogress uwtable
define dso_local void @_Z10followEdgeiiP12ImageContentP7Segmenti(i32 noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #1 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca float, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, 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 ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store i32 %0, ptr %6, align 4, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store float 1.000000e+02, ptr %11, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 1, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %37 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %37, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %38 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %38, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %39 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %39, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %40 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %40, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %41 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %41, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %42 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %42, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store i32 0, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 0, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store float 0.000000e+00, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store float 0.000000e+00, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store float 0.000000e+00, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store float 0.000000e+00, ptr %29, align 4, !tbaa !11
  br label %43

43:                                               ; preds = %532, %5
  store i32 0, ptr %12, align 4, !tbaa !5
  store float 0.000000e+00, ptr %28, align 4, !tbaa !11
  store i32 0, ptr %13, align 4, !tbaa !5
  store float 1.000000e+01, ptr %11, align 4, !tbaa !11
  %44 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %44, ptr %16, align 4, !tbaa !5
  %45 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %45, ptr %17, align 4, !tbaa !5
  %46 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %46, ptr %18, align 4, !tbaa !5
  %47 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %47, ptr %19, align 4, !tbaa !5
  %48 = load float, ptr %26, align 4, !tbaa !11
  store float %48, ptr %25, align 4, !tbaa !11
  %49 = load float, ptr %29, align 4, !tbaa !11
  store float %49, ptr %26, align 4, !tbaa !11
  %50 = load ptr, ptr %8, align 8, !tbaa !9
  %51 = getelementptr inbounds %class.ImageContent, ptr %50, i32 0, i32 4
  %52 = load ptr, ptr %51, align 8, !tbaa !13
  %53 = load i32, ptr %15, align 4, !tbaa !5
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds ptr, ptr %52, i64 %54
  %56 = load ptr, ptr %55, align 8, !tbaa !9
  %57 = load i32, ptr %14, align 4, !tbaa !5
  %58 = add nsw i32 %57, 1
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds float, ptr %56, i64 %59
  %61 = load float, ptr %60, align 4, !tbaa !11
  %62 = fcmp ogt float %61, 0.000000e+00
  br i1 %62, label %63, label %99

63:                                               ; preds = %43
  %64 = load i32, ptr %15, align 4, !tbaa !5
  %65 = load i32, ptr %17, align 4, !tbaa !5
  %66 = sub nsw i32 %64, %65
  %67 = sitofp i32 %66 to float
  store float %67, ptr %24, align 4, !tbaa !11
  %68 = load i32, ptr %14, align 4, !tbaa !5
  %69 = add nsw i32 %68, 1
  %70 = load i32, ptr %16, align 4, !tbaa !5
  %71 = sub nsw i32 %69, %70
  %72 = sitofp i32 %71 to float
  store float %72, ptr %23, align 4, !tbaa !11
  %73 = load float, ptr %24, align 4, !tbaa !11
  %74 = load float, ptr %23, align 4, !tbaa !11
  %75 = call noundef float @_ZSt5atan2ff(float noundef %73, float noundef %74)
  store float %75, ptr %27, align 4, !tbaa !11
  %76 = load float, ptr %27, align 4, !tbaa !11
  %77 = load float, ptr %25, align 4, !tbaa !11
  %78 = fsub float %76, %77
  %79 = call noundef float @_ZSt4fabsf(float noundef %78)
  store float %79, ptr %28, align 4, !tbaa !11
  %80 = load float, ptr %28, align 4, !tbaa !11
  %81 = fpext float %80 to double
  %82 = fcmp ogt double %81, 0x400921FB54442D18
  br i1 %82, label %83, label %88

83:                                               ; preds = %63
  %84 = load float, ptr %28, align 4, !tbaa !11
  %85 = fpext float %84 to double
  %86 = fsub double 0x401921FB544486E0, %85
  %87 = fptrunc double %86 to float
  store float %87, ptr %28, align 4, !tbaa !11
  br label %88

88:                                               ; preds = %83, %63
  %89 = load float, ptr %28, align 4, !tbaa !11
  %90 = load float, ptr %11, align 4, !tbaa !11
  %91 = fcmp olt float %89, %90
  br i1 %91, label %92, label %98

92:                                               ; preds = %88
  %93 = load float, ptr %28, align 4, !tbaa !11
  store float %93, ptr %11, align 4, !tbaa !11
  %94 = load float, ptr %27, align 4, !tbaa !11
  store float %94, ptr %29, align 4, !tbaa !11
  %95 = load i32, ptr %14, align 4, !tbaa !5
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr %20, align 4, !tbaa !5
  %97 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %97, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %98

98:                                               ; preds = %92, %88
  br label %99

99:                                               ; preds = %98, %43
  %100 = load ptr, ptr %8, align 8, !tbaa !9
  %101 = getelementptr inbounds %class.ImageContent, ptr %100, i32 0, i32 4
  %102 = load ptr, ptr %101, align 8, !tbaa !13
  %103 = load i32, ptr %15, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds ptr, ptr %102, i64 %105
  %107 = load ptr, ptr %106, align 8, !tbaa !9
  %108 = load i32, ptr %14, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds float, ptr %107, i64 %110
  %112 = load float, ptr %111, align 4, !tbaa !11
  %113 = fcmp ogt float %112, 0.000000e+00
  br i1 %113, label %114, label %152

114:                                              ; preds = %99
  %115 = load i32, ptr %15, align 4, !tbaa !5
  %116 = add nsw i32 %115, 1
  %117 = load i32, ptr %17, align 4, !tbaa !5
  %118 = sub nsw i32 %116, %117
  %119 = sitofp i32 %118 to float
  store float %119, ptr %24, align 4, !tbaa !11
  %120 = load i32, ptr %14, align 4, !tbaa !5
  %121 = add nsw i32 %120, 1
  %122 = load i32, ptr %16, align 4, !tbaa !5
  %123 = sub nsw i32 %121, %122
  %124 = sitofp i32 %123 to float
  store float %124, ptr %23, align 4, !tbaa !11
  %125 = load float, ptr %24, align 4, !tbaa !11
  %126 = load float, ptr %23, align 4, !tbaa !11
  %127 = call noundef float @_ZSt5atan2ff(float noundef %125, float noundef %126)
  store float %127, ptr %27, align 4, !tbaa !11
  %128 = load float, ptr %27, align 4, !tbaa !11
  %129 = load float, ptr %25, align 4, !tbaa !11
  %130 = fsub float %128, %129
  %131 = call noundef float @_ZSt4fabsf(float noundef %130)
  store float %131, ptr %28, align 4, !tbaa !11
  %132 = load float, ptr %28, align 4, !tbaa !11
  %133 = fpext float %132 to double
  %134 = fcmp ogt double %133, 0x400921FB54442D18
  br i1 %134, label %135, label %140

135:                                              ; preds = %114
  %136 = load float, ptr %28, align 4, !tbaa !11
  %137 = fpext float %136 to double
  %138 = fsub double 0x401921FB544486E0, %137
  %139 = fptrunc double %138 to float
  store float %139, ptr %28, align 4, !tbaa !11
  br label %140

140:                                              ; preds = %135, %114
  %141 = load float, ptr %28, align 4, !tbaa !11
  %142 = load float, ptr %11, align 4, !tbaa !11
  %143 = fcmp olt float %141, %142
  br i1 %143, label %144, label %151

144:                                              ; preds = %140
  %145 = load float, ptr %28, align 4, !tbaa !11
  store float %145, ptr %11, align 4, !tbaa !11
  %146 = load float, ptr %27, align 4, !tbaa !11
  store float %146, ptr %29, align 4, !tbaa !11
  %147 = load i32, ptr %14, align 4, !tbaa !5
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %20, align 4, !tbaa !5
  %149 = load i32, ptr %15, align 4, !tbaa !5
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %144, %140
  br label %152

152:                                              ; preds = %151, %99
  %153 = load ptr, ptr %8, align 8, !tbaa !9
  %154 = getelementptr inbounds %class.ImageContent, ptr %153, i32 0, i32 4
  %155 = load ptr, ptr %154, align 8, !tbaa !13
  %156 = load i32, ptr %15, align 4, !tbaa !5
  %157 = add nsw i32 %156, 1
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds ptr, ptr %155, i64 %158
  %160 = load ptr, ptr %159, align 8, !tbaa !9
  %161 = load i32, ptr %14, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds float, ptr %160, i64 %162
  %164 = load float, ptr %163, align 4, !tbaa !11
  %165 = fcmp ogt float %164, 0.000000e+00
  br i1 %165, label %166, label %202

166:                                              ; preds = %152
  %167 = load i32, ptr %15, align 4, !tbaa !5
  %168 = add nsw i32 %167, 1
  %169 = load i32, ptr %17, align 4, !tbaa !5
  %170 = sub nsw i32 %168, %169
  %171 = sitofp i32 %170 to float
  store float %171, ptr %24, align 4, !tbaa !11
  %172 = load i32, ptr %14, align 4, !tbaa !5
  %173 = load i32, ptr %16, align 4, !tbaa !5
  %174 = sub nsw i32 %172, %173
  %175 = sitofp i32 %174 to float
  store float %175, ptr %23, align 4, !tbaa !11
  %176 = load float, ptr %24, align 4, !tbaa !11
  %177 = load float, ptr %23, align 4, !tbaa !11
  %178 = call noundef float @_ZSt5atan2ff(float noundef %176, float noundef %177)
  store float %178, ptr %27, align 4, !tbaa !11
  %179 = load float, ptr %27, align 4, !tbaa !11
  %180 = load float, ptr %25, align 4, !tbaa !11
  %181 = fsub float %179, %180
  %182 = call noundef float @_ZSt4fabsf(float noundef %181)
  store float %182, ptr %28, align 4, !tbaa !11
  %183 = load float, ptr %28, align 4, !tbaa !11
  %184 = fpext float %183 to double
  %185 = fcmp ogt double %184, 0x400921FB54442D18
  br i1 %185, label %186, label %191

186:                                              ; preds = %166
  %187 = load float, ptr %28, align 4, !tbaa !11
  %188 = fpext float %187 to double
  %189 = fsub double 0x401921FB544486E0, %188
  %190 = fptrunc double %189 to float
  store float %190, ptr %28, align 4, !tbaa !11
  br label %191

191:                                              ; preds = %186, %166
  %192 = load float, ptr %28, align 4, !tbaa !11
  %193 = load float, ptr %11, align 4, !tbaa !11
  %194 = fcmp olt float %192, %193
  br i1 %194, label %195, label %201

195:                                              ; preds = %191
  %196 = load float, ptr %28, align 4, !tbaa !11
  store float %196, ptr %11, align 4, !tbaa !11
  %197 = load float, ptr %27, align 4, !tbaa !11
  store float %197, ptr %29, align 4, !tbaa !11
  %198 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %198, ptr %20, align 4, !tbaa !5
  %199 = load i32, ptr %15, align 4, !tbaa !5
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %201

201:                                              ; preds = %195, %191
  br label %202

202:                                              ; preds = %201, %152
  %203 = load ptr, ptr %8, align 8, !tbaa !9
  %204 = getelementptr inbounds %class.ImageContent, ptr %203, i32 0, i32 4
  %205 = load ptr, ptr %204, align 8, !tbaa !13
  %206 = load i32, ptr %15, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds ptr, ptr %205, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !9
  %211 = load i32, ptr %14, align 4, !tbaa !5
  %212 = sub nsw i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds float, ptr %210, i64 %213
  %215 = load float, ptr %214, align 4, !tbaa !11
  %216 = fcmp ogt float %215, 0.000000e+00
  br i1 %216, label %217, label %255

217:                                              ; preds = %202
  %218 = load i32, ptr %15, align 4, !tbaa !5
  %219 = add nsw i32 %218, 1
  %220 = load i32, ptr %17, align 4, !tbaa !5
  %221 = sub nsw i32 %219, %220
  %222 = sitofp i32 %221 to float
  store float %222, ptr %24, align 4, !tbaa !11
  %223 = load i32, ptr %14, align 4, !tbaa !5
  %224 = sub nsw i32 %223, 1
  %225 = load i32, ptr %16, align 4, !tbaa !5
  %226 = sub nsw i32 %224, %225
  %227 = sitofp i32 %226 to float
  store float %227, ptr %23, align 4, !tbaa !11
  %228 = load float, ptr %24, align 4, !tbaa !11
  %229 = load float, ptr %23, align 4, !tbaa !11
  %230 = call noundef float @_ZSt5atan2ff(float noundef %228, float noundef %229)
  store float %230, ptr %27, align 4, !tbaa !11
  %231 = load float, ptr %27, align 4, !tbaa !11
  %232 = load float, ptr %25, align 4, !tbaa !11
  %233 = fsub float %231, %232
  %234 = call noundef float @_ZSt4fabsf(float noundef %233)
  store float %234, ptr %28, align 4, !tbaa !11
  %235 = load float, ptr %28, align 4, !tbaa !11
  %236 = fpext float %235 to double
  %237 = fcmp ogt double %236, 0x400921FB54442D18
  br i1 %237, label %238, label %243

238:                                              ; preds = %217
  %239 = load float, ptr %28, align 4, !tbaa !11
  %240 = fpext float %239 to double
  %241 = fsub double 0x401921FB544486E0, %240
  %242 = fptrunc double %241 to float
  store float %242, ptr %28, align 4, !tbaa !11
  br label %243

243:                                              ; preds = %238, %217
  %244 = load float, ptr %28, align 4, !tbaa !11
  %245 = load float, ptr %11, align 4, !tbaa !11
  %246 = fcmp olt float %244, %245
  br i1 %246, label %247, label %254

247:                                              ; preds = %243
  %248 = load float, ptr %28, align 4, !tbaa !11
  store float %248, ptr %11, align 4, !tbaa !11
  %249 = load float, ptr %27, align 4, !tbaa !11
  store float %249, ptr %29, align 4, !tbaa !11
  %250 = load i32, ptr %14, align 4, !tbaa !5
  %251 = sub nsw i32 %250, 1
  store i32 %251, ptr %20, align 4, !tbaa !5
  %252 = load i32, ptr %15, align 4, !tbaa !5
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %254

254:                                              ; preds = %247, %243
  br label %255

255:                                              ; preds = %254, %202
  %256 = load ptr, ptr %8, align 8, !tbaa !9
  %257 = getelementptr inbounds %class.ImageContent, ptr %256, i32 0, i32 4
  %258 = load ptr, ptr %257, align 8, !tbaa !13
  %259 = load i32, ptr %15, align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds ptr, ptr %258, i64 %260
  %262 = load ptr, ptr %261, align 8, !tbaa !9
  %263 = load i32, ptr %14, align 4, !tbaa !5
  %264 = sub nsw i32 %263, 1
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds float, ptr %262, i64 %265
  %267 = load float, ptr %266, align 4, !tbaa !11
  %268 = fcmp ogt float %267, 0.000000e+00
  br i1 %268, label %269, label %305

269:                                              ; preds = %255
  %270 = load i32, ptr %15, align 4, !tbaa !5
  %271 = load i32, ptr %17, align 4, !tbaa !5
  %272 = sub nsw i32 %270, %271
  %273 = sitofp i32 %272 to float
  store float %273, ptr %24, align 4, !tbaa !11
  %274 = load i32, ptr %14, align 4, !tbaa !5
  %275 = sub nsw i32 %274, 1
  %276 = load i32, ptr %16, align 4, !tbaa !5
  %277 = sub nsw i32 %275, %276
  %278 = sitofp i32 %277 to float
  store float %278, ptr %23, align 4, !tbaa !11
  %279 = load float, ptr %24, align 4, !tbaa !11
  %280 = load float, ptr %23, align 4, !tbaa !11
  %281 = call noundef float @_ZSt5atan2ff(float noundef %279, float noundef %280)
  store float %281, ptr %27, align 4, !tbaa !11
  %282 = load float, ptr %27, align 4, !tbaa !11
  %283 = load float, ptr %25, align 4, !tbaa !11
  %284 = fsub float %282, %283
  %285 = call noundef float @_ZSt4fabsf(float noundef %284)
  store float %285, ptr %28, align 4, !tbaa !11
  %286 = load float, ptr %28, align 4, !tbaa !11
  %287 = fpext float %286 to double
  %288 = fcmp ogt double %287, 0x400921FB54442D18
  br i1 %288, label %289, label %294

289:                                              ; preds = %269
  %290 = load float, ptr %28, align 4, !tbaa !11
  %291 = fpext float %290 to double
  %292 = fsub double 0x401921FB544486E0, %291
  %293 = fptrunc double %292 to float
  store float %293, ptr %28, align 4, !tbaa !11
  br label %294

294:                                              ; preds = %289, %269
  %295 = load float, ptr %28, align 4, !tbaa !11
  %296 = load float, ptr %11, align 4, !tbaa !11
  %297 = fcmp olt float %295, %296
  br i1 %297, label %298, label %304

298:                                              ; preds = %294
  %299 = load float, ptr %28, align 4, !tbaa !11
  store float %299, ptr %11, align 4, !tbaa !11
  %300 = load float, ptr %27, align 4, !tbaa !11
  store float %300, ptr %29, align 4, !tbaa !11
  %301 = load i32, ptr %14, align 4, !tbaa !5
  %302 = sub nsw i32 %301, 1
  store i32 %302, ptr %20, align 4, !tbaa !5
  %303 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %303, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %304

304:                                              ; preds = %298, %294
  br label %305

305:                                              ; preds = %304, %255
  %306 = load ptr, ptr %8, align 8, !tbaa !9
  %307 = getelementptr inbounds %class.ImageContent, ptr %306, i32 0, i32 4
  %308 = load ptr, ptr %307, align 8, !tbaa !13
  %309 = load i32, ptr %15, align 4, !tbaa !5
  %310 = sub nsw i32 %309, 1
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds ptr, ptr %308, i64 %311
  %313 = load ptr, ptr %312, align 8, !tbaa !9
  %314 = load i32, ptr %14, align 4, !tbaa !5
  %315 = sub nsw i32 %314, 1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds float, ptr %313, i64 %316
  %318 = load float, ptr %317, align 4, !tbaa !11
  %319 = fcmp ogt float %318, 0.000000e+00
  br i1 %319, label %320, label %358

320:                                              ; preds = %305
  %321 = load i32, ptr %15, align 4, !tbaa !5
  %322 = sub nsw i32 %321, 1
  %323 = load i32, ptr %17, align 4, !tbaa !5
  %324 = sub nsw i32 %322, %323
  %325 = sitofp i32 %324 to float
  store float %325, ptr %24, align 4, !tbaa !11
  %326 = load i32, ptr %14, align 4, !tbaa !5
  %327 = sub nsw i32 %326, 1
  %328 = load i32, ptr %16, align 4, !tbaa !5
  %329 = sub nsw i32 %327, %328
  %330 = sitofp i32 %329 to float
  store float %330, ptr %23, align 4, !tbaa !11
  %331 = load float, ptr %24, align 4, !tbaa !11
  %332 = load float, ptr %23, align 4, !tbaa !11
  %333 = call noundef float @_ZSt5atan2ff(float noundef %331, float noundef %332)
  store float %333, ptr %27, align 4, !tbaa !11
  %334 = load float, ptr %27, align 4, !tbaa !11
  %335 = load float, ptr %25, align 4, !tbaa !11
  %336 = fsub float %334, %335
  %337 = call noundef float @_ZSt4fabsf(float noundef %336)
  store float %337, ptr %28, align 4, !tbaa !11
  %338 = load float, ptr %28, align 4, !tbaa !11
  %339 = fpext float %338 to double
  %340 = fcmp ogt double %339, 0x400921FB54442D18
  br i1 %340, label %341, label %346

341:                                              ; preds = %320
  %342 = load float, ptr %28, align 4, !tbaa !11
  %343 = fpext float %342 to double
  %344 = fsub double 0x401921FB544486E0, %343
  %345 = fptrunc double %344 to float
  store float %345, ptr %28, align 4, !tbaa !11
  br label %346

346:                                              ; preds = %341, %320
  %347 = load float, ptr %28, align 4, !tbaa !11
  %348 = load float, ptr %11, align 4, !tbaa !11
  %349 = fcmp olt float %347, %348
  br i1 %349, label %350, label %357

350:                                              ; preds = %346
  %351 = load float, ptr %28, align 4, !tbaa !11
  store float %351, ptr %11, align 4, !tbaa !11
  %352 = load float, ptr %27, align 4, !tbaa !11
  store float %352, ptr %29, align 4, !tbaa !11
  %353 = load i32, ptr %14, align 4, !tbaa !5
  %354 = sub nsw i32 %353, 1
  store i32 %354, ptr %20, align 4, !tbaa !5
  %355 = load i32, ptr %15, align 4, !tbaa !5
  %356 = sub nsw i32 %355, 1
  store i32 %356, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %357

357:                                              ; preds = %350, %346
  br label %358

358:                                              ; preds = %357, %305
  %359 = load ptr, ptr %8, align 8, !tbaa !9
  %360 = getelementptr inbounds %class.ImageContent, ptr %359, i32 0, i32 4
  %361 = load ptr, ptr %360, align 8, !tbaa !13
  %362 = load i32, ptr %15, align 4, !tbaa !5
  %363 = sub nsw i32 %362, 1
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds ptr, ptr %361, i64 %364
  %366 = load ptr, ptr %365, align 8, !tbaa !9
  %367 = load i32, ptr %14, align 4, !tbaa !5
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds float, ptr %366, i64 %368
  %370 = load float, ptr %369, align 4, !tbaa !11
  %371 = fcmp ogt float %370, 0.000000e+00
  br i1 %371, label %372, label %408

372:                                              ; preds = %358
  %373 = load i32, ptr %15, align 4, !tbaa !5
  %374 = sub nsw i32 %373, 1
  %375 = load i32, ptr %17, align 4, !tbaa !5
  %376 = sub nsw i32 %374, %375
  %377 = sitofp i32 %376 to float
  store float %377, ptr %24, align 4, !tbaa !11
  %378 = load i32, ptr %14, align 4, !tbaa !5
  %379 = load i32, ptr %16, align 4, !tbaa !5
  %380 = sub nsw i32 %378, %379
  %381 = sitofp i32 %380 to float
  store float %381, ptr %23, align 4, !tbaa !11
  %382 = load float, ptr %24, align 4, !tbaa !11
  %383 = load float, ptr %23, align 4, !tbaa !11
  %384 = call noundef float @_ZSt5atan2ff(float noundef %382, float noundef %383)
  store float %384, ptr %27, align 4, !tbaa !11
  %385 = load float, ptr %27, align 4, !tbaa !11
  %386 = load float, ptr %25, align 4, !tbaa !11
  %387 = fsub float %385, %386
  %388 = call noundef float @_ZSt4fabsf(float noundef %387)
  store float %388, ptr %28, align 4, !tbaa !11
  %389 = load float, ptr %28, align 4, !tbaa !11
  %390 = fpext float %389 to double
  %391 = fcmp ogt double %390, 0x400921FB54442D18
  br i1 %391, label %392, label %397

392:                                              ; preds = %372
  %393 = load float, ptr %28, align 4, !tbaa !11
  %394 = fpext float %393 to double
  %395 = fsub double 0x401921FB544486E0, %394
  %396 = fptrunc double %395 to float
  store float %396, ptr %28, align 4, !tbaa !11
  br label %397

397:                                              ; preds = %392, %372
  %398 = load float, ptr %28, align 4, !tbaa !11
  %399 = load float, ptr %11, align 4, !tbaa !11
  %400 = fcmp olt float %398, %399
  br i1 %400, label %401, label %407

401:                                              ; preds = %397
  %402 = load float, ptr %28, align 4, !tbaa !11
  store float %402, ptr %11, align 4, !tbaa !11
  %403 = load float, ptr %27, align 4, !tbaa !11
  store float %403, ptr %29, align 4, !tbaa !11
  %404 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %404, ptr %20, align 4, !tbaa !5
  %405 = load i32, ptr %15, align 4, !tbaa !5
  %406 = sub nsw i32 %405, 1
  store i32 %406, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %407

407:                                              ; preds = %401, %397
  br label %408

408:                                              ; preds = %407, %358
  %409 = load ptr, ptr %8, align 8, !tbaa !9
  %410 = getelementptr inbounds %class.ImageContent, ptr %409, i32 0, i32 4
  %411 = load ptr, ptr %410, align 8, !tbaa !13
  %412 = load i32, ptr %15, align 4, !tbaa !5
  %413 = sub nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds ptr, ptr %411, i64 %414
  %416 = load ptr, ptr %415, align 8, !tbaa !9
  %417 = load i32, ptr %14, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds float, ptr %416, i64 %419
  %421 = load float, ptr %420, align 4, !tbaa !11
  %422 = fcmp ogt float %421, 0.000000e+00
  br i1 %422, label %423, label %461

423:                                              ; preds = %408
  %424 = load i32, ptr %15, align 4, !tbaa !5
  %425 = sub nsw i32 %424, 1
  %426 = load i32, ptr %17, align 4, !tbaa !5
  %427 = sub nsw i32 %425, %426
  %428 = sitofp i32 %427 to float
  store float %428, ptr %24, align 4, !tbaa !11
  %429 = load i32, ptr %14, align 4, !tbaa !5
  %430 = add nsw i32 %429, 1
  %431 = load i32, ptr %16, align 4, !tbaa !5
  %432 = sub nsw i32 %430, %431
  %433 = sitofp i32 %432 to float
  store float %433, ptr %23, align 4, !tbaa !11
  %434 = load float, ptr %24, align 4, !tbaa !11
  %435 = load float, ptr %23, align 4, !tbaa !11
  %436 = call noundef float @_ZSt5atan2ff(float noundef %434, float noundef %435)
  store float %436, ptr %27, align 4, !tbaa !11
  %437 = load float, ptr %27, align 4, !tbaa !11
  %438 = load float, ptr %25, align 4, !tbaa !11
  %439 = fsub float %437, %438
  %440 = call noundef float @_ZSt4fabsf(float noundef %439)
  store float %440, ptr %28, align 4, !tbaa !11
  %441 = load float, ptr %28, align 4, !tbaa !11
  %442 = fpext float %441 to double
  %443 = fcmp ogt double %442, 0x400921FB54442D18
  br i1 %443, label %444, label %449

444:                                              ; preds = %423
  %445 = load float, ptr %28, align 4, !tbaa !11
  %446 = fpext float %445 to double
  %447 = fsub double 0x401921FB544486E0, %446
  %448 = fptrunc double %447 to float
  store float %448, ptr %28, align 4, !tbaa !11
  br label %449

449:                                              ; preds = %444, %423
  %450 = load float, ptr %28, align 4, !tbaa !11
  %451 = load float, ptr %11, align 4, !tbaa !11
  %452 = fcmp olt float %450, %451
  br i1 %452, label %453, label %460

453:                                              ; preds = %449
  %454 = load float, ptr %28, align 4, !tbaa !11
  store float %454, ptr %11, align 4, !tbaa !11
  %455 = load float, ptr %27, align 4, !tbaa !11
  store float %455, ptr %29, align 4, !tbaa !11
  %456 = load i32, ptr %14, align 4, !tbaa !5
  %457 = add nsw i32 %456, 1
  store i32 %457, ptr %20, align 4, !tbaa !5
  %458 = load i32, ptr %15, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 1
  store i32 %459, ptr %21, align 4, !tbaa !5
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %460

460:                                              ; preds = %453, %449
  br label %461

461:                                              ; preds = %460, %408
  %462 = load i32, ptr %13, align 4, !tbaa !5
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %531

464:                                              ; preds = %461
  %465 = load ptr, ptr %8, align 8, !tbaa !9
  %466 = getelementptr inbounds %class.ImageContent, ptr %465, i32 0, i32 4
  %467 = load ptr, ptr %466, align 8, !tbaa !13
  %468 = load i32, ptr %15, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds ptr, ptr %467, i64 %469
  %471 = load ptr, ptr %470, align 8, !tbaa !9
  %472 = load i32, ptr %14, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds float, ptr %471, i64 %473
  store float 0.000000e+00, ptr %474, align 4, !tbaa !11
  %475 = load i32, ptr %20, align 4, !tbaa !5
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %477, label %530

477:                                              ; preds = %464
  %478 = load i32, ptr %20, align 4, !tbaa !5
  %479 = load ptr, ptr %8, align 8, !tbaa !9
  %480 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %479)
  %481 = icmp ult i32 %478, %480
  br i1 %481, label %482, label %530

482:                                              ; preds = %477
  %483 = load i32, ptr %21, align 4, !tbaa !5
  %484 = icmp sgt i32 %483, 0
  br i1 %484, label %485, label %530

485:                                              ; preds = %482
  %486 = load i32, ptr %21, align 4, !tbaa !5
  %487 = load ptr, ptr %8, align 8, !tbaa !9
  %488 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %487)
  %489 = icmp ult i32 %486, %488
  br i1 %489, label %490, label %530

490:                                              ; preds = %485
  store i32 1, ptr %12, align 4, !tbaa !5
  %491 = load i32, ptr %10, align 4, !tbaa !5
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %493, label %505

493:                                              ; preds = %490
  %494 = load ptr, ptr %9, align 8, !tbaa !9
  %495 = getelementptr inbounds %class.Segment, ptr %494, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %496 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #7
  %497 = load i32, ptr %20, align 4, !tbaa !5
  %498 = load i32, ptr %21, align 4, !tbaa !5
  %499 = load float, ptr %29, align 4, !tbaa !11
  invoke void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16) %496, i32 noundef %497, i32 noundef %498, float noundef %499)
          to label %500 unwind label %501

500:                                              ; preds = %493
  store ptr %496, ptr %30, align 8, !tbaa !9
  call void @_ZNSt6vectorIP10ChainPointSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %495, ptr noundef nonnull align 8 dereferenceable(8) %30)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %525

501:                                              ; preds = %493
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %31, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %496, i64 noundef 16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %536

505:                                              ; preds = %490
  %506 = load ptr, ptr %9, align 8, !tbaa !9
  %507 = getelementptr inbounds %class.Segment, ptr %506, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %508 = load ptr, ptr %9, align 8, !tbaa !9
  %509 = getelementptr inbounds %class.Segment, ptr %508, i32 0, i32 0
  %510 = call ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %509) #6
  %511 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %34, i32 0, i32 0
  store ptr %510, ptr %511, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKP10ChainPointSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  %512 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #7
  %513 = load i32, ptr %20, align 4, !tbaa !5
  %514 = load i32, ptr %21, align 4, !tbaa !5
  %515 = load float, ptr %29, align 4, !tbaa !11
  invoke void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16) %512, i32 noundef %513, i32 noundef %514, float noundef %515)
          to label %516 unwind label %521

516:                                              ; preds = %505
  store ptr %512, ptr %35, align 8, !tbaa !9
  %517 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %33, i32 0, i32 0
  %518 = load ptr, ptr %517, align 8
  %519 = call ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %507, ptr %518, ptr noundef nonnull align 8 dereferenceable(8) %35)
  %520 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %519, ptr %520, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %525

521:                                              ; preds = %505
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %31, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %512, i64 noundef 16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %536

525:                                              ; preds = %516, %500
  %526 = load i32, ptr %21, align 4, !tbaa !5
  store i32 %526, ptr %15, align 4, !tbaa !5
  %527 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %527, ptr %14, align 4, !tbaa !5
  %528 = load i32, ptr %22, align 4, !tbaa !5
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %22, align 4, !tbaa !5
  br label %530

530:                                              ; preds = %525, %485, %482, %477, %464
  br label %531

531:                                              ; preds = %530, %461
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr %12, align 4, !tbaa !5
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %43, label %535, !llvm.loop !15

535:                                              ; preds = %532
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  ret void

536:                                              ; preds = %521, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %537

537:                                              ; preds = %536
  %538 = load ptr, ptr %31, align 8
  %539 = load i32, ptr %32, align 4
  %540 = insertvalue { ptr, i32 } poison, ptr %538, 0
  %541 = insertvalue { ptr, i32 } %540, i32 %539, 1
  resume { ptr, i32 } %541
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5atan2ff(float noundef, float noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP10ChainPointSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef) unnamed_addr #4 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKP10ChainPointSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin allocsize(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 #4 = { mustprogress 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 #5 = { nobuiltin 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 #6 = { nounwind }
attributes #7 = { builtin allocsize(0) }
attributes #8 = { builtin 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 16}
!14 = !{!"_ZTS12ImageContent", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


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

%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

; 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: mustprogress uwtable
define dso_local void @_Z10followEdgeiiP12ImageContentP7Segmenti(i32 noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca ptr, align 8
  %10 = getelementptr inbounds i8, ptr %2, i64 16
  %.not247 = icmp eq i32 %4, 0
  br label %11

11:                                               ; preds = %.backedge, %5
  %.0228 = phi i32 [ %0, %5 ], [ %.8223254, %.backedge ]
  %.0226 = phi i32 [ %1, %5 ], [ %.8214256, %.backedge ]
  %.0225 = phi i32 [ %0, %5 ], [ %.0228, %.backedge ]
  %.0224 = phi i32 [ %1, %5 ], [ %.0226, %.backedge ]
  %.0215 = phi i32 [ 0, %5 ], [ %.8223254, %.backedge ]
  %.0206 = phi i32 [ 0, %5 ], [ %.8214256, %.backedge ]
  %.0203 = phi float [ 0.000000e+00, %5 ], [ %.0188, %.backedge ]
  %.0188 = phi float [ 0.000000e+00, %5 ], [ %.8258, %.backedge ]
  %12 = load ptr, ptr %10, align 8, !tbaa !5
  %13 = sext i32 %.0226 to i64
  %14 = getelementptr inbounds ptr, ptr %12, i64 %13
  %15 = load ptr, ptr %14, align 8, !tbaa !11
  %16 = add nsw i32 %.0228, 1
  %17 = sext i32 %16 to i64
  %18 = getelementptr inbounds float, ptr %15, i64 %17
  %19 = load float, ptr %18, align 4, !tbaa !12
  %20 = fcmp ogt float %19, 0.000000e+00
  br i1 %20, label %21, label %35

21:                                               ; preds = %11
  %22 = sub nsw i32 %.0226, %.0224
  %23 = sitofp i32 %22 to float
  %24 = sub nsw i32 %16, %.0225
  %25 = sitofp i32 %24 to float
  %26 = call noundef float @_ZSt5atan2ff(float noundef %23, float noundef %25)
  %27 = fsub float %26, %.0203
  %28 = call noundef float @_ZSt4fabsf(float noundef %27)
  %29 = fpext float %28 to double
  %30 = fcmp ogt double %29, 0x400921FB54442D18
  %31 = fsub double 0x401921FB544486E0, %29
  %32 = fptrunc double %31 to float
  %.0195 = select i1 %30, float %32, float %28
  %33 = fcmp olt float %.0195, 1.000000e+01
  br i1 %33, label %34, label %35

34:                                               ; preds = %21
  br label %35

35:                                               ; preds = %21, %34, %11
  %.0230 = phi i32 [ 1, %34 ], [ 0, %21 ], [ 0, %11 ]
  %.1216 = phi i32 [ %16, %34 ], [ %.0215, %21 ], [ %.0215, %11 ]
  %.1207 = phi i32 [ %.0226, %34 ], [ %.0206, %21 ], [ %.0206, %11 ]
  %.1189 = phi float [ %26, %34 ], [ %.0188, %21 ], [ %.0188, %11 ]
  %.0 = phi float [ %.0195, %34 ], [ 1.000000e+01, %21 ], [ 1.000000e+01, %11 ]
  %36 = load ptr, ptr %10, align 8, !tbaa !5
  %37 = add nsw i32 %.0226, 1
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds ptr, ptr %36, i64 %38
  %40 = load ptr, ptr %39, align 8, !tbaa !11
  %41 = getelementptr inbounds float, ptr %40, i64 %17
  %42 = load float, ptr %41, align 4, !tbaa !12
  %43 = fcmp ogt float %42, 0.000000e+00
  br i1 %43, label %44, label %58

44:                                               ; preds = %35
  %45 = sub nsw i32 %37, %.0224
  %46 = sitofp i32 %45 to float
  %47 = sub nsw i32 %16, %.0225
  %48 = sitofp i32 %47 to float
  %49 = call noundef float @_ZSt5atan2ff(float noundef %46, float noundef %48)
  %50 = fsub float %49, %.0203
  %51 = call noundef float @_ZSt4fabsf(float noundef %50)
  %52 = fpext float %51 to double
  %53 = fcmp ogt double %52, 0x400921FB54442D18
  %54 = fsub double 0x401921FB544486E0, %52
  %55 = fptrunc double %54 to float
  %.1196 = select i1 %53, float %55, float %51
  %56 = fcmp olt float %.1196, %.0
  br i1 %56, label %57, label %58

57:                                               ; preds = %44
  br label %58

58:                                               ; preds = %44, %57, %35
  %.1231 = phi i32 [ 1, %57 ], [ %.0230, %44 ], [ %.0230, %35 ]
  %.2217 = phi i32 [ %16, %57 ], [ %.1216, %44 ], [ %.1216, %35 ]
  %.2208 = phi i32 [ %37, %57 ], [ %.1207, %44 ], [ %.1207, %35 ]
  %.2190 = phi float [ %49, %57 ], [ %.1189, %44 ], [ %.1189, %35 ]
  %.1 = phi float [ %.1196, %57 ], [ %.0, %44 ], [ %.0, %35 ]
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = getelementptr inbounds ptr, ptr %59, i64 %38
  %61 = load ptr, ptr %60, align 8, !tbaa !11
  %62 = sext i32 %.0228 to i64
  %63 = getelementptr inbounds float, ptr %61, i64 %62
  %64 = load float, ptr %63, align 4, !tbaa !12
  %65 = fcmp ogt float %64, 0.000000e+00
  br i1 %65, label %66, label %80

66:                                               ; preds = %58
  %67 = sub nsw i32 %37, %.0224
  %68 = sitofp i32 %67 to float
  %69 = sub nsw i32 %.0228, %.0225
  %70 = sitofp i32 %69 to float
  %71 = call noundef float @_ZSt5atan2ff(float noundef %68, float noundef %70)
  %72 = fsub float %71, %.0203
  %73 = call noundef float @_ZSt4fabsf(float noundef %72)
  %74 = fpext float %73 to double
  %75 = fcmp ogt double %74, 0x400921FB54442D18
  %76 = fsub double 0x401921FB544486E0, %74
  %77 = fptrunc double %76 to float
  %.2197 = select i1 %75, float %77, float %73
  %78 = fcmp olt float %.2197, %.1
  br i1 %78, label %79, label %80

79:                                               ; preds = %66
  br label %80

80:                                               ; preds = %66, %79, %58
  %.2232 = phi i32 [ 1, %79 ], [ %.1231, %66 ], [ %.1231, %58 ]
  %.3218 = phi i32 [ %.0228, %79 ], [ %.2217, %66 ], [ %.2217, %58 ]
  %.3209 = phi i32 [ %37, %79 ], [ %.2208, %66 ], [ %.2208, %58 ]
  %.3191 = phi float [ %71, %79 ], [ %.2190, %66 ], [ %.2190, %58 ]
  %.2 = phi float [ %.2197, %79 ], [ %.1, %66 ], [ %.1, %58 ]
  %81 = load ptr, ptr %10, align 8, !tbaa !5
  %82 = getelementptr inbounds ptr, ptr %81, i64 %38
  %83 = load ptr, ptr %82, align 8, !tbaa !11
  %84 = add nsw i32 %.0228, -1
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds float, ptr %83, i64 %85
  %87 = load float, ptr %86, align 4, !tbaa !12
  %88 = fcmp ogt float %87, 0.000000e+00
  br i1 %88, label %89, label %103

89:                                               ; preds = %80
  %90 = sub nsw i32 %37, %.0224
  %91 = sitofp i32 %90 to float
  %92 = sub nsw i32 %84, %.0225
  %93 = sitofp i32 %92 to float
  %94 = call noundef float @_ZSt5atan2ff(float noundef %91, float noundef %93)
  %95 = fsub float %94, %.0203
  %96 = call noundef float @_ZSt4fabsf(float noundef %95)
  %97 = fpext float %96 to double
  %98 = fcmp ogt double %97, 0x400921FB54442D18
  %99 = fsub double 0x401921FB544486E0, %97
  %100 = fptrunc double %99 to float
  %.3198 = select i1 %98, float %100, float %96
  %101 = fcmp olt float %.3198, %.2
  br i1 %101, label %102, label %103

102:                                              ; preds = %89
  br label %103

103:                                              ; preds = %89, %102, %80
  %.3233 = phi i32 [ 1, %102 ], [ %.2232, %89 ], [ %.2232, %80 ]
  %.4219 = phi i32 [ %84, %102 ], [ %.3218, %89 ], [ %.3218, %80 ]
  %.4210 = phi i32 [ %37, %102 ], [ %.3209, %89 ], [ %.3209, %80 ]
  %.4192 = phi float [ %94, %102 ], [ %.3191, %89 ], [ %.3191, %80 ]
  %.3 = phi float [ %.3198, %102 ], [ %.2, %89 ], [ %.2, %80 ]
  %104 = load ptr, ptr %10, align 8, !tbaa !5
  %105 = getelementptr inbounds ptr, ptr %104, i64 %13
  %106 = load ptr, ptr %105, align 8, !tbaa !11
  %107 = getelementptr inbounds float, ptr %106, i64 %85
  %108 = load float, ptr %107, align 4, !tbaa !12
  %109 = fcmp ogt float %108, 0.000000e+00
  br i1 %109, label %110, label %124

110:                                              ; preds = %103
  %111 = sub nsw i32 %.0226, %.0224
  %112 = sitofp i32 %111 to float
  %113 = sub nsw i32 %84, %.0225
  %114 = sitofp i32 %113 to float
  %115 = call noundef float @_ZSt5atan2ff(float noundef %112, float noundef %114)
  %116 = fsub float %115, %.0203
  %117 = call noundef float @_ZSt4fabsf(float noundef %116)
  %118 = fpext float %117 to double
  %119 = fcmp ogt double %118, 0x400921FB54442D18
  %120 = fsub double 0x401921FB544486E0, %118
  %121 = fptrunc double %120 to float
  %.4199 = select i1 %119, float %121, float %117
  %122 = fcmp olt float %.4199, %.3
  br i1 %122, label %123, label %124

123:                                              ; preds = %110
  br label %124

124:                                              ; preds = %110, %123, %103
  %.4234 = phi i32 [ 1, %123 ], [ %.3233, %110 ], [ %.3233, %103 ]
  %.5220 = phi i32 [ %84, %123 ], [ %.4219, %110 ], [ %.4219, %103 ]
  %.5211 = phi i32 [ %.0226, %123 ], [ %.4210, %110 ], [ %.4210, %103 ]
  %.5193 = phi float [ %115, %123 ], [ %.4192, %110 ], [ %.4192, %103 ]
  %.4 = phi float [ %.4199, %123 ], [ %.3, %110 ], [ %.3, %103 ]
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = add nsw i32 %.0226, -1
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds ptr, ptr %125, i64 %127
  %129 = load ptr, ptr %128, align 8, !tbaa !11
  %130 = getelementptr inbounds float, ptr %129, i64 %85
  %131 = load float, ptr %130, align 4, !tbaa !12
  %132 = fcmp ogt float %131, 0.000000e+00
  br i1 %132, label %133, label %147

133:                                              ; preds = %124
  %134 = sub nsw i32 %126, %.0224
  %135 = sitofp i32 %134 to float
  %136 = sub nsw i32 %84, %.0225
  %137 = sitofp i32 %136 to float
  %138 = call noundef float @_ZSt5atan2ff(float noundef %135, float noundef %137)
  %139 = fsub float %138, %.0203
  %140 = call noundef float @_ZSt4fabsf(float noundef %139)
  %141 = fpext float %140 to double
  %142 = fcmp ogt double %141, 0x400921FB54442D18
  %143 = fsub double 0x401921FB544486E0, %141
  %144 = fptrunc double %143 to float
  %.5200 = select i1 %142, float %144, float %140
  %145 = fcmp olt float %.5200, %.4
  br i1 %145, label %146, label %147

146:                                              ; preds = %133
  br label %147

147:                                              ; preds = %133, %146, %124
  %.5235 = phi i32 [ 1, %146 ], [ %.4234, %133 ], [ %.4234, %124 ]
  %.6221 = phi i32 [ %84, %146 ], [ %.5220, %133 ], [ %.5220, %124 ]
  %.6212 = phi i32 [ %126, %146 ], [ %.5211, %133 ], [ %.5211, %124 ]
  %.6194 = phi float [ %138, %146 ], [ %.5193, %133 ], [ %.5193, %124 ]
  %.5 = phi float [ %.5200, %146 ], [ %.4, %133 ], [ %.4, %124 ]
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = getelementptr inbounds ptr, ptr %148, i64 %127
  %150 = load ptr, ptr %149, align 8, !tbaa !11
  %151 = getelementptr inbounds float, ptr %150, i64 %62
  %152 = load float, ptr %151, align 4, !tbaa !12
  %153 = fcmp ogt float %152, 0.000000e+00
  br i1 %153, label %154, label %168

154:                                              ; preds = %147
  %155 = sub nsw i32 %126, %.0224
  %156 = sitofp i32 %155 to float
  %157 = sub nsw i32 %.0228, %.0225
  %158 = sitofp i32 %157 to float
  %159 = call noundef float @_ZSt5atan2ff(float noundef %156, float noundef %158)
  %160 = fsub float %159, %.0203
  %161 = call noundef float @_ZSt4fabsf(float noundef %160)
  %162 = fpext float %161 to double
  %163 = fcmp ogt double %162, 0x400921FB54442D18
  %164 = fsub double 0x401921FB544486E0, %162
  %165 = fptrunc double %164 to float
  %.6201 = select i1 %163, float %165, float %161
  %166 = fcmp olt float %.6201, %.5
  br i1 %166, label %167, label %168

167:                                              ; preds = %154
  br label %168

168:                                              ; preds = %154, %167, %147
  %.6236 = phi i32 [ 1, %167 ], [ %.5235, %154 ], [ %.5235, %147 ]
  %.7222 = phi i32 [ %.0228, %167 ], [ %.6221, %154 ], [ %.6221, %147 ]
  %.7213 = phi i32 [ %126, %167 ], [ %.6212, %154 ], [ %.6212, %147 ]
  %.7 = phi float [ %159, %167 ], [ %.6194, %154 ], [ %.6194, %147 ]
  %.6 = phi float [ %.6201, %167 ], [ %.5, %154 ], [ %.5, %147 ]
  %169 = load ptr, ptr %10, align 8, !tbaa !5
  %170 = getelementptr inbounds ptr, ptr %169, i64 %127
  %171 = load ptr, ptr %170, align 8, !tbaa !11
  %172 = getelementptr inbounds float, ptr %171, i64 %17
  %173 = load float, ptr %172, align 4, !tbaa !12
  %174 = fcmp ogt float %173, 0.000000e+00
  br i1 %174, label %175, label %188

175:                                              ; preds = %168
  %176 = sub nsw i32 %126, %.0224
  %177 = sitofp i32 %176 to float
  %178 = sub nsw i32 %16, %.0225
  %179 = sitofp i32 %178 to float
  %180 = call noundef float @_ZSt5atan2ff(float noundef %177, float noundef %179)
  %181 = fsub float %180, %.0203
  %182 = call noundef float @_ZSt4fabsf(float noundef %181)
  %183 = fpext float %182 to double
  %184 = fcmp ogt double %183, 0x400921FB54442D18
  %185 = fsub double 0x401921FB544486E0, %183
  %186 = fptrunc double %185 to float
  %.7202 = select i1 %184, float %186, float %182
  %187 = fcmp olt float %.7202, %.6
  br i1 %187, label %.thread, label %188

188:                                              ; preds = %175, %168
  %.not = icmp eq i32 %.6236, 0
  br i1 %.not, label %209, label %.thread

.thread:                                          ; preds = %175, %188
  %.8258 = phi float [ %.7, %188 ], [ %180, %175 ]
  %.8214256 = phi i32 [ %.7213, %188 ], [ %126, %175 ]
  %.8223254 = phi i32 [ %.7222, %188 ], [ %16, %175 ]
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = getelementptr inbounds ptr, ptr %189, i64 %13
  %191 = load ptr, ptr %190, align 8, !tbaa !11
  %192 = getelementptr inbounds float, ptr %191, i64 %62
  store float 0.000000e+00, ptr %192, align 4, !tbaa !12
  %193 = icmp sgt i32 %.8223254, 0
  br i1 %193, label %194, label %209

194:                                              ; preds = %.thread
  %195 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %196 = icmp ult i32 %.8223254, %195
  %197 = icmp sgt i32 %.8214256, 0
  %or.cond = select i1 %196, i1 %197, i1 false
  br i1 %or.cond, label %198, label %209

198:                                              ; preds = %194
  %199 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %200 = icmp ult i32 %.8214256, %199
  br i1 %200, label %201, label %209

201:                                              ; preds = %198
  br i1 %.not247, label %204, label %202

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %203 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #6
  call void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16) %203, i32 noundef %.8223254, i32 noundef %.8214256, float noundef %.8258)
  store ptr %203, ptr %6, align 8, !tbaa !11
  call void @_ZNSt6vectorIP10ChainPointSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  br label %.backedge

.backedge:                                        ; preds = %202, %204
  br label %11, !llvm.loop !14

204:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %205 = call ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #5
  store ptr %205, ptr %8, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKP10ChainPointSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %206 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #6
  call void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16) %206, i32 noundef %.8223254, i32 noundef %.8214256, float noundef %.8258)
  store ptr %206, ptr %9, align 8, !tbaa !11
  %207 = load ptr, ptr %7, align 8
  %208 = call ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr %207, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %.backedge

209:                                              ; preds = %198, %194, %.thread, %188
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5atan2ff(float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP10ChainPointSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10ChainPointC2Eiif(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef, float noundef) unnamed_addr #4 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIP10ChainPointSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKP10ChainPointSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin allocsize(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 #4 = { mustprogress 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 #5 = { nounwind }
attributes #6 = { builtin allocsize(0) }

!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, !10, i64 16}
!6 = !{!"_ZTS12ImageContent", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!10, !10, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !8, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopUnrollPass,SROAPass,SimplifyCFGPass