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

; 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, i32 noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36, double noundef %37) #0 {
  %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 ptr, align 8
  %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 i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %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
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  store ptr %0, ptr %39, align 8, !tbaa !5
  store ptr %1, ptr %40, align 8, !tbaa !5
  store ptr %2, ptr %41, align 8, !tbaa !5
  store ptr %3, ptr %42, align 8, !tbaa !5
  store ptr %4, ptr %43, align 8, !tbaa !5
  store ptr %5, ptr %44, align 8, !tbaa !5
  store ptr %6, ptr %45, align 8, !tbaa !5
  store ptr %7, ptr %46, align 8, !tbaa !5
  store ptr %8, ptr %47, align 8, !tbaa !5
  store ptr %9, ptr %48, align 8, !tbaa !5
  store ptr %10, ptr %49, align 8, !tbaa !5
  store ptr %11, ptr %50, align 8, !tbaa !5
  store ptr %12, ptr %51, align 8, !tbaa !5
  store ptr %13, ptr %52, align 8, !tbaa !5
  store ptr %14, ptr %53, align 8, !tbaa !5
  store ptr %15, ptr %54, align 8, !tbaa !5
  store ptr %16, ptr %55, align 8, !tbaa !5
  store ptr %17, ptr %56, align 8, !tbaa !5
  store ptr %18, ptr %57, align 8, !tbaa !5
  store ptr %19, ptr %58, align 8, !tbaa !5
  store ptr %20, ptr %59, align 8, !tbaa !5
  store ptr %21, ptr %60, align 8, !tbaa !5
  store ptr %22, ptr %61, align 8, !tbaa !5
  store ptr %23, ptr %62, align 8, !tbaa !5
  store ptr %24, ptr %63, align 8, !tbaa !5
  store i32 %25, ptr %64, align 4, !tbaa !9
  store i32 %26, ptr %65, align 4, !tbaa !9
  store i32 %27, ptr %66, align 4, !tbaa !9
  store i32 %28, ptr %67, align 4, !tbaa !9
  store i32 %29, ptr %68, align 4, !tbaa !9
  store i32 %30, ptr %69, align 4, !tbaa !9
  store i32 %31, ptr %70, align 4, !tbaa !9
  store double %32, ptr %71, align 8, !tbaa !11
  store double %33, ptr %72, align 8, !tbaa !11
  store double %34, ptr %73, align 8, !tbaa !11
  store double %35, ptr %74, align 8, !tbaa !11
  store double %36, ptr %75, align 8, !tbaa !11
  store double %37, ptr %76, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #3
  %101 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %101, ptr %77, align 4, !tbaa !9
  br label %102

102:                                              ; preds = %132, %38
  %103 = load i32, ptr %77, align 4, !tbaa !9
  %104 = load i32, ptr %68, align 4, !tbaa !9
  %105 = icmp sle i32 %103, %104
  br i1 %105, label %107, label %106

106:                                              ; preds = %102
  store i32 2, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  br label %135

107:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #3
  %108 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %108, ptr %79, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %128, %107
  %110 = load i32, ptr %79, align 4, !tbaa !9
  %111 = load i32, ptr %66, align 4, !tbaa !9
  %112 = icmp sle i32 %110, %111
  br i1 %112, label %114, label %113

113:                                              ; preds = %109
  store i32 5, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  br label %131

114:                                              ; preds = %109
  %115 = load i32, ptr %79, align 4, !tbaa !9
  %116 = load i32, ptr %77, align 4, !tbaa !9
  %117 = load i32, ptr %69, align 4, !tbaa !9
  %118 = load ptr, ptr %39, align 8, !tbaa !5
  %119 = load ptr, ptr %40, align 8, !tbaa !5
  %120 = load ptr, ptr %41, align 8, !tbaa !5
  %121 = load ptr, ptr %42, align 8, !tbaa !5
  %122 = load ptr, ptr %43, align 8, !tbaa !5
  %123 = load ptr, ptr %44, align 8, !tbaa !5
  %124 = load ptr, ptr %45, align 8, !tbaa !5
  %125 = load ptr, ptr %46, align 8, !tbaa !5
  %126 = load double, ptr %71, align 8, !tbaa !11
  %127 = load ptr, ptr %53, align 8, !tbaa !5
  call void @_Z15continuity_codeiiiPdS_S_S_S_S_S_S_dS_(i32 noundef %115, i32 noundef %116, i32 noundef %117, ptr noundef %118, ptr noundef %119, ptr noundef %120, ptr noundef %121, ptr noundef %122, ptr noundef %123, ptr noundef %124, ptr noundef %125, double noundef %126, ptr noundef %127)
  br label %128

128:                                              ; preds = %114
  %129 = load i32, ptr %79, align 4, !tbaa !9
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %79, align 4, !tbaa !9
  br label %109, !llvm.loop !13

131:                                              ; preds = %113
  br label %132

132:                                              ; preds = %131
  %133 = load i32, ptr %77, align 4, !tbaa !9
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr %77, align 4, !tbaa !9
  br label %102, !llvm.loop !15

135:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #3
  %136 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %136, ptr %80, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %182, %135
  %138 = load i32, ptr %80, align 4, !tbaa !9
  %139 = load i32, ptr %68, align 4, !tbaa !9
  %140 = icmp sle i32 %138, %139
  br i1 %140, label %142, label %141

141:                                              ; preds = %137
  store i32 8, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  br label %185

142:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #3
  %143 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %143, ptr %81, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %178, %142
  %145 = load i32, ptr %81, align 4, !tbaa !9
  %146 = load i32, ptr %66, align 4, !tbaa !9
  %147 = sub nsw i32 %146, 1
  %148 = icmp sle i32 %145, %147
  br i1 %148, label %150, label %149

149:                                              ; preds = %144
  store i32 11, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  br label %181

150:                                              ; preds = %144
  %151 = load i32, ptr %81, align 4, !tbaa !9
  %152 = load i32, ptr %80, align 4, !tbaa !9
  %153 = load i32, ptr %69, align 4, !tbaa !9
  %154 = load ptr, ptr %47, align 8, !tbaa !5
  %155 = load ptr, ptr %45, align 8, !tbaa !5
  %156 = load ptr, ptr %46, align 8, !tbaa !5
  %157 = load ptr, ptr %43, align 8, !tbaa !5
  %158 = load ptr, ptr %44, align 8, !tbaa !5
  %159 = load ptr, ptr %48, align 8, !tbaa !5
  %160 = load ptr, ptr %49, align 8, !tbaa !5
  %161 = load ptr, ptr %40, align 8, !tbaa !5
  %162 = load ptr, ptr %41, align 8, !tbaa !5
  %163 = load ptr, ptr %42, align 8, !tbaa !5
  %164 = load ptr, ptr %52, align 8, !tbaa !5
  %165 = load ptr, ptr %56, align 8, !tbaa !5
  %166 = load ptr, ptr %57, align 8, !tbaa !5
  %167 = load ptr, ptr %58, align 8, !tbaa !5
  %168 = load ptr, ptr %59, align 8, !tbaa !5
  %169 = load ptr, ptr %61, align 8, !tbaa !5
  %170 = load ptr, ptr %54, align 8, !tbaa !5
  %171 = load ptr, ptr %62, align 8, !tbaa !5
  %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
  %176 = load double, ptr %75, align 8, !tbaa !11
  %177 = load double, ptr %76, 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 %151, i32 noundef %152, i32 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, ptr noundef %170, ptr noundef %171, double noundef %172, double noundef %173, double noundef %174, double noundef %175, double noundef %176, double noundef %177)
  br label %178

178:                                              ; preds = %150
  %179 = load i32, ptr %81, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %81, align 4, !tbaa !9
  br label %144, !llvm.loop !16

181:                                              ; preds = %149
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %80, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %80, align 4, !tbaa !9
  br label %137, !llvm.loop !17

185:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #3
  %186 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %186, ptr %82, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %232, %185
  %188 = load i32, ptr %82, align 4, !tbaa !9
  %189 = load i32, ptr %68, align 4, !tbaa !9
  %190 = sub nsw i32 %189, 1
  %191 = icmp sle i32 %188, %190
  br i1 %191, label %193, label %192

192:                                              ; preds = %187
  store i32 14, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #3
  br label %235

193:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #3
  %194 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %194, ptr %83, align 4, !tbaa !9
  br label %195

195:                                              ; preds = %228, %193
  %196 = load i32, ptr %83, align 4, !tbaa !9
  %197 = load i32, ptr %66, align 4, !tbaa !9
  %198 = icmp sle i32 %196, %197
  br i1 %198, label %200, label %199

199:                                              ; preds = %195
  store i32 17, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  br label %231

200:                                              ; preds = %195
  %201 = load i32, ptr %83, align 4, !tbaa !9
  %202 = load i32, ptr %82, align 4, !tbaa !9
  %203 = load i32, ptr %69, align 4, !tbaa !9
  %204 = load ptr, ptr %50, align 8, !tbaa !5
  %205 = load ptr, ptr %45, align 8, !tbaa !5
  %206 = load ptr, ptr %46, align 8, !tbaa !5
  %207 = load ptr, ptr %43, align 8, !tbaa !5
  %208 = load ptr, ptr %44, align 8, !tbaa !5
  %209 = load ptr, ptr %48, align 8, !tbaa !5
  %210 = load ptr, ptr %51, align 8, !tbaa !5
  %211 = load ptr, ptr %40, align 8, !tbaa !5
  %212 = load ptr, ptr %41, align 8, !tbaa !5
  %213 = load ptr, ptr %42, align 8, !tbaa !5
  %214 = load ptr, ptr %52, align 8, !tbaa !5
  %215 = load ptr, ptr %57, align 8, !tbaa !5
  %216 = load ptr, ptr %58, align 8, !tbaa !5
  %217 = load ptr, ptr %59, align 8, !tbaa !5
  %218 = load ptr, ptr %60, align 8, !tbaa !5
  %219 = load ptr, ptr %61, align 8, !tbaa !5
  %220 = load ptr, ptr %55, align 8, !tbaa !5
  %221 = load ptr, ptr %63, align 8, !tbaa !5
  %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
  %226 = load double, ptr %75, align 8, !tbaa !11
  %227 = load double, ptr %76, 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 %201, i32 noundef %202, i32 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, ptr noundef %220, ptr noundef %221, double noundef %222, double noundef %223, double noundef %224, double noundef %225, double noundef %226, double noundef %227)
  br label %228

228:                                              ; preds = %200
  %229 = load i32, ptr %83, align 4, !tbaa !9
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %83, align 4, !tbaa !9
  br label %195, !llvm.loop !18

231:                                              ; preds = %199
  br label %232

232:                                              ; preds = %231
  %233 = load i32, ptr %82, align 4, !tbaa !9
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %82, align 4, !tbaa !9
  br label %187, !llvm.loop !19

235:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #3
  %236 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %236, ptr %84, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %261, %235
  %238 = load i32, ptr %84, align 4, !tbaa !9
  %239 = load i32, ptr %68, align 4, !tbaa !9
  %240 = icmp sle i32 %238, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %237
  store i32 20, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  br label %264

242:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #3
  %243 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %243, ptr %85, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %257, %242
  %245 = load i32, ptr %85, align 4, !tbaa !9
  %246 = load i32, ptr %66, align 4, !tbaa !9
  %247 = icmp sle i32 %245, %246
  br i1 %247, label %249, label %248

248:                                              ; preds = %244
  store i32 23, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #3
  br label %260

249:                                              ; preds = %244
  %250 = load i32, ptr %85, align 4, !tbaa !9
  %251 = load i32, ptr %84, align 4, !tbaa !9
  %252 = load i32, ptr %69, align 4, !tbaa !9
  %253 = load i32, ptr %64, align 4, !tbaa !9
  %254 = load ptr, ptr %39, align 8, !tbaa !5
  %255 = load ptr, ptr %52, align 8, !tbaa !5
  %256 = load double, ptr %71, align 8, !tbaa !11
  call void @_Z11bc_ssh_codeiiiiPdPid(i32 noundef %250, i32 noundef %251, i32 noundef %252, i32 noundef %253, ptr noundef %254, ptr noundef %255, double noundef %256)
  br label %257

257:                                              ; preds = %249
  %258 = load i32, ptr %85, align 4, !tbaa !9
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %85, align 4, !tbaa !9
  br label %244, !llvm.loop !20

260:                                              ; preds = %248
  br label %261

261:                                              ; preds = %260
  %262 = load i32, ptr %84, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %84, align 4, !tbaa !9
  br label %237, !llvm.loop !21

264:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #3
  %265 = load i32, ptr %67, align 4, !tbaa !9
  %266 = sub nsw i32 %265, 1
  store i32 %266, ptr %86, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %291, %264
  %268 = load i32, ptr %86, align 4, !tbaa !9
  %269 = load i32, ptr %68, align 4, !tbaa !9
  %270 = add nsw i32 %269, 1
  %271 = icmp sle i32 %268, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %267
  store i32 26, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #3
  br label %294

273:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #3
  %274 = load i32, ptr %65, align 4, !tbaa !9
  %275 = sub nsw i32 %274, 1
  store i32 %275, ptr %87, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %287, %273
  %277 = load i32, ptr %87, align 4, !tbaa !9
  %278 = load i32, ptr %66, align 4, !tbaa !9
  %279 = icmp sle i32 %277, %278
  br i1 %279, label %281, label %280

280:                                              ; preds = %276
  store i32 29, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #3
  br label %290

281:                                              ; preds = %276
  %282 = load i32, ptr %87, align 4, !tbaa !9
  %283 = load i32, ptr %86, align 4, !tbaa !9
  %284 = load i32, ptr %69, align 4, !tbaa !9
  %285 = load ptr, ptr %47, align 8, !tbaa !5
  %286 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_Z15bc_solid_u_codeiiiPdPi(i32 noundef %282, i32 noundef %283, i32 noundef %284, ptr noundef %285, ptr noundef %286)
  br label %287

287:                                              ; preds = %281
  %288 = load i32, ptr %87, align 4, !tbaa !9
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %87, align 4, !tbaa !9
  br label %276, !llvm.loop !22

290:                                              ; preds = %280
  br label %291

291:                                              ; preds = %290
  %292 = load i32, ptr %86, align 4, !tbaa !9
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %86, align 4, !tbaa !9
  br label %267, !llvm.loop !23

294:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #3
  %295 = load i32, ptr %67, align 4, !tbaa !9
  %296 = sub nsw i32 %295, 1
  store i32 %296, ptr %88, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %321, %294
  %298 = load i32, ptr %88, align 4, !tbaa !9
  %299 = load i32, ptr %68, align 4, !tbaa !9
  %300 = icmp sle i32 %298, %299
  br i1 %300, label %302, label %301

301:                                              ; preds = %297
  store i32 32, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #3
  br label %324

302:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #3
  %303 = load i32, ptr %65, align 4, !tbaa !9
  %304 = sub nsw i32 %303, 1
  store i32 %304, ptr %89, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %317, %302
  %306 = load i32, ptr %89, align 4, !tbaa !9
  %307 = load i32, ptr %66, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  %309 = icmp sle i32 %306, %308
  br i1 %309, label %311, label %310

310:                                              ; preds = %305
  store i32 35, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #3
  br label %320

311:                                              ; preds = %305
  %312 = load i32, ptr %89, align 4, !tbaa !9
  %313 = load i32, ptr %88, align 4, !tbaa !9
  %314 = load i32, ptr %69, align 4, !tbaa !9
  %315 = load ptr, ptr %50, align 8, !tbaa !5
  %316 = load ptr, ptr %52, align 8, !tbaa !5
  call void @_Z15bc_solid_v_codeiiiPdPi(i32 noundef %312, i32 noundef %313, i32 noundef %314, ptr noundef %315, ptr noundef %316)
  br label %317

317:                                              ; preds = %311
  %318 = load i32, ptr %89, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %89, align 4, !tbaa !9
  br label %305, !llvm.loop !24

320:                                              ; preds = %310
  br label %321

321:                                              ; preds = %320
  %322 = load i32, ptr %88, align 4, !tbaa !9
  %323 = add nsw i32 %322, 1
  store i32 %323, ptr %88, align 4, !tbaa !9
  br label %297, !llvm.loop !25

324:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #3
  %325 = load i32, ptr %67, align 4, !tbaa !9
  %326 = sub nsw i32 %325, 1
  store i32 %326, ptr %90, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %354, %324
  %328 = load i32, ptr %90, align 4, !tbaa !9
  %329 = load i32, ptr %68, align 4, !tbaa !9
  %330 = add nsw i32 %329, 1
  %331 = icmp sle i32 %328, %330
  br i1 %331, label %333, label %332

332:                                              ; preds = %327
  store i32 38, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #3
  br label %357

333:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #3
  %334 = load i32, ptr %65, align 4, !tbaa !9
  %335 = sub nsw i32 %334, 1
  store i32 %335, ptr %91, align 4, !tbaa !9
  br label %336

336:                                              ; preds = %350, %333
  %337 = load i32, ptr %91, align 4, !tbaa !9
  %338 = load i32, ptr %66, align 4, !tbaa !9
  %339 = icmp sle i32 %337, %338
  br i1 %339, label %341, label %340

340:                                              ; preds = %336
  store i32 41, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #3
  br label %353

341:                                              ; preds = %336
  %342 = load i32, ptr %91, align 4, !tbaa !9
  %343 = load i32, ptr %90, align 4, !tbaa !9
  %344 = load i32, ptr %69, align 4, !tbaa !9
  %345 = load ptr, ptr %47, align 8, !tbaa !5
  %346 = load ptr, ptr %43, align 8, !tbaa !5
  %347 = load ptr, ptr %41, align 8, !tbaa !5
  %348 = load ptr, ptr %52, align 8, !tbaa !5
  %349 = load double, ptr %76, align 8, !tbaa !11
  call void @_Z17bc_flather_u_codeiiiPdS_S_Pid(i32 noundef %342, i32 noundef %343, i32 noundef %344, ptr noundef %345, ptr noundef %346, ptr noundef %347, ptr noundef %348, double noundef %349)
  br label %350

350:                                              ; preds = %341
  %351 = load i32, ptr %91, align 4, !tbaa !9
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %91, align 4, !tbaa !9
  br label %336, !llvm.loop !26

353:                                              ; preds = %340
  br label %354

354:                                              ; preds = %353
  %355 = load i32, ptr %90, align 4, !tbaa !9
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %90, align 4, !tbaa !9
  br label %327, !llvm.loop !27

357:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #3
  %358 = load i32, ptr %67, align 4, !tbaa !9
  %359 = sub nsw i32 %358, 1
  store i32 %359, ptr %92, align 4, !tbaa !9
  br label %360

360:                                              ; preds = %387, %357
  %361 = load i32, ptr %92, align 4, !tbaa !9
  %362 = load i32, ptr %68, align 4, !tbaa !9
  %363 = icmp sle i32 %361, %362
  br i1 %363, label %365, label %364

364:                                              ; preds = %360
  store i32 44, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #3
  br label %390

365:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #3
  %366 = load i32, ptr %65, align 4, !tbaa !9
  %367 = sub nsw i32 %366, 1
  store i32 %367, ptr %93, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %383, %365
  %369 = load i32, ptr %93, align 4, !tbaa !9
  %370 = load i32, ptr %66, align 4, !tbaa !9
  %371 = add nsw i32 %370, 1
  %372 = icmp sle i32 %369, %371
  br i1 %372, label %374, label %373

373:                                              ; preds = %368
  store i32 47, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #3
  br label %386

374:                                              ; preds = %368
  %375 = load i32, ptr %93, align 4, !tbaa !9
  %376 = load i32, ptr %92, align 4, !tbaa !9
  %377 = load i32, ptr %69, align 4, !tbaa !9
  %378 = load ptr, ptr %50, align 8, !tbaa !5
  %379 = load ptr, ptr %44, align 8, !tbaa !5
  %380 = load ptr, ptr %42, align 8, !tbaa !5
  %381 = load ptr, ptr %52, align 8, !tbaa !5
  %382 = load double, ptr %76, align 8, !tbaa !11
  call void @_Z17bc_flather_v_codeiiiPdS_S_Pid(i32 noundef %375, i32 noundef %376, i32 noundef %377, ptr noundef %378, ptr noundef %379, ptr noundef %380, ptr noundef %381, double noundef %382)
  br label %383

383:                                              ; preds = %374
  %384 = load i32, ptr %93, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %93, align 4, !tbaa !9
  br label %368, !llvm.loop !28

386:                                              ; preds = %373
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %92, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %92, align 4, !tbaa !9
  br label %360, !llvm.loop !29

390:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #3
  %391 = load i32, ptr %67, align 4, !tbaa !9
  %392 = sub nsw i32 %391, 1
  store i32 %392, ptr %94, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %445, %390
  %394 = load i32, ptr %94, align 4, !tbaa !9
  %395 = load i32, ptr %68, align 4, !tbaa !9
  %396 = add nsw i32 %395, 1
  %397 = icmp slt i32 %394, %396
  br i1 %397, label %399, label %398

398:                                              ; preds = %393
  store i32 50, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #3
  br label %448

399:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #3
  %400 = load i32, ptr %65, align 4, !tbaa !9
  %401 = sub nsw i32 %400, 1
  store i32 %401, ptr %95, align 4, !tbaa !9
  br label %402

402:                                              ; preds = %441, %399
  %403 = load i32, ptr %95, align 4, !tbaa !9
  %404 = load i32, ptr %66, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  %406 = icmp sle i32 %403, %405
  br i1 %406, label %408, label %407

407:                                              ; preds = %402
  store i32 53, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #3
  br label %444

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

441:                                              ; preds = %408
  %442 = load i32, ptr %95, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %95, align 4, !tbaa !9
  br label %402, !llvm.loop !30

444:                                              ; preds = %407
  br label %445

445:                                              ; preds = %444
  %446 = load i32, ptr %94, align 4, !tbaa !9
  %447 = add nsw i32 %446, 1
  store i32 %447, ptr %94, align 4, !tbaa !9
  br label %393, !llvm.loop !31

448:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #3
  %449 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %449, ptr %97, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %476, %448
  %451 = load i32, ptr %97, align 4, !tbaa !9
  %452 = load i32, ptr %68, align 4, !tbaa !9
  %453 = icmp sle i32 %451, %452
  br i1 %453, label %455, label %454

454:                                              ; preds = %450
  store i32 56, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #3
  br label %479

455:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #3
  %456 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %456, ptr %98, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %472, %455
  %458 = load i32, ptr %98, align 4, !tbaa !9
  %459 = load i32, ptr %66, align 4, !tbaa !9
  %460 = sub nsw i32 %459, 1
  %461 = icmp sle i32 %458, %460
  br i1 %461, label %463, label %462

462:                                              ; preds = %457
  store i32 59, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #3
  br label %475

463:                                              ; preds = %457
  %464 = load i32, ptr %98, align 4, !tbaa !9
  %465 = load i32, ptr %97, align 4, !tbaa !9
  %466 = load i32, ptr %69, align 4, !tbaa !9
  %467 = load ptr, ptr %41, align 8, !tbaa !5
  %468 = load ptr, ptr %40, align 8, !tbaa !5
  %469 = load ptr, ptr %52, align 8, !tbaa !5
  %470 = load ptr, ptr %53, align 8, !tbaa !5
  %471 = load ptr, ptr %54, align 8, !tbaa !5
  call void @_Z14next_sshu_codeiiiPdPKdPKiS1_S1_(i32 noundef %464, i32 noundef %465, i32 noundef %466, ptr noundef %467, ptr noundef %468, ptr noundef %469, ptr noundef %470, ptr noundef %471)
  br label %472

472:                                              ; preds = %463
  %473 = load i32, ptr %98, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %98, align 4, !tbaa !9
  br label %457, !llvm.loop !32

475:                                              ; preds = %462
  br label %476

476:                                              ; preds = %475
  %477 = load i32, ptr %97, align 4, !tbaa !9
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %97, align 4, !tbaa !9
  br label %450, !llvm.loop !33

479:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #3
  %480 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %480, ptr %99, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %507, %479
  %482 = load i32, ptr %99, align 4, !tbaa !9
  %483 = load i32, ptr %68, align 4, !tbaa !9
  %484 = sub nsw i32 %483, 1
  %485 = icmp sle i32 %482, %484
  br i1 %485, label %487, label %486

486:                                              ; preds = %481
  store i32 62, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #3
  br label %510

487:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #3
  %488 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %488, ptr %100, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %503, %487
  %490 = load i32, ptr %100, align 4, !tbaa !9
  %491 = load i32, ptr %66, align 4, !tbaa !9
  %492 = icmp sle i32 %490, %491
  br i1 %492, label %494, label %493

493:                                              ; preds = %489
  store i32 65, ptr %78, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #3
  br label %506

494:                                              ; preds = %489
  %495 = load i32, ptr %100, align 4, !tbaa !9
  %496 = load i32, ptr %99, align 4, !tbaa !9
  %497 = load i32, ptr %69, align 4, !tbaa !9
  %498 = load ptr, ptr %42, align 8, !tbaa !5
  %499 = load ptr, ptr %40, align 8, !tbaa !5
  %500 = load ptr, ptr %52, align 8, !tbaa !5
  %501 = load ptr, ptr %53, align 8, !tbaa !5
  %502 = load ptr, ptr %55, align 8, !tbaa !5
  call void @_Z14next_sshv_codeiiiPdS_PiS_S_(i32 noundef %495, i32 noundef %496, i32 noundef %497, ptr noundef %498, ptr noundef %499, ptr noundef %500, ptr noundef %501, ptr noundef %502)
  br label %503

503:                                              ; preds = %494
  %504 = load i32, ptr %100, align 4, !tbaa !9
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %100, align 4, !tbaa !9
  br label %489, !llvm.loop !34

506:                                              ; preds = %493
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %99, align 4, !tbaa !9
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %99, align 4, !tbaa !9
  br label %481, !llvm.loop !35

510:                                              ; preds = %486
  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, i32 noundef %31, double noundef %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36, double noundef %37) local_unnamed_addr #0 {
  %39 = ptrtoint ptr %0 to i64
  %40 = ptrtoint ptr %11 to i64
  %41 = ptrtoint ptr %8 to i64
  %42 = ptrtoint ptr %1 to i64
  %43 = ptrtoint ptr %6 to i64
  %44 = 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 = %38, %._crit_edge
  %.0221280 = phi i32 [ %48, %._crit_edge ], [ %28, %38 ]
  br label %49

.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 [ %47, %._crit_edge283.us ], [ %28, %.preheader275 ]
  br label %45

45:                                               ; preds = %.preheader274.us, %45
  %.0236282.us = phi i32 [ %26, %.preheader274.us ], [ %46, %45 ]
  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 %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36, double noundef %37)
  %46 = add i32 %.0236282.us, 1
  %exitcond362.not = icmp eq i32 %46, %27
  br i1 %exitcond362.not, label %._crit_edge283.us, label %45, !llvm.loop !5

._crit_edge283.us:                                ; preds = %45
  %47 = 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 = %49
  %48 = add i32 %.0221280, 1
  %exitcond361.not = icmp eq i32 %.0221280, %29
  br i1 %exitcond361.not, label %.preheader275, label %.preheader276, !llvm.loop !8

49:                                               ; preds = %.preheader276, %49
  %.0238278 = phi i32 [ %26, %.preheader276 ], [ %50, %49 ]
  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 %32, ptr noundef %14)
  %50 = add i32 %.0238278, 1
  %exitcond.not = icmp eq i32 %.0238278, %27
  br i1 %exitcond.not, label %._crit_edge, label %49, !llvm.loop !9

.preheader273:                                    ; preds = %._crit_edge283.us, %38, %.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 [ %51, %._crit_edge288 ], [ %28, %.preheader273 ]
  br label %52

.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 = %52
  %51 = add i32 %.0235290, 1
  %exitcond365.not = icmp eq i32 %51, %29
  br i1 %exitcond365.not, label %.preheader271, label %.preheader272, !llvm.loop !10

52:                                               ; preds = %.preheader272, %52
  %.0234287 = phi i32 [ %26, %.preheader272 ], [ %53, %52 ]
  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 %32, double noundef %33, double noundef %34, double noundef %35, double noundef %36, double noundef %37)
  %53 = add i32 %.0234287, 1
  %exitcond364.not = icmp eq i32 %.0234287, %27
  br i1 %exitcond364.not, label %._crit_edge288, label %52, !llvm.loop !11

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

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

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

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

58:                                               ; preds = %.preheader270, %58
  %.0232292 = phi i32 [ %26, %.preheader270 ], [ %59, %58 ]
  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 %32)
  %59 = add i32 %.0232292, 1
  %exitcond366.not = icmp eq i32 %.0232292, %27
  br i1 %exitcond366.not, label %._crit_edge293, label %58, !llvm.loop !13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72:                                               ; preds = %.lr.ph316, %72
  %.0226314 = phi i32 [ %65, %.lr.ph316 ], [ %73, %72 ]
  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 %37)
  %73 = add i32 %.0226314, 1
  %exitcond370.not = icmp eq i32 %.0226314, %27
  br i1 %exitcond370.not, label %._crit_edge317, label %72, !llvm.loop !19

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

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

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

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

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

98:                                               ; preds = %.lr.ph324, %98
  %.0224322 = phi i32 [ %69, %.lr.ph324 ], [ %99, %98 ]
  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 %37)
  %99 = add nsw i32 %.0224322, 1
  %.not255 = icmp sgt i32 %.0224322, %27
  br i1 %.not255, label %._crit_edge325, label %98, !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 [ %102, %._crit_edge340.us ], [ %28, %.preheader265 ]
  br label %100

100:                                              ; preds = %.preheader264.us, %100
  %.0219338.us = phi i32 [ %26, %.preheader264.us ], [ %101, %100 ]
  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)
  %101 = add i32 %.0219338.us, 1
  %exitcond379.not = icmp eq i32 %101, %27
  br i1 %exitcond379.not, label %._crit_edge340.us, label %100, !llvm.loop !22

._crit_edge340.us:                                ; preds = %100
  %102 = 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 [ %78, %.lr.ph332.preheader ], [ %indvars.iv.next375, %._crit_edge333 ]
  %103 = mul nsw i64 %indvars.iv374, %79
  %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 [ %76, %.lr.ph332 ], [ %ind.end, %middle.block ]
  %104 = trunc i64 %indvars.iv.ph to i32
  %105 = sub i32 %27, %104
  %xtraiter = and i32 %105, 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
  %106 = add nsw i64 %indvars.iv.ph, %103
  %107 = getelementptr inbounds double, ptr %8, i64 %106
  %108 = load double, ptr %107, align 8, !tbaa !24
  %109 = getelementptr inbounds double, ptr %6, i64 %106
  store double %108, ptr %109, align 8, !tbaa !24
  %110 = getelementptr inbounds double, ptr %11, i64 %106
  %111 = load double, ptr %110, align 8, !tbaa !24
  %112 = getelementptr inbounds double, ptr %7, i64 %106
  store double %111, ptr %112, align 8, !tbaa !24
  %113 = getelementptr inbounds double, ptr %0, i64 %106
  %114 = load double, ptr %113, align 8, !tbaa !24
  %115 = getelementptr inbounds double, ptr %1, i64 %106
  store double %114, ptr %115, 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 ]
  %116 = icmp eq i32 %96, %104
  br i1 %116, 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, %76
  %117 = add nsw i64 %offset.idx, %103
  %118 = getelementptr inbounds double, ptr %8, i64 %117
  %119 = getelementptr inbounds i8, ptr %118, i64 16
  %wide.load = load <2 x double>, ptr %118, align 8, !tbaa !24
  %wide.load413 = load <2 x double>, ptr %119, align 8, !tbaa !24
  %120 = getelementptr inbounds double, ptr %6, i64 %117
  %121 = getelementptr inbounds i8, ptr %120, i64 16
  store <2 x double> %wide.load, ptr %120, align 8, !tbaa !24
  store <2 x double> %wide.load413, ptr %121, align 8, !tbaa !24
  %122 = getelementptr inbounds double, ptr %11, i64 %117
  %123 = getelementptr inbounds i8, ptr %122, i64 16
  %wide.load414 = load <2 x double>, ptr %122, align 8, !tbaa !24
  %wide.load415 = load <2 x double>, ptr %123, align 8, !tbaa !24
  %124 = getelementptr inbounds double, ptr %7, i64 %117
  %125 = getelementptr inbounds i8, ptr %124, i64 16
  store <2 x double> %wide.load414, ptr %124, align 8, !tbaa !24
  store <2 x double> %wide.load415, ptr %125, align 8, !tbaa !24
  %126 = getelementptr inbounds double, ptr %0, i64 %117
  %127 = getelementptr inbounds i8, ptr %126, i64 16
  %wide.load416 = load <2 x double>, ptr %126, align 8, !tbaa !24
  %wide.load417 = load <2 x double>, ptr %127, align 8, !tbaa !24
  %128 = getelementptr inbounds double, ptr %1, i64 %117
  %129 = getelementptr inbounds i8, ptr %128, i64 16
  store <2 x double> %wide.load416, ptr %128, align 8, !tbaa !24
  store <2 x double> %wide.load417, ptr %129, align 8, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %130 = icmp eq i64 %index.next, %n.vec
  br i1 %130, 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 %55, %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 ]
  %131 = add nsw i64 %indvars.iv, %103
  %132 = getelementptr inbounds double, ptr %8, i64 %131
  %133 = load double, ptr %132, align 8, !tbaa !24
  %134 = getelementptr inbounds double, ptr %6, i64 %131
  store double %133, ptr %134, align 8, !tbaa !24
  %135 = getelementptr inbounds double, ptr %11, i64 %131
  %136 = load double, ptr %135, align 8, !tbaa !24
  %137 = getelementptr inbounds double, ptr %7, i64 %131
  store double %136, ptr %137, align 8, !tbaa !24
  %138 = getelementptr inbounds double, ptr %0, i64 %131
  %139 = load double, ptr %138, align 8, !tbaa !24
  %140 = getelementptr inbounds double, ptr %1, i64 %131
  store double %139, ptr %140, align 8, !tbaa !24
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %141 = add nsw i64 %indvars.iv.next, %103
  %142 = getelementptr inbounds double, ptr %8, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !24
  %144 = getelementptr inbounds double, ptr %6, i64 %141
  store double %143, ptr %144, align 8, !tbaa !24
  %145 = getelementptr inbounds double, ptr %11, i64 %141
  %146 = load double, ptr %145, align 8, !tbaa !24
  %147 = getelementptr inbounds double, ptr %7, i64 %141
  store double %146, ptr %147, align 8, !tbaa !24
  %148 = getelementptr inbounds double, ptr %0, i64 %141
  %149 = load double, ptr %148, align 8, !tbaa !24
  %150 = getelementptr inbounds double, ptr %1, i64 %141
  store double %149, ptr %150, 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 %77, %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 [ %151, %._crit_edge346 ], [ %28, %.preheader263 ]
  br label %152

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

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

152:                                              ; preds = %.preheader, %152
  %.0344 = phi i32 [ %26, %.preheader ], [ %153, %152 ]
  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)
  %153 = add i32 %.0344, 1
  %exitcond381.not = icmp eq i32 %.0344, %27
  br i1 %exitcond381.not, label %._crit_edge346, label %152, !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