; LLVM IR from jingweizhanghuai/Morn :: src/image (morn_image_shape)

; 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.HoughLineInfo = type { %struct.MImagePoint, %struct.MImagePoint, %struct.MImagePoint, %struct.MImagePoint, float, float, float, float, i32 }
%struct.MImagePoint = type { float, float }
%struct.MImage = type { i32, i32, i32, [4 x ptr], ptr }
%struct.MHandle = type { i32, i32, ptr, ptr }
%struct.HandleImageHoughLine = type { [362 x float], [362 x float], ptr }
%struct.MTable = type { i32, i32, i32, %union.anon }
%union.anon = type { ptr }
%struct.MList = type { i32, ptr }

@.str = external hidden unnamed_addr constant [84 x i8], align 1
@__FUNCTION__.mImageHoughLine = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [35 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @endImageHoughLine(ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mImageHoughLine(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %struct.HoughLineInfo, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca float, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  br label %51

51:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %52 = load ptr, ptr %6, align 8, !tbaa !5
  %53 = icmp eq ptr %52, null
  br i1 %53, label %58, label %54

54:                                               ; preds = %51
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = ptrtoint ptr %55 to i64
  %57 = icmp eq i64 %56, -1
  br i1 %57, label %58, label %59

58:                                               ; preds = %54, %51
  br label %88

59:                                               ; preds = %54
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.MImage, ptr %60, i32 0, i32 3
  %62 = getelementptr inbounds [4 x ptr], ptr %61, i64 0, i64 0
  %63 = icmp eq ptr %62, null
  br i1 %63, label %85, label %64

64:                                               ; preds = %59
  %65 = load ptr, ptr %6, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.MImage, ptr %65, i32 0, i32 3
  %67 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 0
  %68 = ptrtoint ptr %67 to i64
  %69 = icmp eq i64 %68, -1
  br i1 %69, label %85, label %70

70:                                               ; preds = %64
  %71 = load ptr, ptr %6, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.MImage, ptr %71, i32 0, i32 0
  %73 = load i32, ptr %72, align 8, !tbaa !11
  %74 = icmp sle i32 %73, 0
  br i1 %74, label %85, label %75

75:                                               ; preds = %70
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.MImage, ptr %76, i32 0, i32 1
  %78 = load i32, ptr %77, align 4, !tbaa !13
  %79 = icmp sle i32 %78, 0
  br i1 %79, label %85, label %80

80:                                               ; preds = %75
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.MImage, ptr %81, i32 0, i32 2
  %83 = load i32, ptr %82, align 8, !tbaa !14
  %84 = icmp sle i32 %83, 0
  br label %85

85:                                               ; preds = %80, %75, %70, %64, %59
  %86 = phi i1 [ true, %75 ], [ true, %70 ], [ true, %64 ], [ true, %59 ], [ %84, %80 ]
  %87 = zext i1 %86 to i32
  br label %88

88:                                               ; preds = %85, %58
  %89 = phi i32 [ 1, %58 ], [ %87, %85 ]
  store i32 %89, ptr %12, align 4, !tbaa !9
  %90 = load i32, ptr %12, align 4, !tbaa !9
  %91 = icmp ne i32 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %88
  %93 = load i32, ptr %12, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %93, i32 noundef -1, ptr noundef @.str, i32 noundef 46, ptr noundef @__FUNCTION__.mImageHoughLine, ptr noundef @.str.1)
  br label %94

94:                                               ; preds = %92, %88
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %95

95:                                               ; preds = %94
  br label %96

96:                                               ; preds = %95
  br label %97

97:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %98 = load i32, ptr %10, align 4, !tbaa !9
  %99 = icmp sle i32 %98, 0
  %100 = zext i1 %99 to i32
  store i32 %100, ptr %13, align 4, !tbaa !9
  %101 = load i32, ptr %13, align 4, !tbaa !9
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %103, label %105

103:                                              ; preds = %97
  %104 = load i32, ptr %13, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %104, i32 noundef -1, ptr noundef @.str, i32 noundef 47, ptr noundef @__FUNCTION__.mImageHoughLine, ptr noundef @.str.2)
  br label %105

105:                                              ; preds = %103, %97
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  br label %106

106:                                              ; preds = %105
  br label %107

107:                                              ; preds = %106
  %108 = load i32, ptr %8, align 4, !tbaa !9
  %109 = icmp sle i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %107
  %111 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %111, ptr %8, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %110, %107
  %113 = load i32, ptr %9, align 4, !tbaa !9
  %114 = icmp sle i32 %113, 0
  br i1 %114, label %115, label %116

115:                                              ; preds = %112
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %115, %112
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.MImage, ptr %117, i32 0, i32 1
  %119 = load i32, ptr %118, align 4, !tbaa !13
  store i32 %119, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.MImage, ptr %120, i32 0, i32 2
  %122 = load i32, ptr %121, align 8, !tbaa !14
  store i32 %122, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %123 = load i32, ptr %15, align 4, !tbaa !9
  %124 = sitofp i32 %123 to float
  %125 = fdiv float %124, 2.000000e+00
  store float %125, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %126 = load i32, ptr %14, align 4, !tbaa !9
  %127 = sitofp i32 %126 to float
  %128 = fdiv float %127, 2.000000e+00
  store float %128, ptr %17, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.MImage, ptr %129, i32 0, i32 3
  %131 = getelementptr inbounds [4 x ptr], ptr %130, i64 0, i64 0
  %132 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %132, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %133 = load float, ptr %16, align 4, !tbaa !15
  %134 = load float, ptr %16, align 4, !tbaa !15
  %135 = load float, ptr %17, align 4, !tbaa !15
  %136 = load float, ptr %17, align 4, !tbaa !15
  %137 = fmul float %135, %136
  %138 = call float @llvm.fmuladd.f32(float %133, float %134, float %137)
  %139 = fpext float %138 to double
  %140 = call double @sqrt(double noundef %139) #6
  %141 = fptosi double %140 to i32
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %143 = load ptr, ptr %6, align 8, !tbaa !5
  %144 = call ptr @GetHandle(ptr noundef %143, i32 noundef 2904, i32 noundef 1029501661, ptr noundef @endImageHoughLine)
  store ptr %144, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %145 = load ptr, ptr %20, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.MHandle, ptr %145, i32 0, i32 3
  %147 = load ptr, ptr %146, align 8, !tbaa !17
  store ptr %147, ptr %21, align 8, !tbaa !5
  %148 = load ptr, ptr %20, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.MHandle, ptr %148, i32 0, i32 1
  %150 = load volatile i32, ptr %149, align 4, !tbaa !19
  %151 = icmp eq i32 %150, 0
  br i1 %151, label %152, label %241

152:                                              ; preds = %116
  %153 = load ptr, ptr %21, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %153, i32 0, i32 2
  %155 = load ptr, ptr %154, align 8, !tbaa !20
  %156 = icmp eq ptr %155, null
  br i1 %156, label %157, label %164

157:                                              ; preds = %152
  %158 = load i32, ptr %19, align 4, !tbaa !9
  %159 = mul nsw i32 %158, 2
  %160 = add nsw i32 %159, 0
  %161 = call ptr @TableCreate(i32 noundef %160, i32 noundef 362, i32 noundef 2, ptr noundef null)
  %162 = load ptr, ptr %21, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %162, i32 0, i32 2
  store ptr %161, ptr %163, align 8, !tbaa !20
  br label %205

164:                                              ; preds = %152
  br label %165

165:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 5, ptr %22, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %167 = load i32, ptr %22, align 4, !tbaa !9
  %168 = icmp eq i32 %167, 0
  br i1 %168, label %172, label %169

169:                                              ; preds = %166
  %170 = load i32, ptr %22, align 4, !tbaa !9
  %171 = icmp eq i32 %170, 2
  br label %172

172:                                              ; preds = %169, %166
  %173 = phi i1 [ true, %166 ], [ %171, %169 ]
  %174 = zext i1 %173 to i32
  store i32 %174, ptr %23, align 4, !tbaa !9
  %175 = load i32, ptr %23, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %172
  %178 = load i32, ptr %23, align 4, !tbaa !9
  call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef %178, i32 noundef -1, ptr noundef @.str, i32 noundef 67, ptr noundef @__FUNCTION__.mImageHoughLine, ptr noundef @.str.3)
  br label %179

179:                                              ; preds = %177, %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr %22, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 3
  br i1 %183, label %184, label %191

184:                                              ; preds = %181
  %185 = load ptr, ptr %21, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %185, i32 0, i32 2
  %187 = load ptr, ptr %186, align 8, !tbaa !20
  %188 = getelementptr inbounds %struct.MTable, ptr %187, i64 0
  %189 = load i32, ptr %19, align 4, !tbaa !9
  %190 = mul nsw i32 %189, 2
  call void @TableRedefine(ptr noundef %188, i32 noundef %190, i32 noundef 362, i32 noundef -1, ptr noundef null)
  br label %202

191:                                              ; preds = %181
  %192 = load i32, ptr %22, align 4, !tbaa !9
  %193 = icmp sge i32 %192, 4
  br i1 %193, label %194, label %201

194:                                              ; preds = %191
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %195, i32 0, i32 2
  %197 = load ptr, ptr %196, align 8, !tbaa !20
  %198 = getelementptr inbounds %struct.MTable, ptr %197, i64 0
  %199 = load i32, ptr %19, align 4, !tbaa !9
  %200 = mul nsw i32 %199, 2
  call void @TableRedefine(ptr noundef %198, i32 noundef %200, i32 noundef 362, i32 noundef 2, ptr noundef null)
  br label %201

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

202:                                              ; preds = %201, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %203

203:                                              ; preds = %202
  br label %204

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204, %157
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %235, %205
  %207 = load i32, ptr %24, align 4, !tbaa !9
  %208 = icmp slt i32 %207, 362
  br i1 %208, label %210, label %209

209:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %238

210:                                              ; preds = %206
  %211 = load i32, ptr %24, align 4, !tbaa !9
  %212 = sitofp i32 %211 to float
  %213 = fsub float %212, 1.000000e+00
  %214 = fmul float %213, 5.000000e-01
  %215 = fpext float %214 to double
  %216 = call double @mSin(double noundef %215)
  %217 = fptrunc double %216 to float
  %218 = load ptr, ptr %21, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %218, i32 0, i32 0
  %220 = load i32, ptr %24, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [362 x float], ptr %219, i64 0, i64 %221
  store float %217, ptr %222, align 4, !tbaa !15
  %223 = load i32, ptr %24, align 4, !tbaa !9
  %224 = sitofp i32 %223 to float
  %225 = fsub float %224, 1.000000e+00
  %226 = fmul float %225, 5.000000e-01
  %227 = fpext float %226 to double
  %228 = call double @mCos(double noundef %227)
  %229 = fptrunc double %228 to float
  %230 = load ptr, ptr %21, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %230, i32 0, i32 1
  %232 = load i32, ptr %24, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds [362 x float], ptr %231, i64 0, i64 %233
  store float %229, ptr %234, align 4, !tbaa !15
  br label %235

235:                                              ; preds = %210
  %236 = load i32, ptr %24, align 4, !tbaa !9
  %237 = add nsw i32 %236, 1
  store i32 %237, ptr %24, align 4, !tbaa !9
  br label %206, !llvm.loop !22

238:                                              ; preds = %209
  %239 = load ptr, ptr %20, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.MHandle, ptr %239, i32 0, i32 1
  store volatile i32 1, ptr %240, align 4, !tbaa !19
  br label %241

241:                                              ; preds = %238, %116
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %242 = load ptr, ptr %21, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %242, i32 0, i32 2
  %244 = load ptr, ptr %243, align 8, !tbaa !20
  %245 = getelementptr inbounds %struct.MTable, ptr %244, i32 0, i32 3
  %246 = load ptr, ptr %245, align 8, !tbaa !24
  store ptr %246, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %265, %241
  %248 = load i32, ptr %11, align 4, !tbaa !9
  %249 = load i32, ptr %19, align 4, !tbaa !9
  %250 = mul nsw i32 %249, 2
  %251 = icmp slt i32 %248, %250
  br i1 %251, label %252, label %268

252:                                              ; preds = %247
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = load i32, ptr %11, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds ptr, ptr %253, i64 %255
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  %258 = load ptr, ptr %21, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %258, i32 0, i32 2
  %260 = load ptr, ptr %259, align 8, !tbaa !20
  %261 = getelementptr inbounds %struct.MTable, ptr %260, i32 0, i32 1
  %262 = load i32, ptr %261, align 4, !tbaa !25
  %263 = sext i32 %262 to i64
  %264 = mul i64 %263, 2
  call void @llvm.memset.p0.i64(ptr align 2 %257, i8 0, i64 %264, i1 false)
  br label %265

265:                                              ; preds = %252
  %266 = load i32, ptr %11, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr %11, align 4, !tbaa !9
  br label %247, !llvm.loop !27

268:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %269, i32 0, i32 0
  %271 = getelementptr inbounds [362 x float], ptr %270, i64 0, i64 0
  store ptr %271, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.HandleImageHoughLine, ptr %272, i32 0, i32 1
  %274 = getelementptr inbounds [362 x float], ptr %273, i64 0, i64 0
  store ptr %274, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %350, %268
  %276 = load i32, ptr %11, align 4, !tbaa !9
  %277 = load i32, ptr %14, align 4, !tbaa !9
  %278 = icmp slt i32 %276, %277
  br i1 %278, label %279, label %353

279:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %346, %279
  %281 = load i32, ptr %28, align 4, !tbaa !9
  %282 = load i32, ptr %15, align 4, !tbaa !9
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %285, label %284

284:                                              ; preds = %280
  store i32 19, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %349

285:                                              ; preds = %280
  %286 = load ptr, ptr %18, align 8, !tbaa !5
  %287 = load i32, ptr %11, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds ptr, ptr %286, i64 %288
  %290 = load ptr, ptr %289, align 8, !tbaa !5
  %291 = load i32, ptr %28, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i8, ptr %290, i64 %292
  %294 = load i8, ptr %293, align 1, !tbaa !24
  %295 = zext i8 %294 to i32
  %296 = icmp eq i32 %295, 255
  br i1 %296, label %297, label %345

297:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %341, %297
  %299 = load i32, ptr %30, align 4, !tbaa !9
  %300 = icmp slt i32 %299, 362
  br i1 %300, label %302, label %301

301:                                              ; preds = %298
  store i32 22, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %344

302:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %303 = load i32, ptr %28, align 4, !tbaa !9
  %304 = sitofp i32 %303 to float
  %305 = load float, ptr %16, align 4, !tbaa !15
  %306 = fsub float %304, %305
  %307 = load ptr, ptr %27, align 8, !tbaa !5
  %308 = load i32, ptr %30, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds float, ptr %307, i64 %309
  %311 = load float, ptr %310, align 4, !tbaa !15
  %312 = load i32, ptr %11, align 4, !tbaa !9
  %313 = sitofp i32 %312 to float
  %314 = load float, ptr %17, align 4, !tbaa !15
  %315 = fsub float %313, %314
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = load i32, ptr %30, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %316, i64 %318
  %320 = load float, ptr %319, align 4, !tbaa !15
  %321 = fmul float %315, %320
  %322 = call float @llvm.fmuladd.f32(float %306, float %311, float %321)
  %323 = load i32, ptr %19, align 4, !tbaa !9
  %324 = sitofp i32 %323 to float
  %325 = fadd float %322, %324
  %326 = fpext float %325 to double
  %327 = fadd double %326, 5.000000e-01
  %328 = fptosi double %327 to i32
  store i32 %328, ptr %31, align 4, !tbaa !9
  %329 = load ptr, ptr %25, align 8, !tbaa !5
  %330 = load i32, ptr %31, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds ptr, ptr %329, i64 %331
  %333 = load ptr, ptr %332, align 8, !tbaa !5
  %334 = load i32, ptr %30, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds i16, ptr %333, i64 %335
  %337 = load i16, ptr %336, align 2, !tbaa !28
  %338 = zext i16 %337 to i32
  %339 = add nsw i32 %338, 1
  %340 = trunc i32 %339 to i16
  store i16 %340, ptr %336, align 2, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %341

341:                                              ; preds = %302
  %342 = load i32, ptr %30, align 4, !tbaa !9
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %30, align 4, !tbaa !9
  br label %298, !llvm.loop !30

344:                                              ; preds = %301
  br label %345

345:                                              ; preds = %344, %285
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %28, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %28, align 4, !tbaa !9
  br label %280, !llvm.loop !31

349:                                              ; preds = %284
  br label %350

350:                                              ; preds = %349
  %351 = load i32, ptr %11, align 4, !tbaa !9
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %11, align 4, !tbaa !9
  br label %275, !llvm.loop !32

353:                                              ; preds = %275
  %354 = load ptr, ptr %7, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.MList, ptr %354, i32 0, i32 0
  store i32 0, ptr %355, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 52, ptr %32) #6
  %356 = load i32, ptr %10, align 4, !tbaa !9
  %357 = ashr i32 %356, 2
  store i32 %357, ptr %10, align 4, !tbaa !9
  %358 = load i32, ptr %8, align 4, !tbaa !9
  %359 = ashr i32 %358, 2
  store i32 %359, ptr %8, align 4, !tbaa !9
  %360 = load i32, ptr %9, align 4, !tbaa !9
  %361 = ashr i32 %360, 2
  store i32 %361, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %362

362:                                              ; preds = %1611, %353
  %363 = load i32, ptr %11, align 4, !tbaa !9
  %364 = load i32, ptr %19, align 4, !tbaa !9
  %365 = mul nsw i32 %364, 2
  %366 = icmp slt i32 %363, %365
  br i1 %366, label %367, label %1614

367:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %1607, %367
  %369 = load i32, ptr %33, align 4, !tbaa !9
  %370 = icmp slt i32 %369, 361
  br i1 %370, label %372, label %371

371:                                              ; preds = %368
  store i32 28, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %1610

372:                                              ; preds = %368
  %373 = load ptr, ptr %25, align 8, !tbaa !5
  %374 = load i32, ptr %11, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds ptr, ptr %373, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !5
  %378 = load i32, ptr %33, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds i16, ptr %377, i64 %379
  %381 = load i16, ptr %380, align 2, !tbaa !28
  %382 = zext i16 %381 to i32
  %383 = load i32, ptr %10, align 4, !tbaa !9
  %384 = shl i32 %383, 2
  %385 = icmp slt i32 %382, %384
  br i1 %385, label %386, label %387

386:                                              ; preds = %372
  br label %1607

387:                                              ; preds = %372
  %388 = load ptr, ptr %25, align 8, !tbaa !5
  %389 = load i32, ptr %11, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds ptr, ptr %388, i64 %390
  %392 = load ptr, ptr %391, align 8, !tbaa !5
  %393 = load i32, ptr %33, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds i16, ptr %392, i64 %394
  %396 = load i16, ptr %395, align 2, !tbaa !28
  %397 = zext i16 %396 to i32
  %398 = load ptr, ptr %25, align 8, !tbaa !5
  %399 = load i32, ptr %11, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds ptr, ptr %398, i64 %400
  %402 = load ptr, ptr %401, align 8, !tbaa !5
  %403 = load i32, ptr %33, align 4, !tbaa !9
  %404 = sub nsw i32 %403, 1
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i16, ptr %402, i64 %405
  %407 = load i16, ptr %406, align 2, !tbaa !28
  %408 = zext i16 %407 to i32
  %409 = icmp slt i32 %397, %408
  br i1 %409, label %433, label %410

410:                                              ; preds = %387
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  %412 = load i32, ptr %11, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds ptr, ptr %411, i64 %413
  %415 = load ptr, ptr %414, align 8, !tbaa !5
  %416 = load i32, ptr %33, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i16, ptr %415, i64 %417
  %419 = load i16, ptr %418, align 2, !tbaa !28
  %420 = zext i16 %419 to i32
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = load i32, ptr %11, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds ptr, ptr %421, i64 %423
  %425 = load ptr, ptr %424, align 8, !tbaa !5
  %426 = load i32, ptr %33, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i16, ptr %425, i64 %428
  %430 = load i16, ptr %429, align 2, !tbaa !28
  %431 = zext i16 %430 to i32
  %432 = icmp slt i32 %420, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %410, %387
  br label %1607

434:                                              ; preds = %410
  %435 = load ptr, ptr %25, align 8, !tbaa !5
  %436 = load i32, ptr %11, 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 = load i32, ptr %33, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i16, ptr %439, i64 %441
  %443 = load i16, ptr %442, align 2, !tbaa !28
  %444 = zext i16 %443 to i32
  %445 = add nsw i32 %444, 1
  %446 = trunc i32 %445 to i16
  store i16 %446, ptr %442, align 2, !tbaa !28
  %447 = load i32, ptr %33, align 4, !tbaa !9
  %448 = sitofp i32 %447 to float
  %449 = fsub float %448, 1.000000e+00
  %450 = fmul float %449, 5.000000e-01
  %451 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 6
  store float %450, ptr %451, align 4, !tbaa !35
  %452 = load i32, ptr %11, align 4, !tbaa !9
  %453 = load i32, ptr %19, align 4, !tbaa !9
  %454 = sub nsw i32 %452, %453
  %455 = sitofp i32 %454 to float
  %456 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 7
  store float %455, ptr %456, align 4, !tbaa !38
  %457 = load ptr, ptr %26, align 8, !tbaa !5
  %458 = load i32, ptr %33, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds float, ptr %457, i64 %459
  %461 = load float, ptr %460, align 4, !tbaa !15
  %462 = fcmp oeq float %461, 0.000000e+00
  br i1 %462, label %463, label %487

463:                                              ; preds = %434
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  %465 = load i32, ptr %33, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds float, ptr %464, i64 %466
  store float 0x3F1A36E2E0000000, ptr %467, align 4, !tbaa !15
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  %469 = load i32, ptr %33, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds float, ptr %468, i64 %470
  %472 = load float, ptr %471, align 4, !tbaa !15
  %473 = load ptr, ptr %26, align 8, !tbaa !5
  %474 = load i32, ptr %33, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds float, ptr %473, i64 %475
  %477 = load float, ptr %476, align 4, !tbaa !15
  %478 = fmul float %472, %477
  %479 = fpext float %478 to double
  %480 = fsub double 1.000000e+00, %479
  %481 = call double @sqrt(double noundef %480) #6
  %482 = fptrunc double %481 to float
  %483 = load ptr, ptr %27, align 8, !tbaa !5
  %484 = load i32, ptr %33, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %483, i64 %485
  store float %482, ptr %486, align 4, !tbaa !15
  br label %487

487:                                              ; preds = %463, %434
  %488 = load ptr, ptr %27, align 8, !tbaa !5
  %489 = load i32, ptr %33, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds float, ptr %488, i64 %490
  %492 = load float, ptr %491, align 4, !tbaa !15
  %493 = load ptr, ptr %26, align 8, !tbaa !5
  %494 = load i32, ptr %33, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds float, ptr %493, i64 %495
  %497 = load float, ptr %496, align 4, !tbaa !15
  %498 = fdiv float %492, %497
  %499 = fsub float 0.000000e+00, %498
  %500 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  store float %499, ptr %500, align 4, !tbaa !39
  %501 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 7
  %502 = load float, ptr %501, align 4, !tbaa !38
  %503 = load ptr, ptr %26, align 8, !tbaa !5
  %504 = load i32, ptr %33, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds float, ptr %503, i64 %505
  %507 = load float, ptr %506, align 4, !tbaa !15
  %508 = fdiv float %502, %507
  %509 = load float, ptr %16, align 4, !tbaa !15
  %510 = load ptr, ptr %27, align 8, !tbaa !5
  %511 = load i32, ptr %33, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds float, ptr %510, i64 %512
  %514 = load float, ptr %513, align 4, !tbaa !15
  %515 = fmul float %509, %514
  %516 = load ptr, ptr %26, align 8, !tbaa !5
  %517 = load i32, ptr %33, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds float, ptr %516, i64 %518
  %520 = load float, ptr %519, align 4, !tbaa !15
  %521 = fdiv float %515, %520
  %522 = fadd float %508, %521
  %523 = load float, ptr %17, align 4, !tbaa !15
  %524 = fadd float %522, %523
  %525 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  store float %524, ptr %525, align 4, !tbaa !40
  %526 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %527 = getelementptr inbounds %struct.MImagePoint, ptr %526, i32 0, i32 0
  store float 0.000000e+00, ptr %527, align 4, !tbaa !41
  %528 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %529 = load float, ptr %528, align 4, !tbaa !40
  %530 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %531 = getelementptr inbounds %struct.MImagePoint, ptr %530, i32 0, i32 1
  store float %529, ptr %531, align 4, !tbaa !42
  %532 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %533 = getelementptr inbounds %struct.MImagePoint, ptr %532, i32 0, i32 1
  %534 = load float, ptr %533, align 4, !tbaa !42
  %535 = fcmp olt float %534, 0.000000e+00
  br i1 %535, label %545, label %536

536:                                              ; preds = %487
  %537 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %538 = getelementptr inbounds %struct.MImagePoint, ptr %537, i32 0, i32 1
  %539 = load float, ptr %538, align 4, !tbaa !42
  %540 = load ptr, ptr %6, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.MImage, ptr %540, i32 0, i32 1
  %542 = load i32, ptr %541, align 4, !tbaa !13
  %543 = sitofp i32 %542 to float
  %544 = fcmp oge float %539, %543
  br i1 %544, label %545, label %604

545:                                              ; preds = %536, %487
  %546 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %547 = getelementptr inbounds %struct.MImagePoint, ptr %546, i32 0, i32 1
  store float 0.000000e+00, ptr %547, align 4, !tbaa !42
  %548 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %549 = load float, ptr %548, align 4, !tbaa !40
  %550 = fsub float 0.000000e+00, %549
  %551 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %552 = load float, ptr %551, align 4, !tbaa !39
  %553 = fdiv float %550, %552
  %554 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %555 = getelementptr inbounds %struct.MImagePoint, ptr %554, i32 0, i32 0
  store float %553, ptr %555, align 4, !tbaa !41
  %556 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %557 = getelementptr inbounds %struct.MImagePoint, ptr %556, i32 0, i32 0
  %558 = load float, ptr %557, align 4, !tbaa !41
  %559 = fcmp olt float %558, 0.000000e+00
  br i1 %559, label %569, label %560

560:                                              ; preds = %545
  %561 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %562 = getelementptr inbounds %struct.MImagePoint, ptr %561, i32 0, i32 0
  %563 = load float, ptr %562, align 4, !tbaa !41
  %564 = load ptr, ptr %6, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.MImage, ptr %564, i32 0, i32 2
  %566 = load i32, ptr %565, align 8, !tbaa !14
  %567 = sitofp i32 %566 to float
  %568 = fcmp oge float %563, %567
  br i1 %568, label %569, label %588

569:                                              ; preds = %560, %545
  %570 = load ptr, ptr %6, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.MImage, ptr %570, i32 0, i32 1
  %572 = load i32, ptr %571, align 4, !tbaa !13
  %573 = sub nsw i32 %572, 1
  %574 = sitofp i32 %573 to float
  %575 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %576 = getelementptr inbounds %struct.MImagePoint, ptr %575, i32 0, i32 1
  store float %574, ptr %576, align 4, !tbaa !42
  %577 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %578 = getelementptr inbounds %struct.MImagePoint, ptr %577, i32 0, i32 1
  %579 = load float, ptr %578, align 4, !tbaa !42
  %580 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %581 = load float, ptr %580, align 4, !tbaa !40
  %582 = fsub float %579, %581
  %583 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %584 = load float, ptr %583, align 4, !tbaa !39
  %585 = fdiv float %582, %584
  %586 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %587 = getelementptr inbounds %struct.MImagePoint, ptr %586, i32 0, i32 0
  store float %585, ptr %587, align 4, !tbaa !41
  br label %588

588:                                              ; preds = %569, %560
  %589 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %590 = getelementptr inbounds %struct.MImagePoint, ptr %589, i32 0, i32 0
  %591 = load float, ptr %590, align 4, !tbaa !41
  %592 = fcmp olt float %591, 0.000000e+00
  br i1 %592, label %602, label %593

593:                                              ; preds = %588
  %594 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %595 = getelementptr inbounds %struct.MImagePoint, ptr %594, i32 0, i32 0
  %596 = load float, ptr %595, align 4, !tbaa !41
  %597 = load ptr, ptr %6, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.MImage, ptr %597, i32 0, i32 2
  %599 = load i32, ptr %598, align 8, !tbaa !14
  %600 = sitofp i32 %599 to float
  %601 = fcmp oge float %596, %600
  br i1 %601, label %602, label %603

602:                                              ; preds = %593, %588
  br label %1607

603:                                              ; preds = %593
  br label %604

604:                                              ; preds = %603, %536
  %605 = load ptr, ptr %6, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.MImage, ptr %605, i32 0, i32 2
  %607 = load i32, ptr %606, align 8, !tbaa !14
  %608 = sitofp i32 %607 to float
  %609 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %610 = getelementptr inbounds %struct.MImagePoint, ptr %609, i32 0, i32 0
  store float %608, ptr %610, align 4, !tbaa !43
  %611 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %612 = load float, ptr %611, align 4, !tbaa !39
  %613 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %614 = getelementptr inbounds %struct.MImagePoint, ptr %613, i32 0, i32 0
  %615 = load float, ptr %614, align 4, !tbaa !43
  %616 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %617 = load float, ptr %616, align 4, !tbaa !40
  %618 = call float @llvm.fmuladd.f32(float %612, float %615, float %617)
  %619 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %620 = getelementptr inbounds %struct.MImagePoint, ptr %619, i32 0, i32 1
  store float %618, ptr %620, align 4, !tbaa !44
  %621 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %622 = getelementptr inbounds %struct.MImagePoint, ptr %621, i32 0, i32 1
  %623 = load float, ptr %622, align 4, !tbaa !44
  %624 = fcmp olt float %623, 0.000000e+00
  br i1 %624, label %634, label %625

625:                                              ; preds = %604
  %626 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %627 = getelementptr inbounds %struct.MImagePoint, ptr %626, i32 0, i32 1
  %628 = load float, ptr %627, align 4, !tbaa !44
  %629 = load ptr, ptr %6, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.MImage, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %630, align 4, !tbaa !13
  %632 = sitofp i32 %631 to float
  %633 = fcmp oge float %628, %632
  br i1 %633, label %634, label %693

634:                                              ; preds = %625, %604
  %635 = load ptr, ptr %6, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.MImage, ptr %635, i32 0, i32 1
  %637 = load i32, ptr %636, align 4, !tbaa !13
  %638 = sub nsw i32 %637, 1
  %639 = sitofp i32 %638 to float
  %640 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %641 = getelementptr inbounds %struct.MImagePoint, ptr %640, i32 0, i32 1
  store float %639, ptr %641, align 4, !tbaa !44
  %642 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %643 = getelementptr inbounds %struct.MImagePoint, ptr %642, i32 0, i32 1
  %644 = load float, ptr %643, align 4, !tbaa !44
  %645 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %646 = load float, ptr %645, align 4, !tbaa !40
  %647 = fsub float %644, %646
  %648 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %649 = load float, ptr %648, align 4, !tbaa !39
  %650 = fdiv float %647, %649
  %651 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %652 = getelementptr inbounds %struct.MImagePoint, ptr %651, i32 0, i32 0
  store float %650, ptr %652, align 4, !tbaa !43
  %653 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %654 = getelementptr inbounds %struct.MImagePoint, ptr %653, i32 0, i32 0
  %655 = load float, ptr %654, align 4, !tbaa !43
  %656 = fcmp olt float %655, 0.000000e+00
  br i1 %656, label %666, label %657

657:                                              ; preds = %634
  %658 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %659 = getelementptr inbounds %struct.MImagePoint, ptr %658, i32 0, i32 0
  %660 = load float, ptr %659, align 4, !tbaa !43
  %661 = load ptr, ptr %6, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.MImage, ptr %661, i32 0, i32 2
  %663 = load i32, ptr %662, align 8, !tbaa !14
  %664 = sitofp i32 %663 to float
  %665 = fcmp oge float %660, %664
  br i1 %665, label %666, label %677

666:                                              ; preds = %657, %634
  %667 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %668 = getelementptr inbounds %struct.MImagePoint, ptr %667, i32 0, i32 1
  store float 0.000000e+00, ptr %668, align 4, !tbaa !44
  %669 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 5
  %670 = load float, ptr %669, align 4, !tbaa !40
  %671 = fsub float 0.000000e+00, %670
  %672 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %673 = load float, ptr %672, align 4, !tbaa !39
  %674 = fdiv float %671, %673
  %675 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %676 = getelementptr inbounds %struct.MImagePoint, ptr %675, i32 0, i32 0
  store float %674, ptr %676, align 4, !tbaa !43
  br label %677

677:                                              ; preds = %666, %657
  %678 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %679 = getelementptr inbounds %struct.MImagePoint, ptr %678, i32 0, i32 0
  %680 = load float, ptr %679, align 4, !tbaa !43
  %681 = fcmp olt float %680, 0.000000e+00
  br i1 %681, label %691, label %682

682:                                              ; preds = %677
  %683 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %684 = getelementptr inbounds %struct.MImagePoint, ptr %683, i32 0, i32 0
  %685 = load float, ptr %684, align 4, !tbaa !43
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.MImage, ptr %686, i32 0, i32 2
  %688 = load i32, ptr %687, align 8, !tbaa !14
  %689 = sitofp i32 %688 to float
  %690 = fcmp oge float %685, %689
  br i1 %690, label %691, label %692

691:                                              ; preds = %682, %677
  br label %1607

692:                                              ; preds = %682
  br label %693

693:                                              ; preds = %692, %625
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !9
  %694 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  store i32 0, ptr %694, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  store i32 1, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %695 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %696 = getelementptr inbounds %struct.MImagePoint, ptr %695, i32 0, i32 0
  %697 = load float, ptr %696, align 4, !tbaa !41
  %698 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %699 = getelementptr inbounds %struct.MImagePoint, ptr %698, i32 0, i32 0
  %700 = load float, ptr %699, align 4, !tbaa !43
  %701 = fsub float %697, %700
  %702 = fcmp ogt float %701, 0.000000e+00
  br i1 %702, label %703, label %711

703:                                              ; preds = %693
  %704 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %705 = getelementptr inbounds %struct.MImagePoint, ptr %704, i32 0, i32 0
  %706 = load float, ptr %705, align 4, !tbaa !41
  %707 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %708 = getelementptr inbounds %struct.MImagePoint, ptr %707, i32 0, i32 0
  %709 = load float, ptr %708, align 4, !tbaa !43
  %710 = fsub float %706, %709
  br label %720

711:                                              ; preds = %693
  %712 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %713 = getelementptr inbounds %struct.MImagePoint, ptr %712, i32 0, i32 0
  %714 = load float, ptr %713, align 4, !tbaa !41
  %715 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %716 = getelementptr inbounds %struct.MImagePoint, ptr %715, i32 0, i32 0
  %717 = load float, ptr %716, align 4, !tbaa !43
  %718 = fsub float %714, %717
  %719 = fsub float 0.000000e+00, %718
  br label %720

720:                                              ; preds = %711, %703
  %721 = phi float [ %710, %703 ], [ %719, %711 ]
  %722 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %723 = getelementptr inbounds %struct.MImagePoint, ptr %722, i32 0, i32 1
  %724 = load float, ptr %723, align 4, !tbaa !42
  %725 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %726 = getelementptr inbounds %struct.MImagePoint, ptr %725, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !44
  %728 = fsub float %724, %727
  %729 = fcmp ogt float %728, 0.000000e+00
  br i1 %729, label %730, label %738

730:                                              ; preds = %720
  %731 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %732 = getelementptr inbounds %struct.MImagePoint, ptr %731, i32 0, i32 1
  %733 = load float, ptr %732, align 4, !tbaa !42
  %734 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %735 = getelementptr inbounds %struct.MImagePoint, ptr %734, i32 0, i32 1
  %736 = load float, ptr %735, align 4, !tbaa !44
  %737 = fsub float %733, %736
  br label %747

738:                                              ; preds = %720
  %739 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %740 = getelementptr inbounds %struct.MImagePoint, ptr %739, i32 0, i32 1
  %741 = load float, ptr %740, align 4, !tbaa !42
  %742 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %743 = getelementptr inbounds %struct.MImagePoint, ptr %742, i32 0, i32 1
  %744 = load float, ptr %743, align 4, !tbaa !44
  %745 = fsub float %741, %744
  %746 = fsub float 0.000000e+00, %745
  br label %747

747:                                              ; preds = %738, %730
  %748 = phi float [ %737, %730 ], [ %746, %738 ]
  %749 = fcmp ogt float %721, %748
  br i1 %749, label %750, label %1174

750:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %751 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %752 = load float, ptr %751, align 4, !tbaa !39
  %753 = fpext float %752 to double
  %754 = fmul double 4.000000e+00, %753
  %755 = fptrunc double %754 to float
  store float %755, ptr %41, align 4, !tbaa !15
  %756 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %757 = getelementptr inbounds %struct.MImagePoint, ptr %756, i32 0, i32 0
  %758 = load float, ptr %757, align 4, !tbaa !41
  %759 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %760 = getelementptr inbounds %struct.MImagePoint, ptr %759, i32 0, i32 0
  %761 = load float, ptr %760, align 4, !tbaa !43
  %762 = fcmp olt float %758, %761
  br i1 %762, label %763, label %968

763:                                              ; preds = %750
  %764 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %765 = getelementptr inbounds %struct.MImagePoint, ptr %764, i32 0, i32 0
  %766 = load float, ptr %765, align 4, !tbaa !41
  %767 = fptosi float %766 to i32
  store i32 %767, ptr %39, align 4, !tbaa !9
  %768 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %769 = getelementptr inbounds %struct.MImagePoint, ptr %768, i32 0, i32 1
  %770 = load float, ptr %769, align 4, !tbaa !42
  store float %770, ptr %40, align 4, !tbaa !15
  br label %771

771:                                              ; preds = %941, %763
  %772 = load i32, ptr %39, align 4, !tbaa !9
  %773 = sitofp i32 %772 to float
  %774 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %775 = getelementptr inbounds %struct.MImagePoint, ptr %774, i32 0, i32 0
  %776 = load float, ptr %775, align 4, !tbaa !43
  %777 = fcmp olt float %773, %776
  br i1 %777, label %778, label %947

778:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %779 = load float, ptr %40, align 4, !tbaa !15
  %780 = fpext float %779 to double
  %781 = fadd double %780, 5.000000e-01
  %782 = fptosi double %781 to i32
  store i32 %782, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %783 = load i32, ptr %39, align 4, !tbaa !9
  %784 = sitofp i32 %783 to float
  %785 = fpext float %784 to double
  %786 = fadd double %785, 5.000000e-01
  %787 = fptosi double %786 to i32
  store i32 %787, ptr %43, align 4, !tbaa !9
  %788 = load i32, ptr %37, align 4, !tbaa !9
  %789 = icmp eq i32 %788, 0
  br i1 %789, label %790, label %894

790:                                              ; preds = %778
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = load i32, ptr %42, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds ptr, ptr %791, i64 %793
  %795 = load ptr, ptr %794, align 8, !tbaa !5
  %796 = load i32, ptr %43, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds i8, ptr %795, i64 %797
  %799 = load i8, ptr %798, align 1, !tbaa !24
  %800 = zext i8 %799 to i32
  %801 = icmp eq i32 %800, 255
  br i1 %801, label %802, label %805

802:                                              ; preds = %790
  %803 = load i32, ptr %34, align 4, !tbaa !9
  %804 = add nsw i32 %803, 1
  store i32 %804, ptr %34, align 4, !tbaa !9
  br label %893

805:                                              ; preds = %790
  %806 = load ptr, ptr %18, align 8, !tbaa !5
  %807 = load i32, ptr %42, align 4, !tbaa !9
  %808 = sub nsw i32 %807, 1
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds ptr, ptr %806, i64 %809
  %811 = load ptr, ptr %810, align 8, !tbaa !5
  %812 = load i32, ptr %43, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds i8, ptr %811, i64 %813
  %815 = load i8, ptr %814, align 1, !tbaa !24
  %816 = zext i8 %815 to i32
  %817 = load ptr, ptr %18, align 8, !tbaa !5
  %818 = load i32, ptr %42, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds ptr, ptr %817, i64 %819
  %821 = load ptr, ptr %820, align 8, !tbaa !5
  %822 = load i32, ptr %43, align 4, !tbaa !9
  %823 = sub nsw i32 %822, 1
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds i8, ptr %821, i64 %824
  %826 = load i8, ptr %825, align 1, !tbaa !24
  %827 = zext i8 %826 to i32
  %828 = add nsw i32 %816, %827
  %829 = load ptr, ptr %18, align 8, !tbaa !5
  %830 = load i32, ptr %42, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds ptr, ptr %829, i64 %831
  %833 = load ptr, ptr %832, align 8, !tbaa !5
  %834 = load i32, ptr %43, align 4, !tbaa !9
  %835 = add nsw i32 %834, 1
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds i8, ptr %833, i64 %836
  %838 = load i8, ptr %837, align 1, !tbaa !24
  %839 = zext i8 %838 to i32
  %840 = add nsw i32 %828, %839
  %841 = load ptr, ptr %18, align 8, !tbaa !5
  %842 = load i32, ptr %42, align 4, !tbaa !9
  %843 = add nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds ptr, ptr %841, i64 %844
  %846 = load ptr, ptr %845, align 8, !tbaa !5
  %847 = load i32, ptr %43, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds i8, ptr %846, i64 %848
  %850 = load i8, ptr %849, align 1, !tbaa !24
  %851 = zext i8 %850 to i32
  %852 = add nsw i32 %840, %851
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %855

854:                                              ; preds = %805
  br label %892

855:                                              ; preds = %805
  %856 = load i32, ptr %34, align 4, !tbaa !9
  %857 = load i32, ptr %8, align 4, !tbaa !9
  %858 = icmp sgt i32 %856, %857
  br i1 %858, label %859, label %871

859:                                              ; preds = %855
  %860 = load i32, ptr %34, align 4, !tbaa !9
  %861 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %862 = load i32, ptr %861, align 4, !tbaa !45
  %863 = add nsw i32 %862, %860
  store i32 %863, ptr %861, align 4, !tbaa !45
  %864 = load i32, ptr %39, align 4, !tbaa !9
  %865 = sitofp i32 %864 to float
  %866 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %867 = getelementptr inbounds %struct.MImagePoint, ptr %866, i32 0, i32 0
  store float %865, ptr %867, align 4, !tbaa !46
  %868 = load float, ptr %40, align 4, !tbaa !15
  %869 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %870 = getelementptr inbounds %struct.MImagePoint, ptr %869, i32 0, i32 1
  store float %868, ptr %870, align 4, !tbaa !47
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %859, %855
  %872 = load i32, ptr %34, align 4, !tbaa !9
  %873 = load i32, ptr %36, align 4, !tbaa !9
  %874 = add nsw i32 %873, %872
  store i32 %874, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %875 = load ptr, ptr %25, align 8, !tbaa !5
  %876 = load i32, ptr %11, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds ptr, ptr %875, i64 %877
  %879 = load ptr, ptr %878, align 8, !tbaa !5
  %880 = load i32, ptr %33, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds i16, ptr %879, i64 %881
  %883 = load i16, ptr %882, align 2, !tbaa !28
  %884 = zext i16 %883 to i32
  %885 = sdiv i32 %884, 4
  %886 = load i32, ptr %36, align 4, !tbaa !9
  %887 = sub nsw i32 %885, %886
  %888 = load i32, ptr %8, align 4, !tbaa !9
  %889 = icmp slt i32 %887, %888
  br i1 %889, label %890, label %891

890:                                              ; preds = %871
  store i32 31, ptr %29, align 4
  br label %938

891:                                              ; preds = %871
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %892

892:                                              ; preds = %891, %854
  br label %893

893:                                              ; preds = %892, %802
  br label %937

894:                                              ; preds = %778
  %895 = load ptr, ptr %18, align 8, !tbaa !5
  %896 = load i32, ptr %42, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds ptr, ptr %895, i64 %897
  %899 = load ptr, ptr %898, align 8, !tbaa !5
  %900 = load i32, ptr %43, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds i8, ptr %899, i64 %901
  %903 = load i8, ptr %902, align 1, !tbaa !24
  %904 = zext i8 %903 to i32
  %905 = icmp ne i32 %904, 255
  br i1 %905, label %906, label %909

906:                                              ; preds = %894
  %907 = load i32, ptr %35, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %35, align 4, !tbaa !9
  br label %936

909:                                              ; preds = %894
  %910 = load i32, ptr %35, align 4, !tbaa !9
  %911 = load i32, ptr %9, align 4, !tbaa !9
  %912 = icmp sgt i32 %910, %911
  br i1 %912, label %913, label %923

913:                                              ; preds = %909
  %914 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %915 = load i32, ptr %914, align 4, !tbaa !45
  %916 = load i32, ptr %10, align 4, !tbaa !9
  %917 = icmp sgt i32 %915, %916
  br i1 %917, label %918, label %921

918:                                              ; preds = %913
  %919 = load ptr, ptr %7, align 8, !tbaa !5
  %920 = call ptr @mListWrite(ptr noundef %919, i32 noundef -1, ptr noundef %32, i32 noundef 52)
  br label %921

921:                                              ; preds = %918, %913
  %922 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  store i32 0, ptr %922, align 4, !tbaa !45
  br label %923

923:                                              ; preds = %921, %909
  %924 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %925 = load i32, ptr %924, align 4, !tbaa !45
  %926 = icmp eq i32 %925, 0
  br i1 %926, label %927, label %935

927:                                              ; preds = %923
  %928 = load i32, ptr %39, align 4, !tbaa !9
  %929 = sitofp i32 %928 to float
  %930 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %931 = getelementptr inbounds %struct.MImagePoint, ptr %930, i32 0, i32 0
  store float %929, ptr %931, align 4, !tbaa !48
  %932 = load float, ptr %40, align 4, !tbaa !15
  %933 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %934 = getelementptr inbounds %struct.MImagePoint, ptr %933, i32 0, i32 1
  store float %932, ptr %934, align 4, !tbaa !49
  br label %935

935:                                              ; preds = %927, %923
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %936

936:                                              ; preds = %935, %906
  br label %937

937:                                              ; preds = %936, %893
  store i32 0, ptr %29, align 4
  br label %938

938:                                              ; preds = %937, %890
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  %939 = load i32, ptr %29, align 4
  switch i32 %939, label %1615 [
    i32 0, label %940
    i32 31, label %947
  ]

940:                                              ; preds = %938
  br label %941

941:                                              ; preds = %940
  %942 = load i32, ptr %39, align 4, !tbaa !9
  %943 = add nsw i32 %942, 4
  store i32 %943, ptr %39, align 4, !tbaa !9
  %944 = load float, ptr %40, align 4, !tbaa !15
  %945 = load float, ptr %41, align 4, !tbaa !15
  %946 = fadd float %944, %945
  store float %946, ptr %40, align 4, !tbaa !15
  br label %771, !llvm.loop !50

947:                                              ; preds = %938, %771
  %948 = load i32, ptr %37, align 4, !tbaa !9
  %949 = icmp eq i32 %948, 0
  br i1 %949, label %950, label %967

950:                                              ; preds = %947
  %951 = load i32, ptr %34, align 4, !tbaa !9
  %952 = load i32, ptr %8, align 4, !tbaa !9
  %953 = icmp sgt i32 %951, %952
  br i1 %953, label %954, label %966

954:                                              ; preds = %950
  %955 = load i32, ptr %34, align 4, !tbaa !9
  %956 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %957 = load i32, ptr %956, align 4, !tbaa !45
  %958 = add nsw i32 %957, %955
  store i32 %958, ptr %956, align 4, !tbaa !45
  %959 = load i32, ptr %39, align 4, !tbaa !9
  %960 = sitofp i32 %959 to float
  %961 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %962 = getelementptr inbounds %struct.MImagePoint, ptr %961, i32 0, i32 0
  store float %960, ptr %962, align 4, !tbaa !46
  %963 = load float, ptr %40, align 4, !tbaa !15
  %964 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %965 = getelementptr inbounds %struct.MImagePoint, ptr %964, i32 0, i32 1
  store float %963, ptr %965, align 4, !tbaa !47
  br label %966

966:                                              ; preds = %954, %950
  br label %967

967:                                              ; preds = %966, %947
  br label %1173

968:                                              ; preds = %750
  %969 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %970 = getelementptr inbounds %struct.MImagePoint, ptr %969, i32 0, i32 0
  %971 = load float, ptr %970, align 4, !tbaa !43
  %972 = fptosi float %971 to i32
  store i32 %972, ptr %39, align 4, !tbaa !9
  %973 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %974 = getelementptr inbounds %struct.MImagePoint, ptr %973, i32 0, i32 1
  %975 = load float, ptr %974, align 4, !tbaa !44
  store float %975, ptr %40, align 4, !tbaa !15
  br label %976

976:                                              ; preds = %1146, %968
  %977 = load i32, ptr %39, align 4, !tbaa !9
  %978 = sitofp i32 %977 to float
  %979 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %980 = getelementptr inbounds %struct.MImagePoint, ptr %979, i32 0, i32 0
  %981 = load float, ptr %980, align 4, !tbaa !41
  %982 = fcmp olt float %978, %981
  br i1 %982, label %983, label %1152

983:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %984 = load float, ptr %40, align 4, !tbaa !15
  %985 = fpext float %984 to double
  %986 = fadd double %985, 5.000000e-01
  %987 = fptosi double %986 to i32
  store i32 %987, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %988 = load i32, ptr %39, align 4, !tbaa !9
  %989 = sitofp i32 %988 to float
  %990 = fpext float %989 to double
  %991 = fadd double %990, 5.000000e-01
  %992 = fptosi double %991 to i32
  store i32 %992, ptr %45, align 4, !tbaa !9
  %993 = load i32, ptr %37, align 4, !tbaa !9
  %994 = icmp eq i32 %993, 0
  br i1 %994, label %995, label %1099

995:                                              ; preds = %983
  %996 = load ptr, ptr %18, align 8, !tbaa !5
  %997 = load i32, ptr %44, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds ptr, ptr %996, i64 %998
  %1000 = load ptr, ptr %999, align 8, !tbaa !5
  %1001 = load i32, ptr %45, align 4, !tbaa !9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds i8, ptr %1000, i64 %1002
  %1004 = load i8, ptr %1003, align 1, !tbaa !24
  %1005 = zext i8 %1004 to i32
  %1006 = icmp eq i32 %1005, 255
  br i1 %1006, label %1007, label %1010

1007:                                             ; preds = %995
  %1008 = load i32, ptr %34, align 4, !tbaa !9
  %1009 = add nsw i32 %1008, 1
  store i32 %1009, ptr %34, align 4, !tbaa !9
  br label %1098

1010:                                             ; preds = %995
  %1011 = load ptr, ptr %18, align 8, !tbaa !5
  %1012 = load i32, ptr %44, align 4, !tbaa !9
  %1013 = sub nsw i32 %1012, 1
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds ptr, ptr %1011, i64 %1014
  %1016 = load ptr, ptr %1015, align 8, !tbaa !5
  %1017 = load i32, ptr %45, align 4, !tbaa !9
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds i8, ptr %1016, i64 %1018
  %1020 = load i8, ptr %1019, align 1, !tbaa !24
  %1021 = zext i8 %1020 to i32
  %1022 = load ptr, ptr %18, align 8, !tbaa !5
  %1023 = load i32, ptr %44, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds ptr, ptr %1022, i64 %1024
  %1026 = load ptr, ptr %1025, align 8, !tbaa !5
  %1027 = load i32, ptr %45, align 4, !tbaa !9
  %1028 = sub nsw i32 %1027, 1
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i8, ptr %1026, i64 %1029
  %1031 = load i8, ptr %1030, align 1, !tbaa !24
  %1032 = zext i8 %1031 to i32
  %1033 = add nsw i32 %1021, %1032
  %1034 = load ptr, ptr %18, align 8, !tbaa !5
  %1035 = load i32, ptr %44, align 4, !tbaa !9
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds ptr, ptr %1034, i64 %1036
  %1038 = load ptr, ptr %1037, align 8, !tbaa !5
  %1039 = load i32, ptr %45, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds i8, ptr %1038, i64 %1041
  %1043 = load i8, ptr %1042, align 1, !tbaa !24
  %1044 = zext i8 %1043 to i32
  %1045 = add nsw i32 %1033, %1044
  %1046 = load ptr, ptr %18, align 8, !tbaa !5
  %1047 = load i32, ptr %44, align 4, !tbaa !9
  %1048 = add nsw i32 %1047, 1
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds ptr, ptr %1046, i64 %1049
  %1051 = load ptr, ptr %1050, align 8, !tbaa !5
  %1052 = load i32, ptr %45, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i8, ptr %1051, i64 %1053
  %1055 = load i8, ptr %1054, align 1, !tbaa !24
  %1056 = zext i8 %1055 to i32
  %1057 = add nsw i32 %1045, %1056
  %1058 = icmp ne i32 %1057, 0
  br i1 %1058, label %1059, label %1060

1059:                                             ; preds = %1010
  br label %1097

1060:                                             ; preds = %1010
  %1061 = load i32, ptr %34, align 4, !tbaa !9
  %1062 = load i32, ptr %8, align 4, !tbaa !9
  %1063 = icmp sgt i32 %1061, %1062
  br i1 %1063, label %1064, label %1076

1064:                                             ; preds = %1060
  %1065 = load i32, ptr %34, align 4, !tbaa !9
  %1066 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1067 = load i32, ptr %1066, align 4, !tbaa !45
  %1068 = add nsw i32 %1067, %1065
  store i32 %1068, ptr %1066, align 4, !tbaa !45
  %1069 = load i32, ptr %39, align 4, !tbaa !9
  %1070 = sitofp i32 %1069 to float
  %1071 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1072 = getelementptr inbounds %struct.MImagePoint, ptr %1071, i32 0, i32 0
  store float %1070, ptr %1072, align 4, !tbaa !46
  %1073 = load float, ptr %40, align 4, !tbaa !15
  %1074 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1075 = getelementptr inbounds %struct.MImagePoint, ptr %1074, i32 0, i32 1
  store float %1073, ptr %1075, align 4, !tbaa !47
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1076

1076:                                             ; preds = %1064, %1060
  %1077 = load i32, ptr %34, align 4, !tbaa !9
  %1078 = load i32, ptr %36, align 4, !tbaa !9
  %1079 = add nsw i32 %1078, %1077
  store i32 %1079, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %1080 = load ptr, ptr %25, align 8, !tbaa !5
  %1081 = load i32, ptr %11, align 4, !tbaa !9
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds ptr, ptr %1080, i64 %1082
  %1084 = load ptr, ptr %1083, align 8, !tbaa !5
  %1085 = load i32, ptr %33, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds i16, ptr %1084, i64 %1086
  %1088 = load i16, ptr %1087, align 2, !tbaa !28
  %1089 = zext i16 %1088 to i32
  %1090 = sdiv i32 %1089, 4
  %1091 = load i32, ptr %36, align 4, !tbaa !9
  %1092 = sub nsw i32 %1090, %1091
  %1093 = load i32, ptr %8, align 4, !tbaa !9
  %1094 = icmp slt i32 %1092, %1093
  br i1 %1094, label %1095, label %1096

1095:                                             ; preds = %1076
  store i32 34, ptr %29, align 4
  br label %1143

1096:                                             ; preds = %1076
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %1097

1097:                                             ; preds = %1096, %1059
  br label %1098

1098:                                             ; preds = %1097, %1007
  br label %1142

1099:                                             ; preds = %983
  %1100 = load ptr, ptr %18, align 8, !tbaa !5
  %1101 = load i32, ptr %44, align 4, !tbaa !9
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds ptr, ptr %1100, i64 %1102
  %1104 = load ptr, ptr %1103, align 8, !tbaa !5
  %1105 = load i32, ptr %45, align 4, !tbaa !9
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i8, ptr %1104, i64 %1106
  %1108 = load i8, ptr %1107, align 1, !tbaa !24
  %1109 = zext i8 %1108 to i32
  %1110 = icmp ne i32 %1109, 255
  br i1 %1110, label %1111, label %1114

1111:                                             ; preds = %1099
  %1112 = load i32, ptr %35, align 4, !tbaa !9
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr %35, align 4, !tbaa !9
  br label %1141

1114:                                             ; preds = %1099
  %1115 = load i32, ptr %35, align 4, !tbaa !9
  %1116 = load i32, ptr %9, align 4, !tbaa !9
  %1117 = icmp sgt i32 %1115, %1116
  br i1 %1117, label %1118, label %1128

1118:                                             ; preds = %1114
  %1119 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1120 = load i32, ptr %1119, align 4, !tbaa !45
  %1121 = load i32, ptr %10, align 4, !tbaa !9
  %1122 = icmp sgt i32 %1120, %1121
  br i1 %1122, label %1123, label %1126

1123:                                             ; preds = %1118
  %1124 = load ptr, ptr %7, align 8, !tbaa !5
  %1125 = call ptr @mListWrite(ptr noundef %1124, i32 noundef -1, ptr noundef %32, i32 noundef 52)
  br label %1126

1126:                                             ; preds = %1123, %1118
  %1127 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  store i32 0, ptr %1127, align 4, !tbaa !45
  br label %1128

1128:                                             ; preds = %1126, %1114
  %1129 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1130 = load i32, ptr %1129, align 4, !tbaa !45
  %1131 = icmp eq i32 %1130, 0
  br i1 %1131, label %1132, label %1140

1132:                                             ; preds = %1128
  %1133 = load i32, ptr %39, align 4, !tbaa !9
  %1134 = sitofp i32 %1133 to float
  %1135 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1136 = getelementptr inbounds %struct.MImagePoint, ptr %1135, i32 0, i32 0
  store float %1134, ptr %1136, align 4, !tbaa !48
  %1137 = load float, ptr %40, align 4, !tbaa !15
  %1138 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1139 = getelementptr inbounds %struct.MImagePoint, ptr %1138, i32 0, i32 1
  store float %1137, ptr %1139, align 4, !tbaa !49
  br label %1140

1140:                                             ; preds = %1132, %1128
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %1141

1141:                                             ; preds = %1140, %1111
  br label %1142

1142:                                             ; preds = %1141, %1098
  store i32 0, ptr %29, align 4
  br label %1143

1143:                                             ; preds = %1142, %1095
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  %1144 = load i32, ptr %29, align 4
  switch i32 %1144, label %1615 [
    i32 0, label %1145
    i32 34, label %1152
  ]

1145:                                             ; preds = %1143
  br label %1146

1146:                                             ; preds = %1145
  %1147 = load i32, ptr %39, align 4, !tbaa !9
  %1148 = add nsw i32 %1147, 4
  store i32 %1148, ptr %39, align 4, !tbaa !9
  %1149 = load float, ptr %40, align 4, !tbaa !15
  %1150 = load float, ptr %41, align 4, !tbaa !15
  %1151 = fadd float %1149, %1150
  store float %1151, ptr %40, align 4, !tbaa !15
  br label %976, !llvm.loop !51

1152:                                             ; preds = %1143, %976
  %1153 = load i32, ptr %37, align 4, !tbaa !9
  %1154 = icmp eq i32 %1153, 0
  br i1 %1154, label %1155, label %1172

1155:                                             ; preds = %1152
  %1156 = load i32, ptr %34, align 4, !tbaa !9
  %1157 = load i32, ptr %8, align 4, !tbaa !9
  %1158 = icmp sgt i32 %1156, %1157
  br i1 %1158, label %1159, label %1171

1159:                                             ; preds = %1155
  %1160 = load i32, ptr %34, align 4, !tbaa !9
  %1161 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1162 = load i32, ptr %1161, align 4, !tbaa !45
  %1163 = add nsw i32 %1162, %1160
  store i32 %1163, ptr %1161, align 4, !tbaa !45
  %1164 = load i32, ptr %39, align 4, !tbaa !9
  %1165 = sitofp i32 %1164 to float
  %1166 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1167 = getelementptr inbounds %struct.MImagePoint, ptr %1166, i32 0, i32 0
  store float %1165, ptr %1167, align 4, !tbaa !46
  %1168 = load float, ptr %40, align 4, !tbaa !15
  %1169 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1170 = getelementptr inbounds %struct.MImagePoint, ptr %1169, i32 0, i32 1
  store float %1168, ptr %1170, align 4, !tbaa !47
  br label %1171

1171:                                             ; preds = %1159, %1155
  br label %1172

1172:                                             ; preds = %1171, %1152
  br label %1173

1173:                                             ; preds = %1172, %967
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %1598

1174:                                             ; preds = %747
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %1175 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 4
  %1176 = load float, ptr %1175, align 4, !tbaa !39
  %1177 = fpext float %1176 to double
  %1178 = fdiv double 4.000000e+00, %1177
  %1179 = fptrunc double %1178 to float
  store float %1179, ptr %46, align 4, !tbaa !15
  %1180 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %1181 = getelementptr inbounds %struct.MImagePoint, ptr %1180, i32 0, i32 1
  %1182 = load float, ptr %1181, align 4, !tbaa !42
  %1183 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %1184 = getelementptr inbounds %struct.MImagePoint, ptr %1183, i32 0, i32 1
  %1185 = load float, ptr %1184, align 4, !tbaa !44
  %1186 = fcmp olt float %1182, %1185
  br i1 %1186, label %1187, label %1392

1187:                                             ; preds = %1174
  %1188 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %1189 = getelementptr inbounds %struct.MImagePoint, ptr %1188, i32 0, i32 1
  %1190 = load float, ptr %1189, align 4, !tbaa !42
  %1191 = fptosi float %1190 to i32
  store i32 %1191, ptr %38, align 4, !tbaa !9
  %1192 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %1193 = getelementptr inbounds %struct.MImagePoint, ptr %1192, i32 0, i32 0
  %1194 = load float, ptr %1193, align 4, !tbaa !41
  store float %1194, ptr %40, align 4, !tbaa !15
  br label %1195

1195:                                             ; preds = %1365, %1187
  %1196 = load i32, ptr %38, align 4, !tbaa !9
  %1197 = sitofp i32 %1196 to float
  %1198 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %1199 = getelementptr inbounds %struct.MImagePoint, ptr %1198, i32 0, i32 1
  %1200 = load float, ptr %1199, align 4, !tbaa !44
  %1201 = fcmp olt float %1197, %1200
  br i1 %1201, label %1202, label %1371

1202:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %1203 = load i32, ptr %38, align 4, !tbaa !9
  %1204 = sitofp i32 %1203 to float
  %1205 = fpext float %1204 to double
  %1206 = fadd double %1205, 5.000000e-01
  %1207 = fptosi double %1206 to i32
  store i32 %1207, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %1208 = load float, ptr %40, align 4, !tbaa !15
  %1209 = fpext float %1208 to double
  %1210 = fadd double %1209, 5.000000e-01
  %1211 = fptosi double %1210 to i32
  store i32 %1211, ptr %48, align 4, !tbaa !9
  %1212 = load i32, ptr %37, align 4, !tbaa !9
  %1213 = icmp eq i32 %1212, 0
  br i1 %1213, label %1214, label %1318

1214:                                             ; preds = %1202
  %1215 = load ptr, ptr %18, align 8, !tbaa !5
  %1216 = load i32, ptr %47, align 4, !tbaa !9
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds ptr, ptr %1215, i64 %1217
  %1219 = load ptr, ptr %1218, align 8, !tbaa !5
  %1220 = load i32, ptr %48, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds i8, ptr %1219, i64 %1221
  %1223 = load i8, ptr %1222, align 1, !tbaa !24
  %1224 = zext i8 %1223 to i32
  %1225 = icmp eq i32 %1224, 255
  br i1 %1225, label %1226, label %1229

1226:                                             ; preds = %1214
  %1227 = load i32, ptr %34, align 4, !tbaa !9
  %1228 = add nsw i32 %1227, 1
  store i32 %1228, ptr %34, align 4, !tbaa !9
  br label %1317

1229:                                             ; preds = %1214
  %1230 = load ptr, ptr %18, align 8, !tbaa !5
  %1231 = load i32, ptr %47, align 4, !tbaa !9
  %1232 = sub nsw i32 %1231, 1
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds ptr, ptr %1230, i64 %1233
  %1235 = load ptr, ptr %1234, align 8, !tbaa !5
  %1236 = load i32, ptr %48, align 4, !tbaa !9
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds i8, ptr %1235, i64 %1237
  %1239 = load i8, ptr %1238, align 1, !tbaa !24
  %1240 = zext i8 %1239 to i32
  %1241 = load ptr, ptr %18, align 8, !tbaa !5
  %1242 = load i32, ptr %47, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds ptr, ptr %1241, i64 %1243
  %1245 = load ptr, ptr %1244, align 8, !tbaa !5
  %1246 = load i32, ptr %48, align 4, !tbaa !9
  %1247 = sub nsw i32 %1246, 1
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds i8, ptr %1245, i64 %1248
  %1250 = load i8, ptr %1249, align 1, !tbaa !24
  %1251 = zext i8 %1250 to i32
  %1252 = add nsw i32 %1240, %1251
  %1253 = load ptr, ptr %18, align 8, !tbaa !5
  %1254 = load i32, ptr %47, align 4, !tbaa !9
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds ptr, ptr %1253, i64 %1255
  %1257 = load ptr, ptr %1256, align 8, !tbaa !5
  %1258 = load i32, ptr %48, align 4, !tbaa !9
  %1259 = add nsw i32 %1258, 1
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds i8, ptr %1257, i64 %1260
  %1262 = load i8, ptr %1261, align 1, !tbaa !24
  %1263 = zext i8 %1262 to i32
  %1264 = add nsw i32 %1252, %1263
  %1265 = load ptr, ptr %18, align 8, !tbaa !5
  %1266 = load i32, ptr %47, align 4, !tbaa !9
  %1267 = add nsw i32 %1266, 1
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds ptr, ptr %1265, i64 %1268
  %1270 = load ptr, ptr %1269, align 8, !tbaa !5
  %1271 = load i32, ptr %48, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds i8, ptr %1270, i64 %1272
  %1274 = load i8, ptr %1273, align 1, !tbaa !24
  %1275 = zext i8 %1274 to i32
  %1276 = add nsw i32 %1264, %1275
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1279

1278:                                             ; preds = %1229
  br label %1316

1279:                                             ; preds = %1229
  %1280 = load i32, ptr %34, align 4, !tbaa !9
  %1281 = load i32, ptr %8, align 4, !tbaa !9
  %1282 = icmp sgt i32 %1280, %1281
  br i1 %1282, label %1283, label %1295

1283:                                             ; preds = %1279
  %1284 = load i32, ptr %34, align 4, !tbaa !9
  %1285 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1286 = load i32, ptr %1285, align 4, !tbaa !45
  %1287 = add nsw i32 %1286, %1284
  store i32 %1287, ptr %1285, align 4, !tbaa !45
  %1288 = load float, ptr %40, align 4, !tbaa !15
  %1289 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1290 = getelementptr inbounds %struct.MImagePoint, ptr %1289, i32 0, i32 0
  store float %1288, ptr %1290, align 4, !tbaa !46
  %1291 = load i32, ptr %38, align 4, !tbaa !9
  %1292 = sitofp i32 %1291 to float
  %1293 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1294 = getelementptr inbounds %struct.MImagePoint, ptr %1293, i32 0, i32 1
  store float %1292, ptr %1294, align 4, !tbaa !47
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1295

1295:                                             ; preds = %1283, %1279
  %1296 = load i32, ptr %34, align 4, !tbaa !9
  %1297 = load i32, ptr %36, align 4, !tbaa !9
  %1298 = add nsw i32 %1297, %1296
  store i32 %1298, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %1299 = load ptr, ptr %25, align 8, !tbaa !5
  %1300 = load i32, ptr %11, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds ptr, ptr %1299, i64 %1301
  %1303 = load ptr, ptr %1302, align 8, !tbaa !5
  %1304 = load i32, ptr %33, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i16, ptr %1303, i64 %1305
  %1307 = load i16, ptr %1306, align 2, !tbaa !28
  %1308 = zext i16 %1307 to i32
  %1309 = sdiv i32 %1308, 4
  %1310 = load i32, ptr %36, align 4, !tbaa !9
  %1311 = sub nsw i32 %1309, %1310
  %1312 = load i32, ptr %8, align 4, !tbaa !9
  %1313 = icmp slt i32 %1311, %1312
  br i1 %1313, label %1314, label %1315

1314:                                             ; preds = %1295
  store i32 37, ptr %29, align 4
  br label %1362

1315:                                             ; preds = %1295
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %1316

1316:                                             ; preds = %1315, %1278
  br label %1317

1317:                                             ; preds = %1316, %1226
  br label %1361

1318:                                             ; preds = %1202
  %1319 = load ptr, ptr %18, align 8, !tbaa !5
  %1320 = load i32, ptr %47, align 4, !tbaa !9
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds ptr, ptr %1319, i64 %1321
  %1323 = load ptr, ptr %1322, align 8, !tbaa !5
  %1324 = load i32, ptr %48, align 4, !tbaa !9
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds i8, ptr %1323, i64 %1325
  %1327 = load i8, ptr %1326, align 1, !tbaa !24
  %1328 = zext i8 %1327 to i32
  %1329 = icmp ne i32 %1328, 255
  br i1 %1329, label %1330, label %1333

1330:                                             ; preds = %1318
  %1331 = load i32, ptr %35, align 4, !tbaa !9
  %1332 = add nsw i32 %1331, 1
  store i32 %1332, ptr %35, align 4, !tbaa !9
  br label %1360

1333:                                             ; preds = %1318
  %1334 = load i32, ptr %35, align 4, !tbaa !9
  %1335 = load i32, ptr %9, align 4, !tbaa !9
  %1336 = icmp sgt i32 %1334, %1335
  br i1 %1336, label %1337, label %1347

1337:                                             ; preds = %1333
  %1338 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1339 = load i32, ptr %1338, align 4, !tbaa !45
  %1340 = load i32, ptr %10, align 4, !tbaa !9
  %1341 = icmp sgt i32 %1339, %1340
  br i1 %1341, label %1342, label %1345

1342:                                             ; preds = %1337
  %1343 = load ptr, ptr %7, align 8, !tbaa !5
  %1344 = call ptr @mListWrite(ptr noundef %1343, i32 noundef -1, ptr noundef %32, i32 noundef 52)
  br label %1345

1345:                                             ; preds = %1342, %1337
  %1346 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  store i32 0, ptr %1346, align 4, !tbaa !45
  br label %1347

1347:                                             ; preds = %1345, %1333
  %1348 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1349 = load i32, ptr %1348, align 4, !tbaa !45
  %1350 = icmp eq i32 %1349, 0
  br i1 %1350, label %1351, label %1359

1351:                                             ; preds = %1347
  %1352 = load float, ptr %40, align 4, !tbaa !15
  %1353 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1354 = getelementptr inbounds %struct.MImagePoint, ptr %1353, i32 0, i32 0
  store float %1352, ptr %1354, align 4, !tbaa !48
  %1355 = load i32, ptr %38, align 4, !tbaa !9
  %1356 = sitofp i32 %1355 to float
  %1357 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1358 = getelementptr inbounds %struct.MImagePoint, ptr %1357, i32 0, i32 1
  store float %1356, ptr %1358, align 4, !tbaa !49
  br label %1359

1359:                                             ; preds = %1351, %1347
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %1360

1360:                                             ; preds = %1359, %1330
  br label %1361

1361:                                             ; preds = %1360, %1317
  store i32 0, ptr %29, align 4
  br label %1362

1362:                                             ; preds = %1361, %1314
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  %1363 = load i32, ptr %29, align 4
  switch i32 %1363, label %1615 [
    i32 0, label %1364
    i32 37, label %1371
  ]

1364:                                             ; preds = %1362
  br label %1365

1365:                                             ; preds = %1364
  %1366 = load i32, ptr %38, align 4, !tbaa !9
  %1367 = add nsw i32 %1366, 4
  store i32 %1367, ptr %38, align 4, !tbaa !9
  %1368 = load float, ptr %40, align 4, !tbaa !15
  %1369 = load float, ptr %46, align 4, !tbaa !15
  %1370 = fadd float %1368, %1369
  store float %1370, ptr %40, align 4, !tbaa !15
  br label %1195, !llvm.loop !52

1371:                                             ; preds = %1362, %1195
  %1372 = load i32, ptr %37, align 4, !tbaa !9
  %1373 = icmp eq i32 %1372, 0
  br i1 %1373, label %1374, label %1391

1374:                                             ; preds = %1371
  %1375 = load i32, ptr %34, align 4, !tbaa !9
  %1376 = load i32, ptr %8, align 4, !tbaa !9
  %1377 = icmp sgt i32 %1375, %1376
  br i1 %1377, label %1378, label %1390

1378:                                             ; preds = %1374
  %1379 = load i32, ptr %34, align 4, !tbaa !9
  %1380 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1381 = load i32, ptr %1380, align 4, !tbaa !45
  %1382 = add nsw i32 %1381, %1379
  store i32 %1382, ptr %1380, align 4, !tbaa !45
  %1383 = load float, ptr %40, align 4, !tbaa !15
  %1384 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1385 = getelementptr inbounds %struct.MImagePoint, ptr %1384, i32 0, i32 0
  store float %1383, ptr %1385, align 4, !tbaa !46
  %1386 = load i32, ptr %38, align 4, !tbaa !9
  %1387 = sitofp i32 %1386 to float
  %1388 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1389 = getelementptr inbounds %struct.MImagePoint, ptr %1388, i32 0, i32 1
  store float %1387, ptr %1389, align 4, !tbaa !47
  br label %1390

1390:                                             ; preds = %1378, %1374
  br label %1391

1391:                                             ; preds = %1390, %1371
  br label %1597

1392:                                             ; preds = %1174
  %1393 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %1394 = getelementptr inbounds %struct.MImagePoint, ptr %1393, i32 0, i32 1
  %1395 = load float, ptr %1394, align 4, !tbaa !44
  %1396 = fptosi float %1395 to i32
  store i32 %1396, ptr %38, align 4, !tbaa !9
  %1397 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 3
  %1398 = getelementptr inbounds %struct.MImagePoint, ptr %1397, i32 0, i32 0
  %1399 = load float, ptr %1398, align 4, !tbaa !43
  store float %1399, ptr %40, align 4, !tbaa !15
  br label %1400

1400:                                             ; preds = %1570, %1392
  %1401 = load i32, ptr %38, align 4, !tbaa !9
  %1402 = sitofp i32 %1401 to float
  %1403 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 2
  %1404 = getelementptr inbounds %struct.MImagePoint, ptr %1403, i32 0, i32 1
  %1405 = load float, ptr %1404, align 4, !tbaa !42
  %1406 = fcmp olt float %1402, %1405
  br i1 %1406, label %1407, label %1576

1407:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %1408 = load i32, ptr %38, align 4, !tbaa !9
  %1409 = sitofp i32 %1408 to float
  %1410 = fpext float %1409 to double
  %1411 = fadd double %1410, 5.000000e-01
  %1412 = fptosi double %1411 to i32
  store i32 %1412, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %1413 = load float, ptr %40, align 4, !tbaa !15
  %1414 = fpext float %1413 to double
  %1415 = fadd double %1414, 5.000000e-01
  %1416 = fptosi double %1415 to i32
  store i32 %1416, ptr %50, align 4, !tbaa !9
  %1417 = load i32, ptr %37, align 4, !tbaa !9
  %1418 = icmp eq i32 %1417, 0
  br i1 %1418, label %1419, label %1523

1419:                                             ; preds = %1407
  %1420 = load ptr, ptr %18, align 8, !tbaa !5
  %1421 = load i32, ptr %49, align 4, !tbaa !9
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds ptr, ptr %1420, i64 %1422
  %1424 = load ptr, ptr %1423, align 8, !tbaa !5
  %1425 = load i32, ptr %50, align 4, !tbaa !9
  %1426 = sext i32 %1425 to i64
  %1427 = getelementptr inbounds i8, ptr %1424, i64 %1426
  %1428 = load i8, ptr %1427, align 1, !tbaa !24
  %1429 = zext i8 %1428 to i32
  %1430 = icmp eq i32 %1429, 255
  br i1 %1430, label %1431, label %1434

1431:                                             ; preds = %1419
  %1432 = load i32, ptr %34, align 4, !tbaa !9
  %1433 = add nsw i32 %1432, 1
  store i32 %1433, ptr %34, align 4, !tbaa !9
  br label %1522

1434:                                             ; preds = %1419
  %1435 = load ptr, ptr %18, align 8, !tbaa !5
  %1436 = load i32, ptr %49, align 4, !tbaa !9
  %1437 = sub nsw i32 %1436, 1
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds ptr, ptr %1435, i64 %1438
  %1440 = load ptr, ptr %1439, align 8, !tbaa !5
  %1441 = load i32, ptr %50, align 4, !tbaa !9
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds i8, ptr %1440, i64 %1442
  %1444 = load i8, ptr %1443, align 1, !tbaa !24
  %1445 = zext i8 %1444 to i32
  %1446 = load ptr, ptr %18, align 8, !tbaa !5
  %1447 = load i32, ptr %49, align 4, !tbaa !9
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds ptr, ptr %1446, i64 %1448
  %1450 = load ptr, ptr %1449, align 8, !tbaa !5
  %1451 = load i32, ptr %50, align 4, !tbaa !9
  %1452 = sub nsw i32 %1451, 1
  %1453 = sext i32 %1452 to i64
  %1454 = getelementptr inbounds i8, ptr %1450, i64 %1453
  %1455 = load i8, ptr %1454, align 1, !tbaa !24
  %1456 = zext i8 %1455 to i32
  %1457 = add nsw i32 %1445, %1456
  %1458 = load ptr, ptr %18, align 8, !tbaa !5
  %1459 = load i32, ptr %49, align 4, !tbaa !9
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds ptr, ptr %1458, i64 %1460
  %1462 = load ptr, ptr %1461, align 8, !tbaa !5
  %1463 = load i32, ptr %50, align 4, !tbaa !9
  %1464 = add nsw i32 %1463, 1
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds i8, ptr %1462, i64 %1465
  %1467 = load i8, ptr %1466, align 1, !tbaa !24
  %1468 = zext i8 %1467 to i32
  %1469 = add nsw i32 %1457, %1468
  %1470 = load ptr, ptr %18, align 8, !tbaa !5
  %1471 = load i32, ptr %49, align 4, !tbaa !9
  %1472 = add nsw i32 %1471, 1
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds ptr, ptr %1470, i64 %1473
  %1475 = load ptr, ptr %1474, align 8, !tbaa !5
  %1476 = load i32, ptr %50, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds i8, ptr %1475, i64 %1477
  %1479 = load i8, ptr %1478, align 1, !tbaa !24
  %1480 = zext i8 %1479 to i32
  %1481 = add nsw i32 %1469, %1480
  %1482 = icmp ne i32 %1481, 0
  br i1 %1482, label %1483, label %1484

1483:                                             ; preds = %1434
  br label %1521

1484:                                             ; preds = %1434
  %1485 = load i32, ptr %34, align 4, !tbaa !9
  %1486 = load i32, ptr %8, align 4, !tbaa !9
  %1487 = icmp sgt i32 %1485, %1486
  br i1 %1487, label %1488, label %1500

1488:                                             ; preds = %1484
  %1489 = load i32, ptr %34, align 4, !tbaa !9
  %1490 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1491 = load i32, ptr %1490, align 4, !tbaa !45
  %1492 = add nsw i32 %1491, %1489
  store i32 %1492, ptr %1490, align 4, !tbaa !45
  %1493 = load float, ptr %40, align 4, !tbaa !15
  %1494 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1495 = getelementptr inbounds %struct.MImagePoint, ptr %1494, i32 0, i32 0
  store float %1493, ptr %1495, align 4, !tbaa !46
  %1496 = load i32, ptr %38, align 4, !tbaa !9
  %1497 = sitofp i32 %1496 to float
  %1498 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1499 = getelementptr inbounds %struct.MImagePoint, ptr %1498, i32 0, i32 1
  store float %1497, ptr %1499, align 4, !tbaa !47
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %1500

1500:                                             ; preds = %1488, %1484
  %1501 = load i32, ptr %34, align 4, !tbaa !9
  %1502 = load i32, ptr %36, align 4, !tbaa !9
  %1503 = add nsw i32 %1502, %1501
  store i32 %1503, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  %1504 = load ptr, ptr %25, align 8, !tbaa !5
  %1505 = load i32, ptr %11, align 4, !tbaa !9
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds ptr, ptr %1504, i64 %1506
  %1508 = load ptr, ptr %1507, align 8, !tbaa !5
  %1509 = load i32, ptr %33, align 4, !tbaa !9
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds i16, ptr %1508, i64 %1510
  %1512 = load i16, ptr %1511, align 2, !tbaa !28
  %1513 = zext i16 %1512 to i32
  %1514 = sdiv i32 %1513, 4
  %1515 = load i32, ptr %36, align 4, !tbaa !9
  %1516 = sub nsw i32 %1514, %1515
  %1517 = load i32, ptr %8, align 4, !tbaa !9
  %1518 = icmp slt i32 %1516, %1517
  br i1 %1518, label %1519, label %1520

1519:                                             ; preds = %1500
  store i32 40, ptr %29, align 4
  br label %1567

1520:                                             ; preds = %1500
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %1521

1521:                                             ; preds = %1520, %1483
  br label %1522

1522:                                             ; preds = %1521, %1431
  br label %1566

1523:                                             ; preds = %1407
  %1524 = load ptr, ptr %18, align 8, !tbaa !5
  %1525 = load i32, ptr %49, align 4, !tbaa !9
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds ptr, ptr %1524, i64 %1526
  %1528 = load ptr, ptr %1527, align 8, !tbaa !5
  %1529 = load i32, ptr %50, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds i8, ptr %1528, i64 %1530
  %1532 = load i8, ptr %1531, align 1, !tbaa !24
  %1533 = zext i8 %1532 to i32
  %1534 = icmp ne i32 %1533, 255
  br i1 %1534, label %1535, label %1538

1535:                                             ; preds = %1523
  %1536 = load i32, ptr %35, align 4, !tbaa !9
  %1537 = add nsw i32 %1536, 1
  store i32 %1537, ptr %35, align 4, !tbaa !9
  br label %1565

1538:                                             ; preds = %1523
  %1539 = load i32, ptr %35, align 4, !tbaa !9
  %1540 = load i32, ptr %9, align 4, !tbaa !9
  %1541 = icmp sgt i32 %1539, %1540
  br i1 %1541, label %1542, label %1552

1542:                                             ; preds = %1538
  %1543 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1544 = load i32, ptr %1543, align 4, !tbaa !45
  %1545 = load i32, ptr %10, align 4, !tbaa !9
  %1546 = icmp sgt i32 %1544, %1545
  br i1 %1546, label %1547, label %1550

1547:                                             ; preds = %1542
  %1548 = load ptr, ptr %7, align 8, !tbaa !5
  %1549 = call ptr @mListWrite(ptr noundef %1548, i32 noundef -1, ptr noundef %32, i32 noundef 52)
  br label %1550

1550:                                             ; preds = %1547, %1542
  %1551 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  store i32 0, ptr %1551, align 4, !tbaa !45
  br label %1552

1552:                                             ; preds = %1550, %1538
  %1553 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1554 = load i32, ptr %1553, align 4, !tbaa !45
  %1555 = icmp eq i32 %1554, 0
  br i1 %1555, label %1556, label %1564

1556:                                             ; preds = %1552
  %1557 = load float, ptr %40, align 4, !tbaa !15
  %1558 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1559 = getelementptr inbounds %struct.MImagePoint, ptr %1558, i32 0, i32 0
  store float %1557, ptr %1559, align 4, !tbaa !48
  %1560 = load i32, ptr %38, align 4, !tbaa !9
  %1561 = sitofp i32 %1560 to float
  %1562 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 0
  %1563 = getelementptr inbounds %struct.MImagePoint, ptr %1562, i32 0, i32 1
  store float %1561, ptr %1563, align 4, !tbaa !49
  br label %1564

1564:                                             ; preds = %1556, %1552
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %1565

1565:                                             ; preds = %1564, %1535
  br label %1566

1566:                                             ; preds = %1565, %1522
  store i32 0, ptr %29, align 4
  br label %1567

1567:                                             ; preds = %1566, %1519
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  %1568 = load i32, ptr %29, align 4
  switch i32 %1568, label %1615 [
    i32 0, label %1569
    i32 40, label %1576
  ]

1569:                                             ; preds = %1567
  br label %1570

1570:                                             ; preds = %1569
  %1571 = load i32, ptr %38, align 4, !tbaa !9
  %1572 = add nsw i32 %1571, 4
  store i32 %1572, ptr %38, align 4, !tbaa !9
  %1573 = load float, ptr %40, align 4, !tbaa !15
  %1574 = load float, ptr %46, align 4, !tbaa !15
  %1575 = fadd float %1573, %1574
  store float %1575, ptr %40, align 4, !tbaa !15
  br label %1400, !llvm.loop !53

1576:                                             ; preds = %1567, %1400
  %1577 = load i32, ptr %37, align 4, !tbaa !9
  %1578 = icmp eq i32 %1577, 0
  br i1 %1578, label %1579, label %1596

1579:                                             ; preds = %1576
  %1580 = load i32, ptr %34, align 4, !tbaa !9
  %1581 = load i32, ptr %8, align 4, !tbaa !9
  %1582 = icmp sgt i32 %1580, %1581
  br i1 %1582, label %1583, label %1595

1583:                                             ; preds = %1579
  %1584 = load i32, ptr %34, align 4, !tbaa !9
  %1585 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1586 = load i32, ptr %1585, align 4, !tbaa !45
  %1587 = add nsw i32 %1586, %1584
  store i32 %1587, ptr %1585, align 4, !tbaa !45
  %1588 = load float, ptr %40, align 4, !tbaa !15
  %1589 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1590 = getelementptr inbounds %struct.MImagePoint, ptr %1589, i32 0, i32 0
  store float %1588, ptr %1590, align 4, !tbaa !46
  %1591 = load i32, ptr %38, align 4, !tbaa !9
  %1592 = sitofp i32 %1591 to float
  %1593 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 1
  %1594 = getelementptr inbounds %struct.MImagePoint, ptr %1593, i32 0, i32 1
  store float %1592, ptr %1594, align 4, !tbaa !47
  br label %1595

1595:                                             ; preds = %1583, %1579
  br label %1596

1596:                                             ; preds = %1595, %1576
  br label %1597

1597:                                             ; preds = %1596, %1391
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %1598

1598:                                             ; preds = %1597, %1173
  %1599 = getelementptr inbounds %struct.HoughLineInfo, ptr %32, i32 0, i32 8
  %1600 = load i32, ptr %1599, align 4, !tbaa !45
  %1601 = load i32, ptr %10, align 4, !tbaa !9
  %1602 = icmp sgt i32 %1600, %1601
  br i1 %1602, label %1603, label %1606

1603:                                             ; preds = %1598
  %1604 = load ptr, ptr %7, align 8, !tbaa !5
  %1605 = call ptr @mListWrite(ptr noundef %1604, i32 noundef -1, ptr noundef %32, i32 noundef 52)
  br label %1606

1606:                                             ; preds = %1603, %1598
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %1607

1607:                                             ; preds = %1606, %691, %602, %433, %386
  %1608 = load i32, ptr %33, align 4, !tbaa !9
  %1609 = add nsw i32 %1608, 1
  store i32 %1609, ptr %33, align 4, !tbaa !9
  br label %368, !llvm.loop !54

1610:                                             ; preds = %371
  br label %1611

1611:                                             ; preds = %1610
  %1612 = load i32, ptr %11, align 4, !tbaa !9
  %1613 = add nsw i32 %1612, 1
  store i32 %1613, ptr %11, align 4, !tbaa !9
  br label %362, !llvm.loop !55

1614:                                             ; preds = %362
  call void @llvm.lifetime.end.p0(i64 52, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, 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 %11) #6
  ret void

1615:                                             ; preds = %1567, %1362, %1143, %938
  unreachable
}

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) #2

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

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

declare ptr @GetHandle(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #2

declare ptr @TableCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) #2

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

declare double @mSin(double noundef) #2

declare double @mCos(double noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

declare ptr @mListWrite(ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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, !10, i64 0}
!12 = !{!"MImage", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16, !6, i64 48}
!13 = !{!12, !10, i64 4}
!14 = !{!12, !10, i64 8}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = !{!18, !6, i64 16}
!18 = !{!"MHandle", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16}
!19 = !{!18, !10, i64 4}
!20 = !{!21, !6, i64 2896}
!21 = !{!"HandleImageHoughLine", !7, i64 0, !7, i64 1448, !6, i64 2896}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!7, !7, i64 0}
!25 = !{!26, !10, i64 4}
!26 = !{!"MTable", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!27 = distinct !{!27, !23}
!28 = !{!29, !29, i64 0}
!29 = !{!"short", !7, i64 0}
!30 = distinct !{!30, !23}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !23}
!33 = !{!34, !10, i64 0}
!34 = !{!"MList", !10, i64 0, !6, i64 8}
!35 = !{!36, !16, i64 40}
!36 = !{!"HoughLineInfo", !37, i64 0, !37, i64 8, !37, i64 16, !37, i64 24, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !10, i64 48}
!37 = !{!"MImagePoint", !16, i64 0, !16, i64 4}
!38 = !{!36, !16, i64 44}
!39 = !{!36, !16, i64 32}
!40 = !{!36, !16, i64 36}
!41 = !{!36, !16, i64 16}
!42 = !{!36, !16, i64 20}
!43 = !{!36, !16, i64 24}
!44 = !{!36, !16, i64 28}
!45 = !{!36, !10, i64 48}
!46 = !{!36, !16, i64 8}
!47 = !{!36, !16, i64 12}
!48 = !{!36, !16, i64 0}
!49 = !{!36, !16, i64 4}
!50 = distinct !{!50, !23}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !23}
!53 = distinct !{!53, !23}
!54 = distinct !{!54, !23}
!55 = distinct !{!55, !23}


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

%struct.HoughLineInfo = type { %struct.MImagePoint, %struct.MImagePoint, %struct.MImagePoint, %struct.MImagePoint, float, float, float, float, i32 }
%struct.MImagePoint = type { float, float }

@.str = external hidden unnamed_addr constant [84 x i8], align 1
@__FUNCTION__.mImageHoughLine = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [24 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @endImageHoughLine(ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @mImageHoughLine(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #0 {
  %6 = alloca %struct.HoughLineInfo, align 4
  %magicptr = ptrtoint ptr %0 to i64
  switch i64 %magicptr, label %7 [
    i64 -1, label %.thread
    i64 0, label %.thread
  ]

7:                                                ; preds = %5
  %8 = getelementptr inbounds i8, ptr %0, i64 16
  %9 = icmp eq ptr %8, inttoptr (i64 -1 to ptr)
  br i1 %9, label %.thread, label %10

10:                                               ; preds = %7
  %11 = load i32, ptr %0, align 8, !tbaa !5
  %12 = icmp slt i32 %11, 1
  br i1 %12, label %.thread, label %13

13:                                               ; preds = %10
  %14 = getelementptr inbounds i8, ptr %0, i64 4
  %15 = load i32, ptr %14, align 4, !tbaa !11
  %16 = icmp slt i32 %15, 1
  br i1 %16, label %.thread, label %17

17:                                               ; preds = %13
  %18 = getelementptr inbounds i8, ptr %0, i64 8
  %19 = load i32, ptr %18, align 8, !tbaa !12
  %20 = icmp sgt i32 %19, 0
  br i1 %20, label %21, label %.thread

.thread:                                          ; preds = %7, %10, %13, %5, %5, %17
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 46, ptr noundef nonnull @__FUNCTION__.mImageHoughLine, ptr noundef nonnull @.str.1) #6
  br label %21

21:                                               ; preds = %.thread, %17
  %22 = icmp slt i32 %4, 1
  br i1 %22, label %23, label %24

23:                                               ; preds = %21
  tail call void (i32, i32, ptr, i32, ptr, ptr, ...) @m_Exception(i32 noundef 1, i32 noundef -1, ptr noundef nonnull @.str, i32 noundef 47, ptr noundef nonnull @__FUNCTION__.mImageHoughLine, ptr noundef nonnull @.str.2) #6
  br label %24

24:                                               ; preds = %23, %21
  %25 = icmp slt i32 %2, 1
  %spec.select = select i1 %25, i32 %4, i32 %2
  %spec.store.select = tail call i32 @llvm.smax.i32(i32 %3, i32 0)
  %26 = getelementptr inbounds i8, ptr %0, i64 4
  %27 = load i32, ptr %26, align 4, !tbaa !11
  %28 = getelementptr inbounds i8, ptr %0, i64 8
  %29 = load i32, ptr %28, align 8, !tbaa !12
  %30 = sitofp i32 %29 to float
  %31 = fmul float %30, 5.000000e-01
  %32 = sitofp i32 %27 to float
  %33 = fmul float %32, 5.000000e-01
  %34 = getelementptr inbounds i8, ptr %0, i64 16
  %35 = load ptr, ptr %34, align 8, !tbaa !13
  %36 = fmul float %33, %33
  %37 = tail call float @llvm.fmuladd.f32(float %31, float %31, float %36)
  %38 = fpext float %37 to double
  %sqrt = tail call double @llvm.sqrt.f64(double %38)
  %39 = fptosi double %sqrt to i32
  %40 = add i32 %39, 1
  %41 = tail call ptr @GetHandle(ptr noundef %0, i32 noundef 2904, i32 noundef 1029501661, ptr noundef nonnull @endImageHoughLine) #6
  %42 = getelementptr inbounds i8, ptr %41, i64 16
  %43 = load ptr, ptr %42, align 8, !tbaa !14
  %44 = getelementptr inbounds i8, ptr %41, i64 4
  %45 = load volatile i32, ptr %44, align 4, !tbaa !16
  %46 = icmp eq i32 %45, 0
  br i1 %46, label %47, label %70

47:                                               ; preds = %24
  %48 = getelementptr inbounds i8, ptr %43, i64 2896
  %49 = load ptr, ptr %48, align 8, !tbaa !17
  %50 = icmp eq ptr %49, null
  %51 = shl nsw i32 %40, 1
  br i1 %50, label %52, label %54

52:                                               ; preds = %47
  %53 = tail call ptr @TableCreate(i32 noundef %51, i32 noundef 362, i32 noundef 2, ptr noundef null) #6
  store ptr %53, ptr %48, align 8, !tbaa !17
  br label %55

54:                                               ; preds = %47
  tail call void @TableRedefine(ptr noundef nonnull %49, i32 noundef %51, i32 noundef 362, i32 noundef 2, ptr noundef null) #6
  br label %55

55:                                               ; preds = %54, %52
  %56 = getelementptr inbounds i8, ptr %43, i64 1448
  br label %58

57:                                               ; preds = %58
  store volatile i32 1, ptr %44, align 4, !tbaa !16
  br label %70

58:                                               ; preds = %55, %58
  %indvars.iv = phi i64 [ 0, %55 ], [ %indvars.iv.next, %58 ]
  %59 = trunc nuw nsw i64 %indvars.iv to i32
  %60 = uitofp nneg i32 %59 to float
  %61 = fadd float %60, -1.000000e+00
  %62 = fmul float %61, 5.000000e-01
  %63 = fpext float %62 to double
  %64 = tail call double @mSin(double noundef %63) #6
  %65 = fptrunc double %64 to float
  %66 = getelementptr inbounds [362 x float], ptr %43, i64 0, i64 %indvars.iv
  store float %65, ptr %66, align 4, !tbaa !19
  %67 = tail call double @mCos(double noundef %63) #6
  %68 = fptrunc double %67 to float
  %69 = getelementptr inbounds [362 x float], ptr %56, i64 0, i64 %indvars.iv
  store float %68, ptr %69, align 4, !tbaa !19
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 362
  br i1 %exitcond.not, label %57, label %58, !llvm.loop !21

70:                                               ; preds = %57, %24
  %71 = getelementptr inbounds i8, ptr %43, i64 2896
  %72 = load ptr, ptr %71, align 8, !tbaa !17
  %73 = getelementptr inbounds i8, ptr %72, i64 16
  %74 = load ptr, ptr %73, align 8, !tbaa !23
  %75 = shl i32 %40, 1
  %76 = icmp sgt i32 %39, -1
  br i1 %76, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %70
  %smax = tail call i32 @llvm.smax.i32(i32 %75, i32 1)
  %wide.trip.count = zext nneg i32 %smax to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %77 = icmp slt i32 %75, 4
  br i1 %77, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %wide.trip.count, 2147483644
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv631 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvars.iv.next632.3, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %78 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv631
  %79 = load ptr, ptr %78, align 8, !tbaa !13
  %80 = load ptr, ptr %71, align 8, !tbaa !17
  %81 = getelementptr inbounds i8, ptr %80, i64 4
  %82 = load i32, ptr %81, align 4, !tbaa !24
  %83 = sext i32 %82 to i64
  %84 = shl nsw i64 %83, 1
  tail call void @llvm.memset.p0.i64(ptr align 2 %79, i8 0, i64 %84, i1 false)
  %indvars.iv.next632 = or disjoint i64 %indvars.iv631, 1
  %85 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv.next632
  %86 = load ptr, ptr %85, align 8, !tbaa !13
  %87 = load ptr, ptr %71, align 8, !tbaa !17
  %88 = getelementptr inbounds i8, ptr %87, i64 4
  %89 = load i32, ptr %88, align 4, !tbaa !24
  %90 = sext i32 %89 to i64
  %91 = shl nsw i64 %90, 1
  tail call void @llvm.memset.p0.i64(ptr align 2 %86, i8 0, i64 %91, i1 false)
  %indvars.iv.next632.1 = or disjoint i64 %indvars.iv631, 2
  %92 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv.next632.1
  %93 = load ptr, ptr %92, align 8, !tbaa !13
  %94 = load ptr, ptr %71, align 8, !tbaa !17
  %95 = getelementptr inbounds i8, ptr %94, i64 4
  %96 = load i32, ptr %95, align 4, !tbaa !24
  %97 = sext i32 %96 to i64
  %98 = shl nsw i64 %97, 1
  tail call void @llvm.memset.p0.i64(ptr align 2 %93, i8 0, i64 %98, i1 false)
  %indvars.iv.next632.2 = or disjoint i64 %indvars.iv631, 3
  %99 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv.next632.2
  %100 = load ptr, ptr %99, align 8, !tbaa !13
  %101 = load ptr, ptr %71, align 8, !tbaa !17
  %102 = getelementptr inbounds i8, ptr %101, i64 4
  %103 = load i32, ptr %102, align 4, !tbaa !24
  %104 = sext i32 %103 to i64
  %105 = shl nsw i64 %104, 1
  tail call void @llvm.memset.p0.i64(ptr align 2 %100, i8 0, i64 %105, i1 false)
  %indvars.iv.next632.3 = add nuw nsw i64 %indvars.iv631, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !26

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv631.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next632.3, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %indvars.iv631.epil = phi i64 [ %indvars.iv.next632.epil, %.lr.ph.epil ], [ %indvars.iv631.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %106 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv631.epil
  %107 = load ptr, ptr %106, align 8, !tbaa !13
  %108 = load ptr, ptr %71, align 8, !tbaa !17
  %109 = getelementptr inbounds i8, ptr %108, i64 4
  %110 = load i32, ptr %109, align 4, !tbaa !24
  %111 = sext i32 %110 to i64
  %112 = shl nsw i64 %111, 1
  tail call void @llvm.memset.p0.i64(ptr align 2 %107, i8 0, i64 %112, i1 false)
  %indvars.iv.next632.epil = add nuw nsw i64 %indvars.iv631.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !27

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %70
  %113 = getelementptr inbounds i8, ptr %43, i64 1448
  %114 = icmp sgt i32 %27, 0
  br i1 %114, label %.preheader541.lr.ph, label %._crit_edge553

.preheader541.lr.ph:                              ; preds = %._crit_edge
  %115 = icmp sgt i32 %29, 0
  %116 = sitofp i32 %40 to float
  br i1 %115, label %.preheader541.us.preheader, label %._crit_edge553

.preheader541.us.preheader:                       ; preds = %.preheader541.lr.ph
  %wide.trip.count647 = zext nneg i32 %27 to i64
  %wide.trip.count642 = zext nneg i32 %29 to i64
  br label %.preheader541.us

.preheader541.us:                                 ; preds = %.preheader541.us.preheader, %._crit_edge551.us
  %indvars.iv644 = phi i64 [ 0, %.preheader541.us.preheader ], [ %indvars.iv.next645, %._crit_edge551.us ]
  %117 = getelementptr inbounds ptr, ptr %35, i64 %indvars.iv644
  %118 = load ptr, ptr %117, align 8, !tbaa !13
  %119 = trunc nuw nsw i64 %indvars.iv644 to i32
  %120 = uitofp nneg i32 %119 to float
  %121 = fsub float %120, %33
  br label %122

122:                                              ; preds = %.preheader541.us, %.loopexit.us
  %indvars.iv639 = phi i64 [ 0, %.preheader541.us ], [ %indvars.iv.next640, %.loopexit.us ]
  %123 = getelementptr inbounds i8, ptr %118, i64 %indvars.iv639
  %124 = load i8, ptr %123, align 1, !tbaa !23
  %125 = icmp eq i8 %124, -1
  br i1 %125, label %.preheader540.us, label %.loopexit.us

.loopexit.us:                                     ; preds = %126, %122
  %indvars.iv.next640 = add nuw nsw i64 %indvars.iv639, 1
  %exitcond643.not = icmp eq i64 %indvars.iv.next640, %wide.trip.count642
  br i1 %exitcond643.not, label %._crit_edge551.us, label %122, !llvm.loop !29

126:                                              ; preds = %.preheader540.us, %126
  %indvars.iv635 = phi i64 [ 0, %.preheader540.us ], [ %indvars.iv.next636, %126 ]
  %127 = getelementptr inbounds float, ptr %113, i64 %indvars.iv635
  %128 = load float, ptr %127, align 4, !tbaa !19
  %129 = getelementptr inbounds float, ptr %43, i64 %indvars.iv635
  %130 = load float, ptr %129, align 4, !tbaa !19
  %131 = fmul float %121, %130
  %132 = tail call float @llvm.fmuladd.f32(float %145, float %128, float %131)
  %133 = fadd float %132, %116
  %134 = fpext float %133 to double
  %135 = fadd double %134, 5.000000e-01
  %136 = fptosi double %135 to i32
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds ptr, ptr %74, i64 %137
  %139 = load ptr, ptr %138, align 8, !tbaa !13
  %140 = getelementptr inbounds i16, ptr %139, i64 %indvars.iv635
  %141 = load i16, ptr %140, align 2, !tbaa !30
  %142 = add i16 %141, 1
  store i16 %142, ptr %140, align 2, !tbaa !30
  %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1
  %exitcond638.not = icmp eq i64 %indvars.iv.next636, 362
  br i1 %exitcond638.not, label %.loopexit.us, label %126, !llvm.loop !32

.preheader540.us:                                 ; preds = %122
  %143 = trunc nuw nsw i64 %indvars.iv639 to i32
  %144 = uitofp nneg i32 %143 to float
  %145 = fsub float %144, %31
  br label %126

._crit_edge551.us:                                ; preds = %.loopexit.us
  %indvars.iv.next645 = add nuw nsw i64 %indvars.iv644, 1
  %exitcond648.not = icmp eq i64 %indvars.iv.next645, %wide.trip.count647
  br i1 %exitcond648.not, label %._crit_edge553, label %.preheader541.us, !llvm.loop !33

._crit_edge553:                                   ; preds = %._crit_edge551.us, %.preheader541.lr.ph, %._crit_edge
  store i32 0, ptr %1, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 52, ptr nonnull %6) #6
  %146 = ashr i32 %4, 2
  %147 = ashr i32 %spec.select, 2
  %148 = lshr i32 %spec.store.select, 2
  br i1 %76, label %.preheader.lr.ph, label %._crit_edge628

.preheader.lr.ph:                                 ; preds = %._crit_edge553
  %149 = and i32 %4, -4
  %150 = getelementptr inbounds i8, ptr %6, i64 40
  %151 = getelementptr inbounds i8, ptr %6, i64 44
  %152 = getelementptr inbounds i8, ptr %6, i64 32
  %153 = getelementptr inbounds i8, ptr %6, i64 36
  %154 = getelementptr inbounds i8, ptr %6, i64 16
  %155 = getelementptr inbounds i8, ptr %6, i64 20
  %156 = getelementptr inbounds i8, ptr %6, i64 24
  %157 = getelementptr inbounds i8, ptr %6, i64 28
  %158 = getelementptr inbounds i8, ptr %6, i64 48
  %159 = getelementptr inbounds i8, ptr %6, i64 4
  %160 = getelementptr inbounds i8, ptr %6, i64 8
  %161 = getelementptr inbounds i8, ptr %6, i64 12
  %smax656 = tail call i32 @llvm.smax.i32(i32 %75, i32 1)
  %wide.trip.count657 = zext nneg i32 %smax656 to i64
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %166
  %indvars.iv653 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next654, %166 ]
  %162 = getelementptr inbounds ptr, ptr %74, i64 %indvars.iv653
  %163 = trunc i64 %indvars.iv653 to i32
  %164 = sub i32 %163, %40
  %165 = sitofp i32 %164 to float
  br label %167

166:                                              ; preds = %607
  %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1
  %exitcond658.not = icmp eq i64 %indvars.iv.next654, %wide.trip.count657
  br i1 %exitcond658.not, label %._crit_edge628, label %.preheader, !llvm.loop !36

167:                                              ; preds = %.preheader, %607
  %indvars.iv649 = phi i64 [ 1, %.preheader ], [ %indvars.iv.next650, %607 ]
  %168 = load ptr, ptr %162, align 8, !tbaa !13
  %169 = getelementptr inbounds i16, ptr %168, i64 %indvars.iv649
  %170 = load i16, ptr %169, align 2, !tbaa !30
  %171 = zext i16 %170 to i32
  %172 = icmp sgt i32 %149, %171
  br i1 %172, label %607, label %173

173:                                              ; preds = %167
  %174 = getelementptr i8, ptr %169, i64 -2
  %175 = load i16, ptr %174, align 2, !tbaa !30
  %176 = icmp ult i16 %170, %175
  br i1 %176, label %607, label %177

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %169, i64 2
  %179 = load i16, ptr %178, align 2, !tbaa !30
  %180 = icmp ult i16 %170, %179
  br i1 %180, label %607, label %181

181:                                              ; preds = %177
  %182 = add i16 %170, 1
  store i16 %182, ptr %169, align 2, !tbaa !30
  %183 = trunc nuw nsw i64 %indvars.iv649 to i32
  %184 = uitofp nneg i32 %183 to float
  %185 = fadd float %184, -1.000000e+00
  %186 = fmul float %185, 5.000000e-01
  store float %186, ptr %150, align 4, !tbaa !37
  store float %165, ptr %151, align 4, !tbaa !40
  %187 = getelementptr inbounds float, ptr %43, i64 %indvars.iv649
  %188 = load float, ptr %187, align 4, !tbaa !19
  %189 = fcmp oeq float %188, 0.000000e+00
  br i1 %189, label %191, label %._crit_edge659

._crit_edge659:                                   ; preds = %181
  %.phi.trans.insert = getelementptr inbounds float, ptr %113, i64 %indvars.iv649
  %.pre = load float, ptr %.phi.trans.insert, align 4, !tbaa !19
  %190 = fdiv float %.pre, %188
  br label %193

191:                                              ; preds = %181
  store float 0x3F1A36E2E0000000, ptr %187, align 4, !tbaa !19
  %192 = getelementptr inbounds float, ptr %113, i64 %indvars.iv649
  store float 1.000000e+00, ptr %192, align 4, !tbaa !19
  %.pre660 = load float, ptr %151, align 4, !tbaa !40
  br label %193

193:                                              ; preds = %._crit_edge659, %191
  %194 = phi float [ %165, %._crit_edge659 ], [ %.pre660, %191 ]
  %195 = phi float [ %190, %._crit_edge659 ], [ 1.000000e+04, %191 ]
  %196 = getelementptr inbounds float, ptr %113, i64 %indvars.iv649
  %197 = fsub float 0.000000e+00, %195
  store float %197, ptr %152, align 4, !tbaa !41
  %198 = load float, ptr %187, align 4, !tbaa !19
  %199 = load float, ptr %196, align 4, !tbaa !19
  %200 = fmul float %31, %199
  %201 = insertelement <2 x float> poison, float %194, i64 0
  %202 = insertelement <2 x float> %201, float %200, i64 1
  %203 = insertelement <2 x float> poison, float %198, i64 0
  %204 = shufflevector <2 x float> %203, <2 x float> poison, <2 x i32> zeroinitializer
  %205 = fdiv <2 x float> %202, %204
  %shift = shufflevector <2 x float> %205, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %206 = fadd <2 x float> %205, %shift
  %207 = extractelement <2 x float> %206, i64 0
  %208 = fadd float %33, %207
  store float %208, ptr %153, align 4, !tbaa !42
  store float 0.000000e+00, ptr %154, align 4, !tbaa !43
  store float %208, ptr %155, align 4, !tbaa !44
  %209 = fcmp olt float %208, 0.000000e+00
  br i1 %209, label %214, label %210

210:                                              ; preds = %193
  %211 = load i32, ptr %26, align 4, !tbaa !11
  %212 = sitofp i32 %211 to float
  %213 = fcmp ult float %208, %212
  br i1 %213, label %._crit_edge661, label %214

._crit_edge661:                                   ; preds = %210
  %.pre662 = load i32, ptr %28, align 8, !tbaa !12
  %.pre714 = sitofp i32 %.pre662 to float
  br label %235

214:                                              ; preds = %210, %193
  store float 0.000000e+00, ptr %155, align 4, !tbaa !44
  %215 = fsub float 0.000000e+00, %208
  %216 = fdiv float %215, %197
  store float %216, ptr %154, align 4, !tbaa !43
  %217 = fcmp olt float %216, 0.000000e+00
  br i1 %217, label %222, label %218

218:                                              ; preds = %214
  %219 = load i32, ptr %28, align 8, !tbaa !12
  %220 = sitofp i32 %219 to float
  %221 = fcmp ult float %216, %220
  br i1 %221, label %thread-pre-split, label %222

222:                                              ; preds = %218, %214
  %223 = load i32, ptr %26, align 4, !tbaa !11
  %224 = add nsw i32 %223, -1
  %225 = sitofp i32 %224 to float
  store float %225, ptr %155, align 4, !tbaa !44
  %226 = fsub float %225, %208
  %227 = fdiv float %226, %197
  store float %227, ptr %154, align 4, !tbaa !43
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %218, %222
  %228 = phi float [ %225, %222 ], [ 0.000000e+00, %218 ]
  %229 = phi float [ %227, %222 ], [ %216, %218 ]
  %230 = fcmp olt float %229, 0.000000e+00
  br i1 %230, label %607, label %231

231:                                              ; preds = %thread-pre-split
  %232 = load i32, ptr %28, align 8, !tbaa !12
  %233 = sitofp i32 %232 to float
  %234 = fcmp ult float %229, %233
  br i1 %234, label %._crit_edge684, label %607

._crit_edge684:                                   ; preds = %231
  %.pre663.pre = load i32, ptr %26, align 4, !tbaa !11
  br label %235

235:                                              ; preds = %._crit_edge684, %._crit_edge661
  %.pre-phi = phi float [ %233, %._crit_edge684 ], [ %.pre714, %._crit_edge661 ]
  %.pre663 = phi i32 [ %.pre663.pre, %._crit_edge684 ], [ %211, %._crit_edge661 ]
  %236 = phi float [ %228, %._crit_edge684 ], [ %208, %._crit_edge661 ]
  %237 = phi float [ %229, %._crit_edge684 ], [ 0.000000e+00, %._crit_edge661 ]
  store float %.pre-phi, ptr %156, align 4, !tbaa !45
  %238 = call float @llvm.fmuladd.f32(float %197, float %.pre-phi, float %208)
  store float %238, ptr %157, align 4, !tbaa !46
  %239 = fcmp uge float %238, 0.000000e+00
  %240 = sitofp i32 %.pre663 to float
  %241 = fcmp ult float %238, %240
  %or.cond736 = select i1 %239, i1 %241, i1 false
  br i1 %or.cond736, label %257, label %242

242:                                              ; preds = %235
  %243 = add nsw i32 %.pre663, -1
  %244 = sitofp i32 %243 to float
  store float %244, ptr %157, align 4, !tbaa !46
  %245 = fsub float %244, %208
  %246 = fdiv float %245, %197
  store float %246, ptr %156, align 4, !tbaa !45
  %247 = fcmp uge float %246, 0.000000e+00
  %248 = fcmp ult float %246, %.pre-phi
  %or.cond538 = select i1 %247, i1 %248, i1 false
  br i1 %or.cond538, label %252, label %249

249:                                              ; preds = %242
  store float 0.000000e+00, ptr %157, align 4, !tbaa !46
  %250 = fsub float 0.000000e+00, %208
  %251 = fdiv float %250, %197
  store float %251, ptr %156, align 4, !tbaa !45
  br label %252

252:                                              ; preds = %242, %249
  %253 = phi float [ 0.000000e+00, %249 ], [ %244, %242 ]
  %254 = phi float [ %251, %249 ], [ %246, %242 ]
  %255 = fcmp uge float %254, 0.000000e+00
  %256 = fcmp ult float %254, %.pre-phi
  %or.cond539 = select i1 %255, i1 %256, i1 false
  br i1 %or.cond539, label %257, label %607

257:                                              ; preds = %235, %252
  %258 = phi float [ %253, %252 ], [ %238, %235 ]
  %259 = phi float [ %254, %252 ], [ %.pre-phi, %235 ]
  store i32 0, ptr %158, align 4, !tbaa !47
  %260 = fsub float %237, %259
  %261 = call float @llvm.fabs.f32(float %260)
  %262 = fsub float %236, %258
  %263 = call float @llvm.fabs.f32(float %262)
  %264 = fcmp ogt float %261, %263
  br i1 %264, label %265, label %434

265:                                              ; preds = %257
  %266 = fmul float %197, 4.000000e+00
  %267 = fcmp olt float %237, %259
  br i1 %267, label %268, label %351

268:                                              ; preds = %265
  %269 = fptosi float %237 to i32
  %270 = sitofp i32 %269 to float
  %271 = fcmp ogt float %259, %270
  br i1 %271, label %.lr.ph615, label %._crit_edge616.thread

.lr.ph615:                                        ; preds = %268, %339
  %.pre683.pre710 = phi float [ %.pre683.pre711, %339 ], [ %259, %268 ]
  %.pre683695 = phi float [ %.pre683696, %339 ], [ %259, %268 ]
  %272 = phi float [ %340, %339 ], [ %259, %268 ]
  %273 = phi i32 [ %341, %339 ], [ 0, %268 ]
  %.pr476 = phi i32 [ %.pr476679, %339 ], [ 0, %268 ]
  %274 = phi float [ %344, %339 ], [ %270, %268 ]
  %.0367613 = phi i32 [ %.2369.ph, %339 ], [ 0, %268 ]
  %.0371612 = phi float [ %343, %339 ], [ %236, %268 ]
  %.0375611 = phi i32 [ %342, %339 ], [ %269, %268 ]
  %.0379610 = phi i32 [ %.2381.ph, %339 ], [ 1, %268 ]
  %.0395609 = phi i32 [ %.2397.ph, %339 ], [ 0, %268 ]
  %.0407608 = phi i32 [ %.3410.ph, %339 ], [ 0, %268 ]
  %275 = fpext float %.0371612 to double
  %276 = fadd double %275, 5.000000e-01
  %277 = fptosi double %276 to i32
  %278 = fpext float %274 to double
  %279 = fadd double %278, 5.000000e-01
  %280 = fptosi double %279 to i32
  %281 = icmp eq i32 %.0379610, 0
  %282 = sext i32 %277 to i64
  %283 = getelementptr inbounds ptr, ptr %35, i64 %282
  %284 = load ptr, ptr %283, align 8, !tbaa !13
  %285 = sext i32 %280 to i64
  %286 = getelementptr inbounds i8, ptr %284, i64 %285
  %287 = load i8, ptr %286, align 1, !tbaa !23
  %288 = icmp eq i8 %287, -1
  br i1 %281, label %289, label %326

289:                                              ; preds = %.lr.ph615
  br i1 %288, label %290, label %292

290:                                              ; preds = %289
  %291 = add nsw i32 %.0367613, 1
  br label %339

292:                                              ; preds = %289
  %293 = getelementptr i8, ptr %283, i64 -8
  %294 = load ptr, ptr %293, align 8, !tbaa !13
  %295 = getelementptr inbounds i8, ptr %294, i64 %285
  %296 = load i8, ptr %295, align 1, !tbaa !23
  %297 = zext i8 %296 to i32
  %298 = getelementptr i8, ptr %286, i64 -1
  %299 = load i8, ptr %298, align 1, !tbaa !23
  %300 = zext i8 %299 to i32
  %301 = add nuw nsw i32 %300, %297
  %302 = getelementptr i8, ptr %286, i64 1
  %303 = load i8, ptr %302, align 1, !tbaa !23
  %304 = zext i8 %303 to i32
  %305 = add nuw nsw i32 %301, %304
  %306 = getelementptr i8, ptr %283, i64 8
  %307 = load ptr, ptr %306, align 8, !tbaa !13
  %308 = getelementptr inbounds i8, ptr %307, i64 %285
  %309 = load i8, ptr %308, align 1, !tbaa !23
  %310 = zext i8 %309 to i32
  %311 = or i32 %305, %310
  %.not453 = icmp eq i32 %311, 0
  br i1 %.not453, label %312, label %339

312:                                              ; preds = %292
  %313 = icmp sgt i32 %.0367613, %147
  br i1 %313, label %314, label %316

314:                                              ; preds = %312
  %315 = add nsw i32 %273, %.0367613
  store i32 %315, ptr %158, align 4, !tbaa !47
  store float %274, ptr %160, align 4, !tbaa !48
  store float %.0371612, ptr %161, align 4, !tbaa !49
  br label %316

316:                                              ; preds = %314, %312
  %317 = phi i32 [ %315, %314 ], [ %273, %312 ]
  %.pr476681 = phi i32 [ %315, %314 ], [ %.pr476, %312 ]
  %.1408 = phi i32 [ 1, %314 ], [ %.0407608, %312 ]
  %318 = add nsw i32 %.0367613, %.0395609
  %319 = load ptr, ptr %162, align 8, !tbaa !13
  %320 = getelementptr inbounds i16, ptr %319, i64 %indvars.iv649
  %321 = load i16, ptr %320, align 2, !tbaa !30
  %322 = lshr i16 %321, 2
  %323 = zext nneg i16 %322 to i32
  %324 = sub nsw i32 %323, %318
  %325 = icmp slt i32 %324, %147
  br i1 %325, label %._crit_edge616, label %339

326:                                              ; preds = %.lr.ph615
  br i1 %288, label %329, label %327

327:                                              ; preds = %326
  %328 = add nsw i32 %.0407608, 1
  br label %339

329:                                              ; preds = %326
  %330 = icmp sgt i32 %.0407608, %148
  br i1 %330, label %331, label %335

331:                                              ; preds = %329
  %332 = icmp sgt i32 %273, %146
  br i1 %332, label %333, label %.thread477

333:                                              ; preds = %331
  %334 = call ptr @mListWrite(ptr noundef nonnull %1, i32 noundef -1, ptr noundef nonnull %6, i32 noundef 52) #6
  %.pre683.pre.pre = load float, ptr %156, align 4, !tbaa !45
  br label %.thread477

.thread477:                                       ; preds = %331, %333
  %.pre683.pre = phi float [ %.pre683.pre710, %331 ], [ %.pre683.pre.pre, %333 ]
  store i32 0, ptr %158, align 4, !tbaa !47
  br label %337

335:                                              ; preds = %329
  %336 = icmp eq i32 %.pr476, 0
  br i1 %336, label %337, label %339

337:                                              ; preds = %.thread477, %335
  %.pre683.pre712 = phi float [ %.pre683.pre, %.thread477 ], [ %.pre683.pre710, %335 ]
  %.pre683 = phi float [ %.pre683.pre, %.thread477 ], [ %.pre683695, %335 ]
  %338 = phi i32 [ 0, %.thread477 ], [ %273, %335 ]
  store float %274, ptr %6, align 4, !tbaa !50
  store float %.0371612, ptr %159, align 4, !tbaa !51
  br label %339

339:                                              ; preds = %335, %337, %327, %290, %292, %316
  %.pre683.pre711 = phi float [ %.pre683.pre710, %316 ], [ %.pre683.pre710, %335 ], [ %.pre683.pre712, %337 ], [ %.pre683.pre710, %327 ], [ %.pre683.pre710, %292 ], [ %.pre683.pre710, %290 ]
  %.pre683696 = phi float [ %.pre683695, %316 ], [ %.pre683695, %335 ], [ %.pre683, %337 ], [ %.pre683695, %327 ], [ %.pre683695, %292 ], [ %.pre683695, %290 ]
  %340 = phi float [ %272, %316 ], [ %272, %335 ], [ %.pre683, %337 ], [ %272, %327 ], [ %272, %292 ], [ %272, %290 ]
  %341 = phi i32 [ %317, %316 ], [ %273, %335 ], [ %338, %337 ], [ %273, %327 ], [ %273, %292 ], [ %273, %290 ]
  %.pr476679 = phi i32 [ %.pr476681, %316 ], [ %.pr476, %335 ], [ 0, %337 ], [ %.pr476, %327 ], [ %.pr476, %292 ], [ %.pr476, %290 ]
  %.3410.ph = phi i32 [ %.1408, %316 ], [ %.0407608, %335 ], [ %.0407608, %337 ], [ %328, %327 ], [ %.0407608, %292 ], [ %.0407608, %290 ]
  %.2397.ph = phi i32 [ %318, %316 ], [ %.0395609, %335 ], [ %.0395609, %337 ], [ %.0395609, %327 ], [ %.0395609, %292 ], [ %.0395609, %290 ]
  %.2381.ph = phi i32 [ 1, %316 ], [ 0, %335 ], [ 0, %337 ], [ 1, %327 ], [ 0, %292 ], [ 0, %290 ]
  %.2369.ph = phi i32 [ 0, %316 ], [ 1, %335 ], [ 1, %337 ], [ %.0367613, %327 ], [ %.0367613, %292 ], [ %291, %290 ]
  %342 = add nsw i32 %.0375611, 4
  %343 = fadd float %266, %.0371612
  %344 = sitofp i32 %342 to float
  %345 = fcmp ogt float %340, %344
  br i1 %345, label %.lr.ph615, label %._crit_edge616, !llvm.loop !52

._crit_edge616:                                   ; preds = %339, %316
  %346 = phi i32 [ %341, %339 ], [ %317, %316 ]
  %.0379.lcssa = phi i32 [ %.2381.ph, %339 ], [ 0, %316 ]
  %.0371.lcssa = phi float [ %343, %339 ], [ %.0371612, %316 ]
  %.lcssa544 = phi float [ %344, %339 ], [ %274, %316 ]
  %.3370 = phi i32 [ %.2369.ph, %339 ], [ 0, %316 ]
  %347 = icmp eq i32 %.0379.lcssa, 0
  %348 = icmp sgt i32 %.3370, %147
  %or.cond = select i1 %347, i1 %348, i1 false
  br i1 %or.cond, label %349, label %._crit_edge616.thread

349:                                              ; preds = %._crit_edge616
  %350 = add nsw i32 %346, %.3370
  br label %._crit_edge616.thread.sink.split

351:                                              ; preds = %265
  %352 = fptosi float %259 to i32
  %353 = sitofp i32 %352 to float
  %354 = fcmp ogt float %237, %353
  br i1 %354, label %.lr.ph597, label %._crit_edge616.thread

.lr.ph597:                                        ; preds = %351, %422
  %.pre678.pre706 = phi float [ %.pre678.pre707, %422 ], [ %237, %351 ]
  %.pre678692 = phi float [ %.pre678693, %422 ], [ %237, %351 ]
  %355 = phi float [ %423, %422 ], [ %237, %351 ]
  %356 = phi i32 [ %424, %422 ], [ 0, %351 ]
  %.pr491 = phi i32 [ %.pr491674, %422 ], [ 0, %351 ]
  %357 = phi float [ %427, %422 ], [ %353, %351 ]
  %.4595 = phi i32 [ %.6.ph, %422 ], [ 0, %351 ]
  %.1372594 = phi float [ %426, %422 ], [ %258, %351 ]
  %.1376593 = phi i32 [ %425, %422 ], [ %352, %351 ]
  %.4383592 = phi i32 [ %.6385.ph, %422 ], [ 1, %351 ]
  %.3398591 = phi i32 [ %.5400.ph, %422 ], [ 0, %351 ]
  %.4411590 = phi i32 [ %.7414.ph, %422 ], [ 0, %351 ]
  %358 = fpext float %.1372594 to double
  %359 = fadd double %358, 5.000000e-01
  %360 = fptosi double %359 to i32
  %361 = fpext float %357 to double
  %362 = fadd double %361, 5.000000e-01
  %363 = fptosi double %362 to i32
  %364 = icmp eq i32 %.4383592, 0
  %365 = sext i32 %360 to i64
  %366 = getelementptr inbounds ptr, ptr %35, i64 %365
  %367 = load ptr, ptr %366, align 8, !tbaa !13
  %368 = sext i32 %363 to i64
  %369 = getelementptr inbounds i8, ptr %367, i64 %368
  %370 = load i8, ptr %369, align 1, !tbaa !23
  %371 = icmp eq i8 %370, -1
  br i1 %364, label %372, label %409

372:                                              ; preds = %.lr.ph597
  br i1 %371, label %373, label %375

373:                                              ; preds = %372
  %374 = add nsw i32 %.4595, 1
  br label %422

375:                                              ; preds = %372
  %376 = getelementptr i8, ptr %366, i64 -8
  %377 = load ptr, ptr %376, align 8, !tbaa !13
  %378 = getelementptr inbounds i8, ptr %377, i64 %368
  %379 = load i8, ptr %378, align 1, !tbaa !23
  %380 = zext i8 %379 to i32
  %381 = getelementptr i8, ptr %369, i64 -1
  %382 = load i8, ptr %381, align 1, !tbaa !23
  %383 = zext i8 %382 to i32
  %384 = add nuw nsw i32 %383, %380
  %385 = getelementptr i8, ptr %369, i64 1
  %386 = load i8, ptr %385, align 1, !tbaa !23
  %387 = zext i8 %386 to i32
  %388 = add nuw nsw i32 %384, %387
  %389 = getelementptr i8, ptr %366, i64 8
  %390 = load ptr, ptr %389, align 8, !tbaa !13
  %391 = getelementptr inbounds i8, ptr %390, i64 %368
  %392 = load i8, ptr %391, align 1, !tbaa !23
  %393 = zext i8 %392 to i32
  %394 = or i32 %388, %393
  %.not451 = icmp eq i32 %394, 0
  br i1 %.not451, label %395, label %422

395:                                              ; preds = %375
  %396 = icmp sgt i32 %.4595, %147
  br i1 %396, label %397, label %399

397:                                              ; preds = %395
  %398 = add nsw i32 %356, %.4595
  store i32 %398, ptr %158, align 4, !tbaa !47
  store float %357, ptr %160, align 4, !tbaa !48
  store float %.1372594, ptr %161, align 4, !tbaa !49
  br label %399

399:                                              ; preds = %397, %395
  %400 = phi i32 [ %398, %397 ], [ %356, %395 ]
  %.pr491676 = phi i32 [ %398, %397 ], [ %.pr491, %395 ]
  %.5412 = phi i32 [ 1, %397 ], [ %.4411590, %395 ]
  %401 = add nsw i32 %.4595, %.3398591
  %402 = load ptr, ptr %162, align 8, !tbaa !13
  %403 = getelementptr inbounds i16, ptr %402, i64 %indvars.iv649
  %404 = load i16, ptr %403, align 2, !tbaa !30
  %405 = lshr i16 %404, 2
  %406 = zext nneg i16 %405 to i32
  %407 = sub nsw i32 %406, %401
  %408 = icmp slt i32 %407, %147
  br i1 %408, label %._crit_edge598, label %422

409:                                              ; preds = %.lr.ph597
  br i1 %371, label %412, label %410

410:                                              ; preds = %409
  %411 = add nsw i32 %.4411590, 1
  br label %422

412:                                              ; preds = %409
  %413 = icmp sgt i32 %.4411590, %148
  br i1 %413, label %414, label %418

414:                                              ; preds = %412
  %415 = icmp sgt i32 %356, %146
  br i1 %415, label %416, label %.thread492

416:                                              ; preds = %414
  %417 = call ptr @mListWrite(ptr noundef nonnull %1, i32 noundef -1, ptr noundef nonnull %6, i32 noundef 52) #6
  %.pre678.pre.pre = load float, ptr %154, align 4, !tbaa !43
  br label %.thread492

.thread492:                                       ; preds = %414, %416
  %.pre678.pre = phi float [ %.pre678.pre706, %414 ], [ %.pre678.pre.pre, %416 ]
  store i32 0, ptr %158, align 4, !tbaa !47
  br label %420

418:                                              ; preds = %412
  %419 = icmp eq i32 %.pr491, 0
  br i1 %419, label %420, label %422

420:                                              ; preds = %.thread492, %418
  %.pre678.pre708 = phi float [ %.pre678.pre, %.thread492 ], [ %.pre678.pre706, %418 ]
  %.pre678 = phi float [ %.pre678.pre, %.thread492 ], [ %.pre678692, %418 ]
  %421 = phi i32 [ 0, %.thread492 ], [ %356, %418 ]
  store float %357, ptr %6, align 4, !tbaa !50
  store float %.1372594, ptr %159, align 4, !tbaa !51
  br label %422

422:                                              ; preds = %418, %420, %410, %373, %375, %399
  %.pre678.pre707 = phi float [ %.pre678.pre706, %399 ], [ %.pre678.pre706, %418 ], [ %.pre678.pre708, %420 ], [ %.pre678.pre706, %410 ], [ %.pre678.pre706, %375 ], [ %.pre678.pre706, %373 ]
  %.pre678693 = phi float [ %.pre678692, %399 ], [ %.pre678692, %418 ], [ %.pre678, %420 ], [ %.pre678692, %410 ], [ %.pre678692, %375 ], [ %.pre678692, %373 ]
  %423 = phi float [ %355, %399 ], [ %355, %418 ], [ %.pre678, %420 ], [ %355, %410 ], [ %355, %375 ], [ %355, %373 ]
  %424 = phi i32 [ %400, %399 ], [ %356, %418 ], [ %421, %420 ], [ %356, %410 ], [ %356, %375 ], [ %356, %373 ]
  %.pr491674 = phi i32 [ %.pr491676, %399 ], [ %.pr491, %418 ], [ 0, %420 ], [ %.pr491, %410 ], [ %.pr491, %375 ], [ %.pr491, %373 ]
  %.7414.ph = phi i32 [ %.5412, %399 ], [ %.4411590, %418 ], [ %.4411590, %420 ], [ %411, %410 ], [ %.4411590, %375 ], [ %.4411590, %373 ]
  %.5400.ph = phi i32 [ %401, %399 ], [ %.3398591, %418 ], [ %.3398591, %420 ], [ %.3398591, %410 ], [ %.3398591, %375 ], [ %.3398591, %373 ]
  %.6385.ph = phi i32 [ 1, %399 ], [ 0, %418 ], [ 0, %420 ], [ 1, %410 ], [ 0, %375 ], [ 0, %373 ]
  %.6.ph = phi i32 [ 0, %399 ], [ 1, %418 ], [ 1, %420 ], [ %.4595, %410 ], [ %.4595, %375 ], [ %374, %373 ]
  %425 = add nsw i32 %.1376593, 4
  %426 = fadd float %266, %.1372594
  %427 = sitofp i32 %425 to float
  %428 = fcmp ogt float %423, %427
  br i1 %428, label %.lr.ph597, label %._crit_edge598, !llvm.loop !53

._crit_edge598:                                   ; preds = %422, %399
  %429 = phi i32 [ %424, %422 ], [ %400, %399 ]
  %.4383.lcssa = phi i32 [ %.6385.ph, %422 ], [ 0, %399 ]
  %.1372.lcssa = phi float [ %426, %422 ], [ %.1372594, %399 ]
  %.lcssa543 = phi float [ %427, %422 ], [ %357, %399 ]
  %.7 = phi i32 [ %.6.ph, %422 ], [ 0, %399 ]
  %430 = icmp eq i32 %.4383.lcssa, 0
  %431 = icmp sgt i32 %.7, %147
  %or.cond456 = select i1 %430, i1 %431, i1 false
  br i1 %or.cond456, label %432, label %._crit_edge616.thread

432:                                              ; preds = %._crit_edge598
  %433 = add nsw i32 %429, %.7
  br label %._crit_edge616.thread.sink.split

434:                                              ; preds = %257
  %435 = fdiv float 4.000000e+00, %197
  %436 = fcmp olt float %236, %258
  br i1 %436, label %437, label %520

437:                                              ; preds = %434
  %438 = fptosi float %236 to i32
  %439 = sitofp i32 %438 to float
  %440 = fcmp ogt float %258, %439
  br i1 %440, label %.lr.ph579, label %._crit_edge616.thread

.lr.ph579:                                        ; preds = %437, %508
  %.pre673.pre702 = phi float [ %.pre673.pre703, %508 ], [ %258, %437 ]
  %.pre673689 = phi float [ %.pre673690, %508 ], [ %258, %437 ]
  %441 = phi float [ %509, %508 ], [ %258, %437 ]
  %442 = phi i32 [ %510, %508 ], [ 0, %437 ]
  %.pr507 = phi i32 [ %.pr507669, %508 ], [ 0, %437 ]
  %443 = phi float [ %513, %508 ], [ %439, %437 ]
  %.8577 = phi i32 [ %.10.ph, %508 ], [ 0, %437 ]
  %.2373576 = phi float [ %512, %508 ], [ %237, %437 ]
  %.0377575 = phi i32 [ %511, %508 ], [ %438, %437 ]
  %.8387574 = phi i32 [ %.10389.ph, %508 ], [ 1, %437 ]
  %.6401573 = phi i32 [ %.8403.ph, %508 ], [ 0, %437 ]
  %.8415572 = phi i32 [ %.11418.ph, %508 ], [ 0, %437 ]
  %444 = fpext float %443 to double
  %445 = fadd double %444, 5.000000e-01
  %446 = fptosi double %445 to i32
  %447 = fpext float %.2373576 to double
  %448 = fadd double %447, 5.000000e-01
  %449 = fptosi double %448 to i32
  %450 = icmp eq i32 %.8387574, 0
  %451 = sext i32 %446 to i64
  %452 = getelementptr inbounds ptr, ptr %35, i64 %451
  %453 = load ptr, ptr %452, align 8, !tbaa !13
  %454 = sext i32 %449 to i64
  %455 = getelementptr inbounds i8, ptr %453, i64 %454
  %456 = load i8, ptr %455, align 1, !tbaa !23
  %457 = icmp eq i8 %456, -1
  br i1 %450, label %458, label %495

458:                                              ; preds = %.lr.ph579
  br i1 %457, label %459, label %461

459:                                              ; preds = %458
  %460 = add nsw i32 %.8577, 1
  br label %508

461:                                              ; preds = %458
  %462 = getelementptr i8, ptr %452, i64 -8
  %463 = load ptr, ptr %462, align 8, !tbaa !13
  %464 = getelementptr inbounds i8, ptr %463, i64 %454
  %465 = load i8, ptr %464, align 1, !tbaa !23
  %466 = zext i8 %465 to i32
  %467 = getelementptr i8, ptr %455, i64 -1
  %468 = load i8, ptr %467, align 1, !tbaa !23
  %469 = zext i8 %468 to i32
  %470 = add nuw nsw i32 %469, %466
  %471 = getelementptr i8, ptr %455, i64 1
  %472 = load i8, ptr %471, align 1, !tbaa !23
  %473 = zext i8 %472 to i32
  %474 = add nuw nsw i32 %470, %473
  %475 = getelementptr i8, ptr %452, i64 8
  %476 = load ptr, ptr %475, align 8, !tbaa !13
  %477 = getelementptr inbounds i8, ptr %476, i64 %454
  %478 = load i8, ptr %477, align 1, !tbaa !23
  %479 = zext i8 %478 to i32
  %480 = or i32 %474, %479
  %.not449 = icmp eq i32 %480, 0
  br i1 %.not449, label %481, label %508

481:                                              ; preds = %461
  %482 = icmp sgt i32 %.8577, %147
  br i1 %482, label %483, label %485

483:                                              ; preds = %481
  %484 = add nsw i32 %442, %.8577
  store i32 %484, ptr %158, align 4, !tbaa !47
  store float %.2373576, ptr %160, align 4, !tbaa !48
  store float %443, ptr %161, align 4, !tbaa !49
  br label %485

485:                                              ; preds = %483, %481
  %486 = phi i32 [ %484, %483 ], [ %442, %481 ]
  %.pr507671 = phi i32 [ %484, %483 ], [ %.pr507, %481 ]
  %.9416 = phi i32 [ 1, %483 ], [ %.8415572, %481 ]
  %487 = add nsw i32 %.8577, %.6401573
  %488 = load ptr, ptr %162, align 8, !tbaa !13
  %489 = getelementptr inbounds i16, ptr %488, i64 %indvars.iv649
  %490 = load i16, ptr %489, align 2, !tbaa !30
  %491 = lshr i16 %490, 2
  %492 = zext nneg i16 %491 to i32
  %493 = sub nsw i32 %492, %487
  %494 = icmp slt i32 %493, %147
  br i1 %494, label %._crit_edge580, label %508

495:                                              ; preds = %.lr.ph579
  br i1 %457, label %498, label %496

496:                                              ; preds = %495
  %497 = add nsw i32 %.8415572, 1
  br label %508

498:                                              ; preds = %495
  %499 = icmp sgt i32 %.8415572, %148
  br i1 %499, label %500, label %504

500:                                              ; preds = %498
  %501 = icmp sgt i32 %442, %146
  br i1 %501, label %502, label %.thread508

502:                                              ; preds = %500
  %503 = call ptr @mListWrite(ptr noundef nonnull %1, i32 noundef -1, ptr noundef nonnull %6, i32 noundef 52) #6
  %.pre673.pre.pre = load float, ptr %157, align 4, !tbaa !46
  br label %.thread508

.thread508:                                       ; preds = %500, %502
  %.pre673.pre = phi float [ %.pre673.pre702, %500 ], [ %.pre673.pre.pre, %502 ]
  store i32 0, ptr %158, align 4, !tbaa !47
  br label %506

504:                                              ; preds = %498
  %505 = icmp eq i32 %.pr507, 0
  br i1 %505, label %506, label %508

506:                                              ; preds = %.thread508, %504
  %.pre673.pre704 = phi float [ %.pre673.pre, %.thread508 ], [ %.pre673.pre702, %504 ]
  %.pre673 = phi float [ %.pre673.pre, %.thread508 ], [ %.pre673689, %504 ]
  %507 = phi i32 [ 0, %.thread508 ], [ %442, %504 ]
  store float %.2373576, ptr %6, align 4, !tbaa !50
  store float %443, ptr %159, align 4, !tbaa !51
  br label %508

508:                                              ; preds = %504, %506, %496, %459, %461, %485
  %.pre673.pre703 = phi float [ %.pre673.pre702, %485 ], [ %.pre673.pre702, %504 ], [ %.pre673.pre704, %506 ], [ %.pre673.pre702, %496 ], [ %.pre673.pre702, %461 ], [ %.pre673.pre702, %459 ]
  %.pre673690 = phi float [ %.pre673689, %485 ], [ %.pre673689, %504 ], [ %.pre673, %506 ], [ %.pre673689, %496 ], [ %.pre673689, %461 ], [ %.pre673689, %459 ]
  %509 = phi float [ %441, %485 ], [ %441, %504 ], [ %.pre673, %506 ], [ %441, %496 ], [ %441, %461 ], [ %441, %459 ]
  %510 = phi i32 [ %486, %485 ], [ %442, %504 ], [ %507, %506 ], [ %442, %496 ], [ %442, %461 ], [ %442, %459 ]
  %.pr507669 = phi i32 [ %.pr507671, %485 ], [ %.pr507, %504 ], [ 0, %506 ], [ %.pr507, %496 ], [ %.pr507, %461 ], [ %.pr507, %459 ]
  %.11418.ph = phi i32 [ %.9416, %485 ], [ %.8415572, %504 ], [ %.8415572, %506 ], [ %497, %496 ], [ %.8415572, %461 ], [ %.8415572, %459 ]
  %.8403.ph = phi i32 [ %487, %485 ], [ %.6401573, %504 ], [ %.6401573, %506 ], [ %.6401573, %496 ], [ %.6401573, %461 ], [ %.6401573, %459 ]
  %.10389.ph = phi i32 [ 1, %485 ], [ 0, %504 ], [ 0, %506 ], [ 1, %496 ], [ 0, %461 ], [ 0, %459 ]
  %.10.ph = phi i32 [ 0, %485 ], [ 1, %504 ], [ 1, %506 ], [ %.8577, %496 ], [ %.8577, %461 ], [ %460, %459 ]
  %511 = add nsw i32 %.0377575, 4
  %512 = fadd float %435, %.2373576
  %513 = sitofp i32 %511 to float
  %514 = fcmp ogt float %509, %513
  br i1 %514, label %.lr.ph579, label %._crit_edge580, !llvm.loop !54

._crit_edge580:                                   ; preds = %508, %485
  %515 = phi i32 [ %510, %508 ], [ %486, %485 ]
  %.8387.lcssa = phi i32 [ %.10389.ph, %508 ], [ 0, %485 ]
  %.2373.lcssa = phi float [ %512, %508 ], [ %.2373576, %485 ]
  %.lcssa542 = phi float [ %513, %508 ], [ %443, %485 ]
  %.11 = phi i32 [ %.10.ph, %508 ], [ 0, %485 ]
  %516 = icmp eq i32 %.8387.lcssa, 0
  %517 = icmp sgt i32 %.11, %147
  %or.cond459 = select i1 %516, i1 %517, i1 false
  br i1 %or.cond459, label %518, label %._crit_edge616.thread

518:                                              ; preds = %._crit_edge580
  %519 = add nsw i32 %515, %.11
  br label %._crit_edge616.thread.sink.split

520:                                              ; preds = %434
  %521 = fptosi float %258 to i32
  %522 = sitofp i32 %521 to float
  %523 = fcmp ogt float %236, %522
  br i1 %523, label %.lr.ph561, label %._crit_edge616.thread

.lr.ph561:                                        ; preds = %520, %591
  %.pre668.pre698 = phi float [ %.pre668.pre699, %591 ], [ %236, %520 ]
  %.pre668686 = phi float [ %.pre668687, %591 ], [ %236, %520 ]
  %524 = phi float [ %592, %591 ], [ %236, %520 ]
  %525 = phi i32 [ %593, %591 ], [ 0, %520 ]
  %.pr523 = phi i32 [ %.pr523664, %591 ], [ 0, %520 ]
  %526 = phi float [ %596, %591 ], [ %522, %520 ]
  %.12559 = phi i32 [ %.14.ph, %591 ], [ 0, %520 ]
  %.3374558 = phi float [ %595, %591 ], [ %259, %520 ]
  %.1378557 = phi i32 [ %594, %591 ], [ %521, %520 ]
  %.12391556 = phi i32 [ %.14393.ph, %591 ], [ 1, %520 ]
  %.9404555 = phi i32 [ %.11406.ph, %591 ], [ 0, %520 ]
  %.12419554 = phi i32 [ %.15422.ph, %591 ], [ 0, %520 ]
  %527 = fpext float %526 to double
  %528 = fadd double %527, 5.000000e-01
  %529 = fptosi double %528 to i32
  %530 = fpext float %.3374558 to double
  %531 = fadd double %530, 5.000000e-01
  %532 = fptosi double %531 to i32
  %533 = icmp eq i32 %.12391556, 0
  %534 = sext i32 %529 to i64
  %535 = getelementptr inbounds ptr, ptr %35, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !13
  %537 = sext i32 %532 to i64
  %538 = getelementptr inbounds i8, ptr %536, i64 %537
  %539 = load i8, ptr %538, align 1, !tbaa !23
  %540 = icmp eq i8 %539, -1
  br i1 %533, label %541, label %578

541:                                              ; preds = %.lr.ph561
  br i1 %540, label %542, label %544

542:                                              ; preds = %541
  %543 = add nsw i32 %.12559, 1
  br label %591

544:                                              ; preds = %541
  %545 = getelementptr i8, ptr %535, i64 -8
  %546 = load ptr, ptr %545, align 8, !tbaa !13
  %547 = getelementptr inbounds i8, ptr %546, i64 %537
  %548 = load i8, ptr %547, align 1, !tbaa !23
  %549 = zext i8 %548 to i32
  %550 = getelementptr i8, ptr %538, i64 -1
  %551 = load i8, ptr %550, align 1, !tbaa !23
  %552 = zext i8 %551 to i32
  %553 = add nuw nsw i32 %552, %549
  %554 = getelementptr i8, ptr %538, i64 1
  %555 = load i8, ptr %554, align 1, !tbaa !23
  %556 = zext i8 %555 to i32
  %557 = add nuw nsw i32 %553, %556
  %558 = getelementptr i8, ptr %535, i64 8
  %559 = load ptr, ptr %558, align 8, !tbaa !13
  %560 = getelementptr inbounds i8, ptr %559, i64 %537
  %561 = load i8, ptr %560, align 1, !tbaa !23
  %562 = zext i8 %561 to i32
  %563 = or i32 %557, %562
  %.not447 = icmp eq i32 %563, 0
  br i1 %.not447, label %564, label %591

564:                                              ; preds = %544
  %565 = icmp sgt i32 %.12559, %147
  br i1 %565, label %566, label %568

566:                                              ; preds = %564
  %567 = add nsw i32 %525, %.12559
  store i32 %567, ptr %158, align 4, !tbaa !47
  store float %.3374558, ptr %160, align 4, !tbaa !48
  store float %526, ptr %161, align 4, !tbaa !49
  br label %568

568:                                              ; preds = %566, %564
  %569 = phi i32 [ %567, %566 ], [ %525, %564 ]
  %.pr523666 = phi i32 [ %567, %566 ], [ %.pr523, %564 ]
  %.13420 = phi i32 [ 1, %566 ], [ %.12419554, %564 ]
  %570 = add nsw i32 %.12559, %.9404555
  %571 = load ptr, ptr %162, align 8, !tbaa !13
  %572 = getelementptr inbounds i16, ptr %571, i64 %indvars.iv649
  %573 = load i16, ptr %572, align 2, !tbaa !30
  %574 = lshr i16 %573, 2
  %575 = zext nneg i16 %574 to i32
  %576 = sub nsw i32 %575, %570
  %577 = icmp slt i32 %576, %147
  br i1 %577, label %._crit_edge562, label %591

578:                                              ; preds = %.lr.ph561
  br i1 %540, label %581, label %579

579:                                              ; preds = %578
  %580 = add nsw i32 %.12419554, 1
  br label %591

581:                                              ; preds = %578
  %582 = icmp sgt i32 %.12419554, %148
  br i1 %582, label %583, label %587

583:                                              ; preds = %581
  %584 = icmp sgt i32 %525, %146
  br i1 %584, label %585, label %.thread524

585:                                              ; preds = %583
  %586 = call ptr @mListWrite(ptr noundef nonnull %1, i32 noundef -1, ptr noundef nonnull %6, i32 noundef 52) #6
  %.pre668.pre.pre = load float, ptr %155, align 4, !tbaa !44
  br label %.thread524

.thread524:                                       ; preds = %583, %585
  %.pre668.pre = phi float [ %.pre668.pre698, %583 ], [ %.pre668.pre.pre, %585 ]
  store i32 0, ptr %158, align 4, !tbaa !47
  br label %589

587:                                              ; preds = %581
  %588 = icmp eq i32 %.pr523, 0
  br i1 %588, label %589, label %591

589:                                              ; preds = %.thread524, %587
  %.pre668.pre700 = phi float [ %.pre668.pre, %.thread524 ], [ %.pre668.pre698, %587 ]
  %.pre668 = phi float [ %.pre668.pre, %.thread524 ], [ %.pre668686, %587 ]
  %590 = phi i32 [ 0, %.thread524 ], [ %525, %587 ]
  store float %.3374558, ptr %6, align 4, !tbaa !50
  store float %526, ptr %159, align 4, !tbaa !51
  br label %591

591:                                              ; preds = %587, %589, %579, %542, %544, %568
  %.pre668.pre699 = phi float [ %.pre668.pre698, %568 ], [ %.pre668.pre698, %587 ], [ %.pre668.pre700, %589 ], [ %.pre668.pre698, %579 ], [ %.pre668.pre698, %544 ], [ %.pre668.pre698, %542 ]
  %.pre668687 = phi float [ %.pre668686, %568 ], [ %.pre668686, %587 ], [ %.pre668, %589 ], [ %.pre668686, %579 ], [ %.pre668686, %544 ], [ %.pre668686, %542 ]
  %592 = phi float [ %524, %568 ], [ %524, %587 ], [ %.pre668, %589 ], [ %524, %579 ], [ %524, %544 ], [ %524, %542 ]
  %593 = phi i32 [ %569, %568 ], [ %525, %587 ], [ %590, %589 ], [ %525, %579 ], [ %525, %544 ], [ %525, %542 ]
  %.pr523664 = phi i32 [ %.pr523666, %568 ], [ %.pr523, %587 ], [ 0, %589 ], [ %.pr523, %579 ], [ %.pr523, %544 ], [ %.pr523, %542 ]
  %.15422.ph = phi i32 [ %.13420, %568 ], [ %.12419554, %587 ], [ %.12419554, %589 ], [ %580, %579 ], [ %.12419554, %544 ], [ %.12419554, %542 ]
  %.11406.ph = phi i32 [ %570, %568 ], [ %.9404555, %587 ], [ %.9404555, %589 ], [ %.9404555, %579 ], [ %.9404555, %544 ], [ %.9404555, %542 ]
  %.14393.ph = phi i32 [ 1, %568 ], [ 0, %587 ], [ 0, %589 ], [ 1, %579 ], [ 0, %544 ], [ 0, %542 ]
  %.14.ph = phi i32 [ 0, %568 ], [ 1, %587 ], [ 1, %589 ], [ %.12559, %579 ], [ %.12559, %544 ], [ %543, %542 ]
  %594 = add nsw i32 %.1378557, 4
  %595 = fadd float %435, %.3374558
  %596 = sitofp i32 %594 to float
  %597 = fcmp ogt float %592, %596
  br i1 %597, label %.lr.ph561, label %._crit_edge562, !llvm.loop !55

._crit_edge562:                                   ; preds = %591, %568
  %598 = phi i32 [ %593, %591 ], [ %569, %568 ]
  %.12391.lcssa = phi i32 [ %.14393.ph, %591 ], [ 0, %568 ]
  %.3374.lcssa = phi float [ %595, %591 ], [ %.3374558, %568 ]
  %.lcssa = phi float [ %596, %591 ], [ %526, %568 ]
  %.15 = phi i32 [ %.14.ph, %591 ], [ 0, %568 ]
  %599 = icmp eq i32 %.12391.lcssa, 0
  %600 = icmp sgt i32 %.15, %147
  %or.cond462 = select i1 %599, i1 %600, i1 false
  br i1 %or.cond462, label %601, label %._crit_edge616.thread

601:                                              ; preds = %._crit_edge562
  %602 = add nsw i32 %598, %.15
  br label %._crit_edge616.thread.sink.split

._crit_edge616.thread.sink.split:                 ; preds = %432, %349, %601, %518
  %.sink = phi i32 [ %519, %518 ], [ %602, %601 ], [ %350, %349 ], [ %433, %432 ]
  %.2373.lcssa.sink = phi float [ %.2373.lcssa, %518 ], [ %.3374.lcssa, %601 ], [ %.lcssa544, %349 ], [ %.lcssa543, %432 ]
  %.lcssa542.sink = phi float [ %.lcssa542, %518 ], [ %.lcssa, %601 ], [ %.0371.lcssa, %349 ], [ %.1372.lcssa, %432 ]
  store i32 %.sink, ptr %158, align 4, !tbaa !47
  store float %.2373.lcssa.sink, ptr %160, align 4, !tbaa !48
  store float %.lcssa542.sink, ptr %161, align 4, !tbaa !49
  br label %._crit_edge616.thread

._crit_edge616.thread:                            ; preds = %._crit_edge616.thread.sink.split, %520, %437, %351, %268, %._crit_edge580, %._crit_edge562, %._crit_edge616, %._crit_edge598
  %603 = phi i32 [ %515, %._crit_edge580 ], [ %598, %._crit_edge562 ], [ %346, %._crit_edge616 ], [ %429, %._crit_edge598 ], [ 0, %268 ], [ 0, %351 ], [ 0, %437 ], [ 0, %520 ], [ %.sink, %._crit_edge616.thread.sink.split ]
  %604 = icmp sgt i32 %603, %146
  br i1 %604, label %605, label %607

605:                                              ; preds = %._crit_edge616.thread
  %606 = call ptr @mListWrite(ptr noundef nonnull %1, i32 noundef -1, ptr noundef nonnull %6, i32 noundef 52) #6
  br label %607

607:                                              ; preds = %._crit_edge616.thread, %605, %252, %thread-pre-split, %231, %173, %177, %167
  %indvars.iv.next650 = add nuw nsw i64 %indvars.iv649, 1
  %exitcond652.not = icmp eq i64 %indvars.iv.next650, 361
  br i1 %exitcond652.not, label %166, label %167, !llvm.loop !56

._crit_edge628:                                   ; preds = %166, %._crit_edge553
  call void @llvm.lifetime.end.p0(i64 52, ptr nonnull %6) #6
  ret void
}

declare void @m_Exception(i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ...) local_unnamed_addr #2

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

declare ptr @GetHandle(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare ptr @TableCreate(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @TableRedefine(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare double @mSin(double noundef) local_unnamed_addr #2

declare double @mCos(double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

declare ptr @mListWrite(ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #5

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

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"MImage", !7, i64 0, !7, i64 4, !7, i64 8, !8, i64 16, !10, i64 48}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !7, i64 4}
!12 = !{!6, !7, i64 8}
!13 = !{!10, !10, i64 0}
!14 = !{!15, !10, i64 16}
!15 = !{!"MHandle", !7, i64 0, !7, i64 4, !10, i64 8, !10, i64 16}
!16 = !{!15, !7, i64 4}
!17 = !{!18, !10, i64 2896}
!18 = !{!"HandleImageHoughLine", !8, i64 0, !8, i64 1448, !10, i64 2896}
!19 = !{!20, !20, i64 0}
!20 = !{!"float", !8, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!8, !8, i64 0}
!24 = !{!25, !7, i64 4}
!25 = !{!"MTable", !7, i64 0, !7, i64 4, !7, i64 8, !8, i64 16}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.unroll.disable"}
!29 = distinct !{!29, !22}
!30 = !{!31, !31, i64 0}
!31 = !{!"short", !8, i64 0}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = !{!35, !7, i64 0}
!35 = !{!"MList", !7, i64 0, !10, i64 8}
!36 = distinct !{!36, !22}
!37 = !{!38, !20, i64 40}
!38 = !{!"HoughLineInfo", !39, i64 0, !39, i64 8, !39, i64 16, !39, i64 24, !20, i64 32, !20, i64 36, !20, i64 40, !20, i64 44, !7, i64 48}
!39 = !{!"MImagePoint", !20, i64 0, !20, i64 4}
!40 = !{!38, !20, i64 44}
!41 = !{!38, !20, i64 32}
!42 = !{!38, !20, i64 36}
!43 = !{!38, !20, i64 16}
!44 = !{!38, !20, i64 20}
!45 = !{!38, !20, i64 24}
!46 = !{!38, !20, i64 28}
!47 = !{!38, !7, i64 48}
!48 = !{!38, !20, i64 8}
!49 = !{!38, !20, i64 12}
!50 = !{!38, !20, i64 0}
!51 = !{!38, !20, i64 4}
!52 = distinct !{!52, !22}
!53 = distinct !{!53, !22}
!54 = distinct !{!54, !22}
!55 = distinct !{!55, !22}
!56 = distinct !{!56, !22}


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