; LLVM IR from stfc/PSycloneBench :: benchmarks/nemo/nemolite2d/manual_versions/psykal_cpp (time_step)

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

; Function Attrs: mustprogress uwtable
define dso_local void @c_invoke_time_step(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, i32 noundef %25, i32 noundef %26, i32 noundef %27, i32 noundef %28, i32 noundef %29, i32 noundef %30, double noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36) #0 {
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  store ptr %0, ptr %38, align 8, !tbaa !5
  store ptr %1, ptr %39, align 8, !tbaa !5
  store ptr %2, ptr %40, align 8, !tbaa !5
  store ptr %3, ptr %41, align 8, !tbaa !5
  store ptr %4, ptr %42, align 8, !tbaa !5
  store ptr %5, ptr %43, align 8, !tbaa !5
  store ptr %6, ptr %44, align 8, !tbaa !5
  store ptr %7, ptr %45, align 8, !tbaa !5
  store ptr %8, ptr %46, align 8, !tbaa !5
  store ptr %9, ptr %47, align 8, !tbaa !5
  store ptr %10, ptr %48, align 8, !tbaa !5
  store ptr %11, ptr %49, align 8, !tbaa !5
  store ptr %12, ptr %50, align 8, !tbaa !5
  store ptr %13, ptr %51, align 8, !tbaa !5
  store ptr %14, ptr %52, align 8, !tbaa !5
  store ptr %15, ptr %53, align 8, !tbaa !5
  store ptr %16, ptr %54, align 8, !tbaa !5
  store ptr %17, ptr %55, align 8, !tbaa !5
  store ptr %18, ptr %56, align 8, !tbaa !5
  store ptr %19, ptr %57, align 8, !tbaa !5
  store ptr %20, ptr %58, align 8, !tbaa !5
  store ptr %21, ptr %59, align 8, !tbaa !5
  store ptr %22, ptr %60, align 8, !tbaa !5
  store ptr %23, ptr %61, align 8, !tbaa !5
  store ptr %24, ptr %62, align 8, !tbaa !5
  store i32 %25, ptr %63, align 4, !tbaa !9
  store i32 %26, ptr %64, align 4, !tbaa !9
  store i32 %27, ptr %65, align 4, !tbaa !9
  store i32 %28, ptr %66, align 4, !tbaa !9
  store i32 %29, ptr %67, align 4, !tbaa !9
  store i32 %30, ptr %68, align 4, !tbaa !9
  store double %31, ptr %69, align 8, !tbaa !11
  store double %32, ptr %70, align 8, !tbaa !11
  store double %33, ptr %71, align 8, !tbaa !11
  store double %34, ptr %72, align 8, !tbaa !11
  store double %35, ptr %73, align 8, !tbaa !11
  store double %36, ptr %74, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #3
  %99 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %99, ptr %75, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %130, %37
  %101 = load i32, ptr %75, align 4, !tbaa !9
  %102 = load i32, ptr %67, align 4, !tbaa !9
  %103 = icmp sle i32 %101, %102
  br i1 %103, label %105, label %104

104:                                              ; preds = %100
  store i32 2, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  br label %133

105:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #3
  %106 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %106, ptr %77, align 4, !tbaa !9
  br label %107

107:                                              ; preds = %126, %105
  %108 = load i32, ptr %77, align 4, !tbaa !9
  %109 = load i32, ptr %65, align 4, !tbaa !9
  %110 = icmp sle i32 %108, %109
  br i1 %110, label %112, label %111

111:                                              ; preds = %107
  store i32 5, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  br label %129

112:                                              ; preds = %107
  %113 = load i32, ptr %77, align 4, !tbaa !9
  %114 = load i32, ptr %75, align 4, !tbaa !9
  %115 = load i32, ptr %68, align 4, !tbaa !9
  %116 = load ptr, ptr %38, align 8, !tbaa !5
  %117 = load ptr, ptr %39, align 8, !tbaa !5
  %118 = load ptr, ptr %40, align 8, !tbaa !5
  %119 = load ptr, ptr %41, align 8, !tbaa !5
  %120 = load ptr, ptr %42, align 8, !tbaa !5
  %121 = load ptr, ptr %43, align 8, !tbaa !5
  %122 = load ptr, ptr %44, align 8, !tbaa !5
  %123 = load ptr, ptr %45, align 8, !tbaa !5
  %124 = load double, ptr %69, align 8, !tbaa !11
  %125 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_Z15continuity_codeiiiPdS_S_S_S_S_S_S_dS_(i32 noundef %113, i32 noundef %114, i32 noundef %115, ptr noundef %116, ptr noundef %117, ptr noundef %118, ptr noundef %119, ptr noundef %120, ptr noundef %121, ptr noundef %122, ptr noundef %123, double noundef %124, ptr noundef %125)
  br label %126

126:                                              ; preds = %112
  %127 = load i32, ptr %77, align 4, !tbaa !9
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %77, align 4, !tbaa !9
  br label %107, !llvm.loop !13

129:                                              ; preds = %111
  br label %130

130:                                              ; preds = %129
  %131 = load i32, ptr %75, align 4, !tbaa !9
  %132 = add nsw i32 %131, 1
  store i32 %132, ptr %75, align 4, !tbaa !9
  br label %100, !llvm.loop !15

133:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #3
  %134 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %134, ptr %78, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %180, %133
  %136 = load i32, ptr %78, align 4, !tbaa !9
  %137 = load i32, ptr %67, align 4, !tbaa !9
  %138 = icmp sle i32 %136, %137
  br i1 %138, label %140, label %139

139:                                              ; preds = %135
  store i32 8, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  br label %183

140:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #3
  %141 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %141, ptr %79, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %176, %140
  %143 = load i32, ptr %79, align 4, !tbaa !9
  %144 = load i32, ptr %65, align 4, !tbaa !9
  %145 = sub nsw i32 %144, 1
  %146 = icmp sle i32 %143, %145
  br i1 %146, label %148, label %147

147:                                              ; preds = %142
  store i32 11, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  br label %179

148:                                              ; preds = %142
  %149 = load i32, ptr %79, align 4, !tbaa !9
  %150 = load i32, ptr %78, align 4, !tbaa !9
  %151 = load i32, ptr %68, align 4, !tbaa !9
  %152 = load ptr, ptr %46, align 8, !tbaa !5
  %153 = load ptr, ptr %44, align 8, !tbaa !5
  %154 = load ptr, ptr %45, align 8, !tbaa !5
  %155 = load ptr, ptr %42, align 8, !tbaa !5
  %156 = load ptr, ptr %43, align 8, !tbaa !5
  %157 = load ptr, ptr %47, align 8, !tbaa !5
  %158 = load ptr, ptr %48, align 8, !tbaa !5
  %159 = load ptr, ptr %39, align 8, !tbaa !5
  %160 = load ptr, ptr %40, align 8, !tbaa !5
  %161 = load ptr, ptr %41, align 8, !tbaa !5
  %162 = load ptr, ptr %51, align 8, !tbaa !5
  %163 = load ptr, ptr %55, align 8, !tbaa !5
  %164 = load ptr, ptr %56, align 8, !tbaa !5
  %165 = load ptr, ptr %57, align 8, !tbaa !5
  %166 = load ptr, ptr %58, align 8, !tbaa !5
  %167 = load ptr, ptr %60, align 8, !tbaa !5
  %168 = load ptr, ptr %53, align 8, !tbaa !5
  %169 = load ptr, ptr %61, align 8, !tbaa !5
  %170 = load double, ptr %69, align 8, !tbaa !11
  %171 = load double, ptr %70, align 8, !tbaa !11
  %172 = load double, ptr %71, align 8, !tbaa !11
  %173 = load double, ptr %72, align 8, !tbaa !11
  %174 = load double, ptr %73, align 8, !tbaa !11
  %175 = load double, ptr %74, align 8, !tbaa !11
  call void @_Z15momentum_u_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef %149, i32 noundef %150, i32 noundef %151, ptr noundef %152, ptr noundef %153, ptr noundef %154, ptr noundef %155, ptr noundef %156, ptr noundef %157, ptr noundef %158, ptr noundef %159, ptr noundef %160, ptr noundef %161, ptr noundef %162, ptr noundef %163, ptr noundef %164, ptr noundef %165, ptr noundef %166, ptr noundef %167, ptr noundef %168, ptr noundef %169, double noundef %170, double noundef %171, double noundef %172, double noundef %173, double noundef %174, double noundef %175)
  br label %176

176:                                              ; preds = %148
  %177 = load i32, ptr %79, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr %79, align 4, !tbaa !9
  br label %142, !llvm.loop !16

179:                                              ; preds = %147
  br label %180

180:                                              ; preds = %179
  %181 = load i32, ptr %78, align 4, !tbaa !9
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr %78, align 4, !tbaa !9
  br label %135, !llvm.loop !17

183:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #3
  %184 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %184, ptr %80, align 4, !tbaa !9
  br label %185

185:                                              ; preds = %230, %183
  %186 = load i32, ptr %80, align 4, !tbaa !9
  %187 = load i32, ptr %67, align 4, !tbaa !9
  %188 = sub nsw i32 %187, 1
  %189 = icmp sle i32 %186, %188
  br i1 %189, label %191, label %190

190:                                              ; preds = %185
  store i32 14, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  br label %233

191:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #3
  %192 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %192, ptr %81, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %226, %191
  %194 = load i32, ptr %81, align 4, !tbaa !9
  %195 = load i32, ptr %65, align 4, !tbaa !9
  %196 = icmp sle i32 %194, %195
  br i1 %196, label %198, label %197

197:                                              ; preds = %193
  store i32 17, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  br label %229

198:                                              ; preds = %193
  %199 = load i32, ptr %81, align 4, !tbaa !9
  %200 = load i32, ptr %80, align 4, !tbaa !9
  %201 = load i32, ptr %68, align 4, !tbaa !9
  %202 = load ptr, ptr %49, align 8, !tbaa !5
  %203 = load ptr, ptr %44, align 8, !tbaa !5
  %204 = load ptr, ptr %45, align 8, !tbaa !5
  %205 = load ptr, ptr %42, align 8, !tbaa !5
  %206 = load ptr, ptr %43, align 8, !tbaa !5
  %207 = load ptr, ptr %47, align 8, !tbaa !5
  %208 = load ptr, ptr %50, align 8, !tbaa !5
  %209 = load ptr, ptr %39, align 8, !tbaa !5
  %210 = load ptr, ptr %40, align 8, !tbaa !5
  %211 = load ptr, ptr %41, align 8, !tbaa !5
  %212 = load ptr, ptr %51, align 8, !tbaa !5
  %213 = load ptr, ptr %56, align 8, !tbaa !5
  %214 = load ptr, ptr %57, align 8, !tbaa !5
  %215 = load ptr, ptr %58, align 8, !tbaa !5
  %216 = load ptr, ptr %59, align 8, !tbaa !5
  %217 = load ptr, ptr %60, align 8, !tbaa !5
  %218 = load ptr, ptr %54, align 8, !tbaa !5
  %219 = load ptr, ptr %62, align 8, !tbaa !5
  %220 = load double, ptr %69, align 8, !tbaa !11
  %221 = load double, ptr %70, align 8, !tbaa !11
  %222 = load double, ptr %71, align 8, !tbaa !11
  %223 = load double, ptr %72, align 8, !tbaa !11
  %224 = load double, ptr %73, align 8, !tbaa !11
  %225 = load double, ptr %74, align 8, !tbaa !11
  call void @_Z15momentum_v_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef %199, i32 noundef %200, i32 noundef %201, ptr noundef %202, ptr noundef %203, ptr noundef %204, ptr noundef %205, ptr noundef %206, ptr noundef %207, ptr noundef %208, ptr noundef %209, ptr noundef %210, ptr noundef %211, ptr noundef %212, ptr noundef %213, ptr noundef %214, ptr noundef %215, ptr noundef %216, ptr noundef %217, ptr noundef %218, ptr noundef %219, double noundef %220, double noundef %221, double noundef %222, double noundef %223, double noundef %224, double noundef %225)
  br label %226

226:                                              ; preds = %198
  %227 = load i32, ptr %81, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %81, align 4, !tbaa !9
  br label %193, !llvm.loop !18

229:                                              ; preds = %197
  br label %230

230:                                              ; preds = %229
  %231 = load i32, ptr %80, align 4, !tbaa !9
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr %80, align 4, !tbaa !9
  br label %185, !llvm.loop !19

233:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #3
  %234 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %234, ptr %82, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %259, %233
  %236 = load i32, ptr %82, align 4, !tbaa !9
  %237 = load i32, ptr %67, align 4, !tbaa !9
  %238 = icmp sle i32 %236, %237
  br i1 %238, label %240, label %239

239:                                              ; preds = %235
  store i32 20, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #3
  br label %262

240:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #3
  %241 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %241, ptr %83, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %255, %240
  %243 = load i32, ptr %83, align 4, !tbaa !9
  %244 = load i32, ptr %65, align 4, !tbaa !9
  %245 = icmp sle i32 %243, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %242
  store i32 23, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  br label %258

247:                                              ; preds = %242
  %248 = load i32, ptr %83, align 4, !tbaa !9
  %249 = load i32, ptr %82, align 4, !tbaa !9
  %250 = load i32, ptr %68, align 4, !tbaa !9
  %251 = load i32, ptr %63, align 4, !tbaa !9
  %252 = load ptr, ptr %38, align 8, !tbaa !5
  %253 = load ptr, ptr %51, align 8, !tbaa !5
  %254 = load double, ptr %69, align 8, !tbaa !11
  call void @_Z11bc_ssh_codeiiiiPdPid(i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, ptr noundef %252, ptr noundef %253, double noundef %254)
  br label %255

255:                                              ; preds = %247
  %256 = load i32, ptr %83, align 4, !tbaa !9
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %83, align 4, !tbaa !9
  br label %242, !llvm.loop !20

258:                                              ; preds = %246
  br label %259

259:                                              ; preds = %258
  %260 = load i32, ptr %82, align 4, !tbaa !9
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %82, align 4, !tbaa !9
  br label %235, !llvm.loop !21

262:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #3
  %263 = load i32, ptr %66, align 4, !tbaa !9
  %264 = sub nsw i32 %263, 1
  store i32 %264, ptr %84, align 4, !tbaa !9
  br label %265

265:                                              ; preds = %289, %262
  %266 = load i32, ptr %84, align 4, !tbaa !9
  %267 = load i32, ptr %67, align 4, !tbaa !9
  %268 = add nsw i32 %267, 1
  %269 = icmp sle i32 %266, %268
  br i1 %269, label %271, label %270

270:                                              ; preds = %265
  store i32 26, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  br label %292

271:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #3
  %272 = load i32, ptr %64, align 4, !tbaa !9
  %273 = sub nsw i32 %272, 1
  store i32 %273, ptr %85, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %285, %271
  %275 = load i32, ptr %85, align 4, !tbaa !9
  %276 = load i32, ptr %65, align 4, !tbaa !9
  %277 = icmp sle i32 %275, %276
  br i1 %277, label %279, label %278

278:                                              ; preds = %274
  store i32 29, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  br label %288

279:                                              ; preds = %274
  %280 = load i32, ptr %85, align 4, !tbaa !9
  %281 = load i32, ptr %84, align 4, !tbaa !9
  %282 = load i32, ptr %68, align 4, !tbaa !9
  %283 = load ptr, ptr %46, align 8, !tbaa !5
  %284 = load ptr, ptr %51, align 8, !tbaa !5
  call void @_Z15bc_solid_u_codeiiiPdPi(i32 noundef %280, i32 noundef %281, i32 noundef %282, ptr noundef %283, ptr noundef %284)
  br label %285

285:                                              ; preds = %279
  %286 = load i32, ptr %85, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %85, align 4, !tbaa !9
  br label %274, !llvm.loop !22

288:                                              ; preds = %278
  br label %289

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

292:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #3
  %293 = load i32, ptr %66, align 4, !tbaa !9
  %294 = sub nsw i32 %293, 1
  store i32 %294, ptr %86, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %319, %292
  %296 = load i32, ptr %86, align 4, !tbaa !9
  %297 = load i32, ptr %67, align 4, !tbaa !9
  %298 = icmp sle i32 %296, %297
  br i1 %298, label %300, label %299

299:                                              ; preds = %295
  store i32 32, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #3
  br label %322

300:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #3
  %301 = load i32, ptr %64, align 4, !tbaa !9
  %302 = sub nsw i32 %301, 1
  store i32 %302, ptr %87, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %315, %300
  %304 = load i32, ptr %87, align 4, !tbaa !9
  %305 = load i32, ptr %65, align 4, !tbaa !9
  %306 = add nsw i32 %305, 1
  %307 = icmp sle i32 %304, %306
  br i1 %307, label %309, label %308

308:                                              ; preds = %303
  store i32 35, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #3
  br label %318

309:                                              ; preds = %303
  %310 = load i32, ptr %87, align 4, !tbaa !9
  %311 = load i32, ptr %86, align 4, !tbaa !9
  %312 = load i32, ptr %68, align 4, !tbaa !9
  %313 = load ptr, ptr %49, align 8, !tbaa !5
  %314 = load ptr, ptr %51, align 8, !tbaa !5
  call void @_Z15bc_solid_v_codeiiiPdPi(i32 noundef %310, i32 noundef %311, i32 noundef %312, ptr noundef %313, ptr noundef %314)
  br label %315

315:                                              ; preds = %309
  %316 = load i32, ptr %87, align 4, !tbaa !9
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %87, align 4, !tbaa !9
  br label %303, !llvm.loop !24

318:                                              ; preds = %308
  br label %319

319:                                              ; preds = %318
  %320 = load i32, ptr %86, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %86, align 4, !tbaa !9
  br label %295, !llvm.loop !25

322:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #3
  %323 = load i32, ptr %66, align 4, !tbaa !9
  %324 = sub nsw i32 %323, 1
  store i32 %324, ptr %88, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %352, %322
  %326 = load i32, ptr %88, align 4, !tbaa !9
  %327 = load i32, ptr %67, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  %329 = icmp sle i32 %326, %328
  br i1 %329, label %331, label %330

330:                                              ; preds = %325
  store i32 38, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #3
  br label %355

331:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #3
  %332 = load i32, ptr %64, align 4, !tbaa !9
  %333 = sub nsw i32 %332, 1
  store i32 %333, ptr %89, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %348, %331
  %335 = load i32, ptr %89, align 4, !tbaa !9
  %336 = load i32, ptr %65, align 4, !tbaa !9
  %337 = icmp sle i32 %335, %336
  br i1 %337, label %339, label %338

338:                                              ; preds = %334
  store i32 41, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #3
  br label %351

339:                                              ; preds = %334
  %340 = load i32, ptr %89, align 4, !tbaa !9
  %341 = load i32, ptr %88, align 4, !tbaa !9
  %342 = load i32, ptr %68, align 4, !tbaa !9
  %343 = load ptr, ptr %46, align 8, !tbaa !5
  %344 = load ptr, ptr %42, align 8, !tbaa !5
  %345 = load ptr, ptr %40, align 8, !tbaa !5
  %346 = load ptr, ptr %51, align 8, !tbaa !5
  %347 = load double, ptr %74, align 8, !tbaa !11
  call void @_Z17bc_flather_u_codeiiiPdS_S_Pid(i32 noundef %340, i32 noundef %341, i32 noundef %342, ptr noundef %343, ptr noundef %344, ptr noundef %345, ptr noundef %346, double noundef %347)
  br label %348

348:                                              ; preds = %339
  %349 = load i32, ptr %89, align 4, !tbaa !9
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %89, align 4, !tbaa !9
  br label %334, !llvm.loop !26

351:                                              ; preds = %338
  br label %352

352:                                              ; preds = %351
  %353 = load i32, ptr %88, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %88, align 4, !tbaa !9
  br label %325, !llvm.loop !27

355:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #3
  %356 = load i32, ptr %66, align 4, !tbaa !9
  %357 = sub nsw i32 %356, 1
  store i32 %357, ptr %90, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %385, %355
  %359 = load i32, ptr %90, align 4, !tbaa !9
  %360 = load i32, ptr %67, align 4, !tbaa !9
  %361 = icmp sle i32 %359, %360
  br i1 %361, label %363, label %362

362:                                              ; preds = %358
  store i32 44, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #3
  br label %388

363:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #3
  %364 = load i32, ptr %64, align 4, !tbaa !9
  %365 = sub nsw i32 %364, 1
  store i32 %365, ptr %91, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %381, %363
  %367 = load i32, ptr %91, align 4, !tbaa !9
  %368 = load i32, ptr %65, align 4, !tbaa !9
  %369 = add nsw i32 %368, 1
  %370 = icmp sle i32 %367, %369
  br i1 %370, label %372, label %371

371:                                              ; preds = %366
  store i32 47, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #3
  br label %384

372:                                              ; preds = %366
  %373 = load i32, ptr %91, align 4, !tbaa !9
  %374 = load i32, ptr %90, align 4, !tbaa !9
  %375 = load i32, ptr %68, align 4, !tbaa !9
  %376 = load ptr, ptr %49, align 8, !tbaa !5
  %377 = load ptr, ptr %43, align 8, !tbaa !5
  %378 = load ptr, ptr %41, align 8, !tbaa !5
  %379 = load ptr, ptr %51, align 8, !tbaa !5
  %380 = load double, ptr %74, align 8, !tbaa !11
  call void @_Z17bc_flather_v_codeiiiPdS_S_Pid(i32 noundef %373, i32 noundef %374, i32 noundef %375, ptr noundef %376, ptr noundef %377, ptr noundef %378, ptr noundef %379, double noundef %380)
  br label %381

381:                                              ; preds = %372
  %382 = load i32, ptr %91, align 4, !tbaa !9
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %91, align 4, !tbaa !9
  br label %366, !llvm.loop !28

384:                                              ; preds = %371
  br label %385

385:                                              ; preds = %384
  %386 = load i32, ptr %90, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %90, align 4, !tbaa !9
  br label %358, !llvm.loop !29

388:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #3
  %389 = load i32, ptr %66, align 4, !tbaa !9
  %390 = sub nsw i32 %389, 1
  store i32 %390, ptr %92, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %443, %388
  %392 = load i32, ptr %92, align 4, !tbaa !9
  %393 = load i32, ptr %67, align 4, !tbaa !9
  %394 = add nsw i32 %393, 1
  %395 = icmp slt i32 %392, %394
  br i1 %395, label %397, label %396

396:                                              ; preds = %391
  store i32 50, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #3
  br label %446

397:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #3
  %398 = load i32, ptr %64, align 4, !tbaa !9
  %399 = sub nsw i32 %398, 1
  store i32 %399, ptr %93, align 4, !tbaa !9
  br label %400

400:                                              ; preds = %439, %397
  %401 = load i32, ptr %93, align 4, !tbaa !9
  %402 = load i32, ptr %65, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  %404 = icmp sle i32 %401, %403
  br i1 %404, label %406, label %405

405:                                              ; preds = %400
  store i32 53, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #3
  br label %442

406:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #3
  %407 = load i32, ptr %92, align 4, !tbaa !9
  %408 = load i32, ptr %68, align 4, !tbaa !9
  %409 = mul nsw i32 %407, %408
  %410 = load i32, ptr %93, align 4, !tbaa !9
  %411 = add nsw i32 %409, %410
  store i32 %411, ptr %94, align 4, !tbaa !9
  %412 = load ptr, ptr %46, align 8, !tbaa !5
  %413 = load i32, ptr %94, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %412, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %44, align 8, !tbaa !5
  %418 = load i32, ptr %94, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  store double %416, ptr %420, align 8, !tbaa !11
  %421 = load ptr, ptr %49, align 8, !tbaa !5
  %422 = load i32, ptr %94, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds double, ptr %421, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !11
  %426 = load ptr, ptr %45, align 8, !tbaa !5
  %427 = load i32, ptr %94, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  store double %425, ptr %429, align 8, !tbaa !11
  %430 = load ptr, ptr %38, align 8, !tbaa !5
  %431 = load i32, ptr %94, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %430, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = load ptr, ptr %39, align 8, !tbaa !5
  %436 = load i32, ptr %94, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %435, i64 %437
  store double %434, ptr %438, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #3
  br label %439

439:                                              ; preds = %406
  %440 = load i32, ptr %93, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %93, align 4, !tbaa !9
  br label %400, !llvm.loop !30

442:                                              ; preds = %405
  br label %443

443:                                              ; preds = %442
  %444 = load i32, ptr %92, align 4, !tbaa !9
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %92, align 4, !tbaa !9
  br label %391, !llvm.loop !31

446:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #3
  %447 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %447, ptr %95, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %474, %446
  %449 = load i32, ptr %95, align 4, !tbaa !9
  %450 = load i32, ptr %67, align 4, !tbaa !9
  %451 = icmp sle i32 %449, %450
  br i1 %451, label %453, label %452

452:                                              ; preds = %448
  store i32 56, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #3
  br label %477

453:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #3
  %454 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %454, ptr %96, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %470, %453
  %456 = load i32, ptr %96, align 4, !tbaa !9
  %457 = load i32, ptr %65, align 4, !tbaa !9
  %458 = sub nsw i32 %457, 1
  %459 = icmp sle i32 %456, %458
  br i1 %459, label %461, label %460

460:                                              ; preds = %455
  store i32 59, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #3
  br label %473

461:                                              ; preds = %455
  %462 = load i32, ptr %96, align 4, !tbaa !9
  %463 = load i32, ptr %95, align 4, !tbaa !9
  %464 = load i32, ptr %68, align 4, !tbaa !9
  %465 = load ptr, ptr %40, align 8, !tbaa !5
  %466 = load ptr, ptr %39, align 8, !tbaa !5
  %467 = load ptr, ptr %51, align 8, !tbaa !5
  %468 = load ptr, ptr %52, align 8, !tbaa !5
  %469 = load ptr, ptr %53, align 8, !tbaa !5
  call void @_Z14next_sshu_codeiiiPdPKdPKiS1_S1_(i32 noundef %462, i32 noundef %463, i32 noundef %464, ptr noundef %465, ptr noundef %466, ptr noundef %467, ptr noundef %468, ptr noundef %469)
  br label %470

470:                                              ; preds = %461
  %471 = load i32, ptr %96, align 4, !tbaa !9
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %96, align 4, !tbaa !9
  br label %455, !llvm.loop !32

473:                                              ; preds = %460
  br label %474

474:                                              ; preds = %473
  %475 = load i32, ptr %95, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %95, align 4, !tbaa !9
  br label %448, !llvm.loop !33

477:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #3
  %478 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %478, ptr %97, align 4, !tbaa !9
  br label %479

479:                                              ; preds = %505, %477
  %480 = load i32, ptr %97, align 4, !tbaa !9
  %481 = load i32, ptr %67, align 4, !tbaa !9
  %482 = sub nsw i32 %481, 1
  %483 = icmp sle i32 %480, %482
  br i1 %483, label %485, label %484

484:                                              ; preds = %479
  store i32 62, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #3
  br label %508

485:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #3
  %486 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %486, ptr %98, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %501, %485
  %488 = load i32, ptr %98, align 4, !tbaa !9
  %489 = load i32, ptr %65, align 4, !tbaa !9
  %490 = icmp sle i32 %488, %489
  br i1 %490, label %492, label %491

491:                                              ; preds = %487
  store i32 65, ptr %76, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #3
  br label %504

492:                                              ; preds = %487
  %493 = load i32, ptr %98, align 4, !tbaa !9
  %494 = load i32, ptr %97, align 4, !tbaa !9
  %495 = load i32, ptr %68, align 4, !tbaa !9
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  %497 = load ptr, ptr %39, align 8, !tbaa !5
  %498 = load ptr, ptr %51, align 8, !tbaa !5
  %499 = load ptr, ptr %52, align 8, !tbaa !5
  %500 = load ptr, ptr %54, align 8, !tbaa !5
  call void @_Z14next_sshv_codeiiiPdS_PiS_S_(i32 noundef %493, i32 noundef %494, i32 noundef %495, ptr noundef %496, ptr noundef %497, ptr noundef %498, ptr noundef %499, ptr noundef %500)
  br label %501

501:                                              ; preds = %492
  %502 = load i32, ptr %98, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %98, align 4, !tbaa !9
  br label %487, !llvm.loop !34

504:                                              ; preds = %491
  br label %505

505:                                              ; preds = %504
  %506 = load i32, ptr %97, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %97, align 4, !tbaa !9
  br label %479, !llvm.loop !35

508:                                              ; preds = %484
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15continuity_codeiiiPdS_S_S_S_S_S_S_dS_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15momentum_u_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15momentum_v_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z11bc_ssh_codeiiiiPdPid(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15bc_solid_u_codeiiiPdPi(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15bc_solid_v_codeiiiPdPi(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z17bc_flather_u_codeiiiPdS_S_Pid(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z17bc_flather_v_codeiiiPdS_S_Pid(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z14next_sshu_codeiiiPdPKdPKiS1_S1_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z14next_sshv_codeiiiPdS_PiS_S_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}


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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @c_invoke_time_step(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, i32 noundef %25, i32 noundef %26, i32 noundef %27, i32 noundef %28, i32 noundef %29, i32 noundef %30, double noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36) local_unnamed_addr #0 {
  %38 = ptrtoint ptr %0 to i64
  %39 = ptrtoint ptr %11 to i64
  %40 = ptrtoint ptr %8 to i64
  %41 = ptrtoint ptr %1 to i64
  %42 = ptrtoint ptr %6 to i64
  %43 = ptrtoint ptr %7 to i64
  %.not279 = icmp sgt i32 %28, %29
  %.not262277 = icmp sgt i32 %26, %27
  %or.cond391 = or i1 %.not279, %.not262277
  br i1 %or.cond391, label %.preheader273, label %.preheader276

.preheader276:                                    ; preds = %37, %._crit_edge
  %.0221280 = phi i32 [ %47, %._crit_edge ], [ %28, %37 ]
  br label %48

.preheader275:                                    ; preds = %._crit_edge
  %.not261.not281 = icmp sge i32 %26, %27
  %or.cond.not = or i1 %.not261.not281, %.not279
  br i1 %or.cond.not, label %.preheader273, label %.preheader274.us

.preheader274.us:                                 ; preds = %.preheader275, %._crit_edge283.us
  %.0237285.us = phi i32 [ %46, %._crit_edge283.us ], [ %28, %.preheader275 ]
  br label %44

44:                                               ; preds = %.preheader274.us, %44
  %.0236282.us = phi i32 [ %26, %.preheader274.us ], [ %45, %44 ]
  tail call void @_Z15momentum_u_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef %.0236282.us, i32 noundef %.0237285.us, i32 noundef %30, ptr noundef %8, ptr noundef %6, ptr noundef %7, ptr noundef %4, ptr noundef %5, ptr noundef %9, ptr noundef %10, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %13, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %22, ptr noundef %15, ptr noundef %23, double noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36)
  %45 = add i32 %.0236282.us, 1
  %exitcond362.not = icmp eq i32 %45, %27
  br i1 %exitcond362.not, label %._crit_edge283.us, label %44, !llvm.loop !5

._crit_edge283.us:                                ; preds = %44
  %46 = add i32 %.0237285.us, 1
  %exitcond363.not = icmp eq i32 %.0237285.us, %29
  br i1 %exitcond363.not, label %.preheader273, label %.preheader274.us, !llvm.loop !7

._crit_edge:                                      ; preds = %48
  %47 = add i32 %.0221280, 1
  %exitcond361.not = icmp eq i32 %.0221280, %29
  br i1 %exitcond361.not, label %.preheader275, label %.preheader276, !llvm.loop !8

48:                                               ; preds = %.preheader276, %48
  %.0238278 = phi i32 [ %26, %.preheader276 ], [ %49, %48 ]
  tail call void @_Z15continuity_codeiiiPdS_S_S_S_S_S_S_dS_(i32 noundef %.0238278, i32 noundef %.0221280, i32 noundef %30, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, double noundef %31, ptr noundef %14)
  %49 = add i32 %.0238278, 1
  %exitcond.not = icmp eq i32 %.0238278, %27
  br i1 %exitcond.not, label %._crit_edge, label %48, !llvm.loop !9

.preheader273:                                    ; preds = %._crit_edge283.us, %37, %.preheader275
  %.not243.not289 = icmp sge i32 %28, %29
  %.not260286 = icmp sgt i32 %26, %27
  %or.cond385 = or i1 %.not243.not289, %.not260286
  br i1 %or.cond385, label %.preheader271, label %.preheader272

.preheader272:                                    ; preds = %.preheader273, %._crit_edge288
  %.0235290 = phi i32 [ %50, %._crit_edge288 ], [ %28, %.preheader273 ]
  br label %51

.preheader271:                                    ; preds = %._crit_edge288, %.preheader273
  %.not259291 = icmp sgt i32 %26, %27
  %or.cond386 = or i1 %.not279, %.not259291
  br i1 %or.cond386, label %._crit_edge296, label %.preheader270

._crit_edge288:                                   ; preds = %51
  %50 = add i32 %.0235290, 1
  %exitcond365.not = icmp eq i32 %50, %29
  br i1 %exitcond365.not, label %.preheader271, label %.preheader272, !llvm.loop !10

51:                                               ; preds = %.preheader272, %51
  %.0234287 = phi i32 [ %26, %.preheader272 ], [ %52, %51 ]
  tail call void @_Z15momentum_v_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef %.0234287, i32 noundef %.0235290, i32 noundef %30, ptr noundef %11, ptr noundef %6, ptr noundef %7, ptr noundef %4, ptr noundef %5, ptr noundef %9, ptr noundef %12, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %13, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %16, ptr noundef %24, double noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36)
  %52 = add i32 %.0234287, 1
  %exitcond364.not = icmp eq i32 %.0234287, %27
  br i1 %exitcond364.not, label %._crit_edge288, label %51, !llvm.loop !11

.preheader270:                                    ; preds = %.preheader271, %._crit_edge293
  %.0233295 = phi i32 [ %56, %._crit_edge293 ], [ %28, %.preheader271 ]
  br label %57

._crit_edge296:                                   ; preds = %._crit_edge293, %.preheader271
  %53 = add nsw i32 %28, -1
  %54 = add nsw i32 %29, 1
  %.not245301 = icmp sgt i32 %53, %54
  br i1 %.not245301, label %.preheader269, label %.lr.ph304

.lr.ph304:                                        ; preds = %._crit_edge296
  %55 = add nsw i32 %26, -1
  %.not258297 = icmp sgt i32 %55, %27
  br i1 %.not258297, label %.preheader269, label %.lr.ph

._crit_edge293:                                   ; preds = %57
  %56 = add i32 %.0233295, 1
  %exitcond367.not = icmp eq i32 %.0233295, %29
  br i1 %exitcond367.not, label %._crit_edge296, label %.preheader270, !llvm.loop !12

57:                                               ; preds = %.preheader270, %57
  %.0232292 = phi i32 [ %26, %.preheader270 ], [ %58, %57 ]
  tail call void @_Z11bc_ssh_codeiiiiPdPid(i32 noundef %.0232292, i32 noundef %.0233295, i32 noundef %30, i32 noundef %25, ptr noundef %0, ptr noundef %13, double noundef %31)
  %58 = add i32 %.0232292, 1
  %exitcond366.not = icmp eq i32 %.0232292, %27
  br i1 %exitcond366.not, label %._crit_edge293, label %57, !llvm.loop !13

.preheader269:                                    ; preds = %._crit_edge300, %.lr.ph304, %._crit_edge296
  %.not246310 = icmp sgt i32 %53, %29
  br i1 %.not246310, label %.preheader268, label %.lr.ph312

.lr.ph312:                                        ; preds = %.preheader269
  %59 = add nsw i32 %26, -1
  %60 = add nsw i32 %27, 1
  %.not257305 = icmp sgt i32 %59, %60
  br i1 %.not257305, label %.preheader268, label %.lr.ph308

.lr.ph:                                           ; preds = %.lr.ph304, %._crit_edge300
  %.0231302 = phi i32 [ %61, %._crit_edge300 ], [ %53, %.lr.ph304 ]
  br label %62

._crit_edge300:                                   ; preds = %62
  %61 = add nsw i32 %.0231302, 1
  %.not245 = icmp sgt i32 %.0231302, %29
  br i1 %.not245, label %.preheader269, label %.lr.ph, !llvm.loop !14

62:                                               ; preds = %.lr.ph, %62
  %.0230298 = phi i32 [ %55, %.lr.ph ], [ %63, %62 ]
  tail call void @_Z15bc_solid_u_codeiiiPdPi(i32 noundef %.0230298, i32 noundef %.0231302, i32 noundef %30, ptr noundef %8, ptr noundef %13)
  %63 = add i32 %.0230298, 1
  %exitcond368.not = icmp eq i32 %.0230298, %27
  br i1 %exitcond368.not, label %._crit_edge300, label %62, !llvm.loop !15

.preheader268:                                    ; preds = %._crit_edge309, %.lr.ph312, %.preheader269
  br i1 %.not245301, label %.preheader267, label %.lr.ph320

.lr.ph320:                                        ; preds = %.preheader268
  %64 = add nsw i32 %26, -1
  %.not256313 = icmp sgt i32 %64, %27
  br i1 %.not256313, label %.preheader267, label %.lr.ph316

.lr.ph308:                                        ; preds = %.lr.ph312, %._crit_edge309
  %.0229311 = phi i32 [ %65, %._crit_edge309 ], [ %53, %.lr.ph312 ]
  br label %66

._crit_edge309:                                   ; preds = %66
  %65 = add i32 %.0229311, 1
  %exitcond369.not = icmp eq i32 %.0229311, %29
  br i1 %exitcond369.not, label %.preheader268, label %.lr.ph308, !llvm.loop !16

66:                                               ; preds = %.lr.ph308, %66
  %.0228306 = phi i32 [ %59, %.lr.ph308 ], [ %67, %66 ]
  tail call void @_Z15bc_solid_v_codeiiiPdPi(i32 noundef %.0228306, i32 noundef %.0229311, i32 noundef %30, ptr noundef %11, ptr noundef %13)
  %67 = add nsw i32 %.0228306, 1
  %.not257 = icmp sgt i32 %.0228306, %27
  br i1 %.not257, label %._crit_edge309, label %66, !llvm.loop !17

.preheader267:                                    ; preds = %._crit_edge317, %.lr.ph320, %.preheader268
  br i1 %.not246310, label %.preheader265, label %.lr.ph328

.lr.ph328:                                        ; preds = %.preheader267
  %68 = add nsw i32 %26, -1
  %69 = add nsw i32 %27, 1
  %.not255321 = icmp sgt i32 %68, %69
  br i1 %.not255321, label %.lr.ph336, label %.lr.ph324

.lr.ph316:                                        ; preds = %.lr.ph320, %._crit_edge317
  %.0227319 = phi i32 [ %70, %._crit_edge317 ], [ %53, %.lr.ph320 ]
  br label %71

._crit_edge317:                                   ; preds = %71
  %70 = add nsw i32 %.0227319, 1
  %.not247 = icmp sgt i32 %.0227319, %29
  br i1 %.not247, label %.preheader267, label %.lr.ph316, !llvm.loop !18

71:                                               ; preds = %.lr.ph316, %71
  %.0226314 = phi i32 [ %64, %.lr.ph316 ], [ %72, %71 ]
  tail call void @_Z17bc_flather_u_codeiiiPdS_S_Pid(i32 noundef %.0226314, i32 noundef %.0227319, i32 noundef %30, ptr noundef %8, ptr noundef %4, ptr noundef %2, ptr noundef %13, double noundef %36)
  %72 = add i32 %.0226314, 1
  %exitcond370.not = icmp eq i32 %.0226314, %27
  br i1 %exitcond370.not, label %._crit_edge317, label %71, !llvm.loop !19

.preheader266:                                    ; preds = %._crit_edge325
  br i1 %.not246310, label %.preheader265, label %.lr.ph336

.lr.ph336:                                        ; preds = %.lr.ph328, %.preheader266
  %73 = add nsw i32 %26, -1
  %74 = add nsw i32 %27, 1
  %.not254329 = icmp sgt i32 %73, %74
  br i1 %.not254329, label %.preheader265, label %.lr.ph332.preheader

.lr.ph332.preheader:                              ; preds = %.lr.ph336
  %75 = sext i32 %73 to i64
  %76 = add i32 %27, 2
  %77 = sext i32 %53 to i64
  %78 = sext i32 %30 to i64
  %79 = sub i64 %43, %42
  %80 = sub i64 %41, %42
  %81 = sub i64 %42, %40
  %82 = sub i64 %39, %42
  %83 = sub i64 %38, %42
  %84 = sub i64 %41, %43
  %85 = sub i64 %43, %40
  %86 = sub i64 %43, %39
  %87 = sub i64 %38, %43
  %88 = sub i64 %41, %40
  %89 = sub i64 %41, %39
  %90 = sub i64 %41, %38
  %91 = add i32 %27, 2
  %92 = sub i32 %91, %26
  %93 = zext i32 %92 to i64
  %94 = add nuw nsw i64 %93, 1
  %95 = add i32 %27, 1
  %min.iters.check = icmp ult i32 %92, 13
  %diff.check = icmp ult i64 %79, 32
  %diff.check392 = icmp ult i64 %80, 32
  %conflict.rdx = or i1 %diff.check, %diff.check392
  %diff.check393 = icmp ult i64 %81, 32
  %conflict.rdx394 = or i1 %conflict.rdx, %diff.check393
  %diff.check395 = icmp ult i64 %82, 32
  %conflict.rdx396 = or i1 %conflict.rdx394, %diff.check395
  %diff.check397 = icmp ult i64 %83, 32
  %conflict.rdx398 = or i1 %conflict.rdx396, %diff.check397
  %diff.check399 = icmp ult i64 %84, 32
  %conflict.rdx400 = or i1 %conflict.rdx398, %diff.check399
  %diff.check401 = icmp ult i64 %85, 32
  %conflict.rdx402 = or i1 %conflict.rdx400, %diff.check401
  %diff.check403 = icmp ult i64 %86, 32
  %conflict.rdx404 = or i1 %conflict.rdx402, %diff.check403
  %diff.check405 = icmp ult i64 %87, 32
  %conflict.rdx406 = or i1 %conflict.rdx404, %diff.check405
  %diff.check407 = icmp ult i64 %88, 32
  %conflict.rdx408 = or i1 %conflict.rdx406, %diff.check407
  %diff.check409 = icmp ult i64 %89, 32
  %conflict.rdx410 = or i1 %conflict.rdx408, %diff.check409
  %diff.check411 = icmp ult i64 %90, 32
  %conflict.rdx412 = or i1 %conflict.rdx410, %diff.check411
  %n.vec = and i64 %94, 8589934588
  %ind.end = add nsw i64 %n.vec, %75
  %cmp.n = icmp eq i64 %94, %n.vec
  br label %.lr.ph332

.lr.ph324:                                        ; preds = %.lr.ph328, %._crit_edge325
  %.0225327 = phi i32 [ %96, %._crit_edge325 ], [ %53, %.lr.ph328 ]
  br label %97

._crit_edge325:                                   ; preds = %97
  %96 = add i32 %.0225327, 1
  %exitcond371.not = icmp eq i32 %.0225327, %29
  br i1 %exitcond371.not, label %.preheader266, label %.lr.ph324, !llvm.loop !20

97:                                               ; preds = %.lr.ph324, %97
  %.0224322 = phi i32 [ %68, %.lr.ph324 ], [ %98, %97 ]
  tail call void @_Z17bc_flather_v_codeiiiPdS_S_Pid(i32 noundef %.0224322, i32 noundef %.0225327, i32 noundef %30, ptr noundef %11, ptr noundef %5, ptr noundef %3, ptr noundef %13, double noundef %36)
  %98 = add nsw i32 %.0224322, 1
  %.not255 = icmp sgt i32 %.0224322, %27
  br i1 %.not255, label %._crit_edge325, label %97, !llvm.loop !21

.preheader265:                                    ; preds = %._crit_edge333, %.preheader267, %.lr.ph336, %.preheader266
  %.not253.not337 = icmp sge i32 %26, %27
  %or.cond388.not = or i1 %.not253.not337, %.not279
  br i1 %or.cond388.not, label %.preheader263, label %.preheader264.us

.preheader264.us:                                 ; preds = %.preheader265, %._crit_edge340.us
  %.0220342.us = phi i32 [ %101, %._crit_edge340.us ], [ %28, %.preheader265 ]
  br label %99

99:                                               ; preds = %.preheader264.us, %99
  %.0219338.us = phi i32 [ %26, %.preheader264.us ], [ %100, %99 ]
  tail call void @_Z14next_sshu_codeiiiPdPKdPKiS1_S1_(i32 noundef %.0219338.us, i32 noundef %.0220342.us, i32 noundef %30, ptr noundef %2, ptr noundef %1, ptr noundef %13, ptr noundef %14, ptr noundef %15)
  %100 = add i32 %.0219338.us, 1
  %exitcond379.not = icmp eq i32 %100, %27
  br i1 %exitcond379.not, label %._crit_edge340.us, label %99, !llvm.loop !22

._crit_edge340.us:                                ; preds = %99
  %101 = add i32 %.0220342.us, 1
  %exitcond380.not = icmp eq i32 %.0220342.us, %29
  br i1 %exitcond380.not, label %.preheader263, label %.preheader264.us, !llvm.loop !23

.lr.ph332:                                        ; preds = %.lr.ph332.preheader, %._crit_edge333
  %indvars.iv374 = phi i64 [ %77, %.lr.ph332.preheader ], [ %indvars.iv.next375, %._crit_edge333 ]
  %102 = mul nsw i64 %indvars.iv374, %78
  %brmerge = select i1 %min.iters.check, i1 true, i1 %conflict.rdx412
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

scalar.ph.preheader:                              ; preds = %.lr.ph332, %middle.block
  %indvars.iv.ph = phi i64 [ %75, %.lr.ph332 ], [ %ind.end, %middle.block ]
  %103 = trunc i64 %indvars.iv.ph to i32
  %104 = sub i32 %27, %103
  %xtraiter = and i32 %104, 1
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %105 = add nsw i64 %indvars.iv.ph, %102
  %106 = getelementptr inbounds double, ptr %8, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !24
  %108 = getelementptr inbounds double, ptr %6, i64 %105
  store double %107, ptr %108, align 8, !tbaa !24
  %109 = getelementptr inbounds double, ptr %11, i64 %105
  %110 = load double, ptr %109, align 8, !tbaa !24
  %111 = getelementptr inbounds double, ptr %7, i64 %105
  store double %110, ptr %111, align 8, !tbaa !24
  %112 = getelementptr inbounds double, ptr %0, i64 %105
  %113 = load double, ptr %112, align 8, !tbaa !24
  %114 = getelementptr inbounds double, ptr %1, i64 %105
  store double %113, ptr %114, align 8, !tbaa !24
  %indvars.iv.next.prol = add nsw i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %115 = icmp eq i32 %95, %103
  br i1 %115, label %._crit_edge333, label %scalar.ph

vector.body:                                      ; preds = %.lr.ph332, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph332 ]
  %offset.idx = add i64 %index, %75
  %116 = add nsw i64 %offset.idx, %102
  %117 = getelementptr inbounds double, ptr %8, i64 %116
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  %wide.load = load <2 x double>, ptr %117, align 8, !tbaa !24
  %wide.load413 = load <2 x double>, ptr %118, align 8, !tbaa !24
  %119 = getelementptr inbounds double, ptr %6, i64 %116
  %120 = getelementptr inbounds i8, ptr %119, i64 16
  store <2 x double> %wide.load, ptr %119, align 8, !tbaa !24
  store <2 x double> %wide.load413, ptr %120, align 8, !tbaa !24
  %121 = getelementptr inbounds double, ptr %11, i64 %116
  %122 = getelementptr inbounds i8, ptr %121, i64 16
  %wide.load414 = load <2 x double>, ptr %121, align 8, !tbaa !24
  %wide.load415 = load <2 x double>, ptr %122, align 8, !tbaa !24
  %123 = getelementptr inbounds double, ptr %7, i64 %116
  %124 = getelementptr inbounds i8, ptr %123, i64 16
  store <2 x double> %wide.load414, ptr %123, align 8, !tbaa !24
  store <2 x double> %wide.load415, ptr %124, align 8, !tbaa !24
  %125 = getelementptr inbounds double, ptr %0, i64 %116
  %126 = getelementptr inbounds i8, ptr %125, i64 16
  %wide.load416 = load <2 x double>, ptr %125, align 8, !tbaa !24
  %wide.load417 = load <2 x double>, ptr %126, align 8, !tbaa !24
  %127 = getelementptr inbounds double, ptr %1, i64 %116
  %128 = getelementptr inbounds i8, ptr %127, i64 16
  store <2 x double> %wide.load416, ptr %127, align 8, !tbaa !24
  store <2 x double> %wide.load417, ptr %128, align 8, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %129 = icmp eq i64 %index.next, %n.vec
  br i1 %129, label %middle.block, label %vector.body, !llvm.loop !28

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge333, label %scalar.ph.preheader

._crit_edge333:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next375 = add nsw i64 %indvars.iv374, 1
  %lftr.wideiv377 = trunc i64 %indvars.iv.next375 to i32
  %exitcond378.not = icmp eq i32 %54, %lftr.wideiv377
  br i1 %exitcond378.not, label %.preheader265, label %.lr.ph332, !llvm.loop !31

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %130 = add nsw i64 %indvars.iv, %102
  %131 = getelementptr inbounds double, ptr %8, i64 %130
  %132 = load double, ptr %131, align 8, !tbaa !24
  %133 = getelementptr inbounds double, ptr %6, i64 %130
  store double %132, ptr %133, align 8, !tbaa !24
  %134 = getelementptr inbounds double, ptr %11, i64 %130
  %135 = load double, ptr %134, align 8, !tbaa !24
  %136 = getelementptr inbounds double, ptr %7, i64 %130
  store double %135, ptr %136, align 8, !tbaa !24
  %137 = getelementptr inbounds double, ptr %0, i64 %130
  %138 = load double, ptr %137, align 8, !tbaa !24
  %139 = getelementptr inbounds double, ptr %1, i64 %130
  store double %138, ptr %139, align 8, !tbaa !24
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %140 = add nsw i64 %indvars.iv.next, %102
  %141 = getelementptr inbounds double, ptr %8, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !24
  %143 = getelementptr inbounds double, ptr %6, i64 %140
  store double %142, ptr %143, align 8, !tbaa !24
  %144 = getelementptr inbounds double, ptr %11, i64 %140
  %145 = load double, ptr %144, align 8, !tbaa !24
  %146 = getelementptr inbounds double, ptr %7, i64 %140
  store double %145, ptr %146, align 8, !tbaa !24
  %147 = getelementptr inbounds double, ptr %0, i64 %140
  %148 = load double, ptr %147, align 8, !tbaa !24
  %149 = getelementptr inbounds double, ptr %1, i64 %140
  store double %148, ptr %149, align 8, !tbaa !24
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next.1 to i32
  %exitcond373.1 = icmp eq i32 %76, %lftr.wideiv.1
  br i1 %exitcond373.1, label %._crit_edge333, label %scalar.ph, !llvm.loop !32

.preheader263:                                    ; preds = %._crit_edge340.us, %.preheader265
  %.not252343 = icmp sgt i32 %26, %27
  %or.cond390 = or i1 %.not243.not289, %.not252343
  br i1 %or.cond390, label %._crit_edge349, label %.preheader

.preheader:                                       ; preds = %.preheader263, %._crit_edge346
  %.0218348 = phi i32 [ %150, %._crit_edge346 ], [ %28, %.preheader263 ]
  br label %151

._crit_edge349:                                   ; preds = %._crit_edge346, %.preheader263
  ret void

._crit_edge346:                                   ; preds = %151
  %150 = add i32 %.0218348, 1
  %exitcond382.not = icmp eq i32 %150, %29
  br i1 %exitcond382.not, label %._crit_edge349, label %.preheader, !llvm.loop !33

151:                                              ; preds = %.preheader, %151
  %.0344 = phi i32 [ %26, %.preheader ], [ %152, %151 ]
  tail call void @_Z14next_sshv_codeiiiPdS_PiS_S_(i32 noundef %.0344, i32 noundef %.0218348, i32 noundef %30, ptr noundef %3, ptr noundef %1, ptr noundef %13, ptr noundef %14, ptr noundef %16)
  %152 = add i32 %.0344, 1
  %exitcond381.not = icmp eq i32 %.0344, %27
  br i1 %exitcond381.not, label %._crit_edge346, label %151, !llvm.loop !34
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15continuity_codeiiiPdS_S_S_S_S_S_S_dS_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15momentum_u_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15momentum_v_codeiiiPdS_S_S_S_S_S_S_S_S_PiS_S_S_S_S_S_S_dddddd(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z11bc_ssh_codeiiiiPdPid(i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15bc_solid_u_codeiiiPdPi(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z15bc_solid_v_codeiiiPdPi(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z17bc_flather_u_codeiiiPdS_S_Pid(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z17bc_flather_v_codeiiiPdS_S_Pid(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z14next_sshu_codeiiiPdPKdPKiS1_S1_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z14next_sshv_codeiiiPdS_PiS_S_(i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = distinct !{!7, !6}
!8 = distinct !{!8, !6}
!9 = distinct !{!9, !6}
!10 = distinct !{!10, !6}
!11 = distinct !{!11, !6}
!12 = distinct !{!12, !6}
!13 = distinct !{!13, !6}
!14 = distinct !{!14, !6}
!15 = distinct !{!15, !6}
!16 = distinct !{!16, !6}
!17 = distinct !{!17, !6}
!18 = distinct !{!18, !6}
!19 = distinct !{!19, !6}
!20 = distinct !{!20, !6}
!21 = distinct !{!21, !6}
!22 = distinct !{!22, !6}
!23 = distinct !{!23, !6}
!24 = !{!25, !25, i64 0}
!25 = !{!"double", !26, i64 0}
!26 = !{!"omnipotent char", !27, i64 0}
!27 = !{!"Simple C++ TBAA"}
!28 = distinct !{!28, !6, !29, !30}
!29 = !{!"llvm.loop.isvectorized", i32 1}
!30 = !{!"llvm.loop.unroll.runtime.disable"}
!31 = distinct !{!31, !6}
!32 = distinct !{!32, !6, !29}
!33 = distinct !{!33, !6}
!34 = distinct !{!34, !6}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass