; LLVM IR from OpenDiS/OpenDiS :: core/pydis/c/calforce (SegSegForce_SBN1)

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

@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local double @Shape_Func_N1(double noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local double @Shape_Func_N2(double noundef) #0

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

78:                                               ; preds = %30
  %79 = load ptr, ptr @stderr, align 8, !tbaa !11
  %80 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef @.str, i32 noundef 7) #6
  call void @exit(i32 noundef 1) #7
  unreachable

81:                                               ; preds = %30
  %82 = load double, ptr %40, align 8, !tbaa !5
  %83 = load double, ptr %37, align 8, !tbaa !5
  %84 = fsub double %82, %83
  %85 = fmul double 5.000000e-01, %84
  store double %85, ptr %64, align 8, !tbaa !5
  %86 = load double, ptr %41, align 8, !tbaa !5
  %87 = load double, ptr %38, align 8, !tbaa !5
  %88 = fsub double %86, %87
  %89 = fmul double 5.000000e-01, %88
  store double %89, ptr %65, align 8, !tbaa !5
  %90 = load double, ptr %42, align 8, !tbaa !5
  %91 = load double, ptr %39, align 8, !tbaa !5
  %92 = fsub double %90, %91
  %93 = fmul double 5.000000e-01, %92
  store double %93, ptr %66, align 8, !tbaa !5
  %94 = load double, ptr %40, align 8, !tbaa !5
  %95 = load double, ptr %37, align 8, !tbaa !5
  %96 = fadd double %94, %95
  %97 = fmul double 5.000000e-01, %96
  store double %97, ptr %67, align 8, !tbaa !5
  %98 = load double, ptr %41, align 8, !tbaa !5
  %99 = load double, ptr %38, align 8, !tbaa !5
  %100 = fadd double %98, %99
  %101 = fmul double 5.000000e-01, %100
  store double %101, ptr %68, align 8, !tbaa !5
  %102 = load double, ptr %42, align 8, !tbaa !5
  %103 = load double, ptr %39, align 8, !tbaa !5
  %104 = fadd double %102, %103
  %105 = fmul double 5.000000e-01, %104
  store double %105, ptr %69, align 8, !tbaa !5
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %129, %81
  %107 = load i32, ptr %61, align 4, !tbaa !9
  %108 = load i32, ptr %52, align 4, !tbaa !9
  %109 = icmp slt i32 %107, %108
  br i1 %109, label %110, label %132

110:                                              ; preds = %106
  %111 = load ptr, ptr %53, align 8, !tbaa !11
  %112 = load i32, ptr %61, align 4, !tbaa !9
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %111, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !5
  %116 = call double @Shape_Func_N1(double noundef %115)
  %117 = load i32, ptr %61, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds [7 x double], ptr %62, i64 0, i64 %118
  store double %116, ptr %119, align 8, !tbaa !5
  %120 = load ptr, ptr %53, align 8, !tbaa !11
  %121 = load i32, ptr %61, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %120, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !5
  %125 = call double @Shape_Func_N2(double noundef %124)
  %126 = load i32, ptr %61, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [7 x double], ptr %63, i64 0, i64 %127
  store double %125, ptr %128, align 8, !tbaa !5
  br label %129

129:                                              ; preds = %110
  %130 = load i32, ptr %61, align 4, !tbaa !9
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %61, align 4, !tbaa !9
  br label %106, !llvm.loop !13

132:                                              ; preds = %106
  %133 = load ptr, ptr %55, align 8, !tbaa !11
  store double 0.000000e+00, ptr %133, align 8, !tbaa !5
  %134 = load ptr, ptr %56, align 8, !tbaa !11
  store double 0.000000e+00, ptr %134, align 8, !tbaa !5
  %135 = load ptr, ptr %57, align 8, !tbaa !11
  store double 0.000000e+00, ptr %135, align 8, !tbaa !5
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %397, %132
  %137 = load i32, ptr %61, align 4, !tbaa !9
  %138 = load i32, ptr %52, align 4, !tbaa !9
  %139 = icmp slt i32 %137, %138
  br i1 %139, label %140, label %400

140:                                              ; preds = %136
  %141 = load double, ptr %67, align 8, !tbaa !5
  %142 = load double, ptr %64, align 8, !tbaa !5
  %143 = load ptr, ptr %53, align 8, !tbaa !11
  %144 = load i32, ptr %61, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !5
  %148 = call double @llvm.fmuladd.f64(double %142, double %147, double %141)
  store double %148, ptr %70, align 8, !tbaa !5
  %149 = load double, ptr %68, align 8, !tbaa !5
  %150 = load double, ptr %65, align 8, !tbaa !5
  %151 = load ptr, ptr %53, align 8, !tbaa !11
  %152 = load i32, ptr %61, align 4, !tbaa !9
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds double, ptr %151, i64 %153
  %155 = load double, ptr %154, align 8, !tbaa !5
  %156 = call double @llvm.fmuladd.f64(double %150, double %155, double %149)
  store double %156, ptr %71, align 8, !tbaa !5
  %157 = load double, ptr %69, align 8, !tbaa !5
  %158 = load double, ptr %66, align 8, !tbaa !5
  %159 = load ptr, ptr %53, align 8, !tbaa !11
  %160 = load i32, ptr %61, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds double, ptr %159, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !5
  %164 = call double @llvm.fmuladd.f64(double %158, double %163, double %157)
  store double %164, ptr %72, align 8, !tbaa !5
  %165 = load double, ptr %70, align 8, !tbaa !5
  %166 = load double, ptr %71, align 8, !tbaa !5
  %167 = load double, ptr %72, align 8, !tbaa !5
  %168 = load double, ptr %31, align 8, !tbaa !5
  %169 = load double, ptr %32, align 8, !tbaa !5
  %170 = load double, ptr %33, align 8, !tbaa !5
  %171 = load double, ptr %34, align 8, !tbaa !5
  %172 = load double, ptr %35, align 8, !tbaa !5
  %173 = load double, ptr %36, align 8, !tbaa !5
  %174 = load double, ptr %43, align 8, !tbaa !5
  %175 = load double, ptr %44, align 8, !tbaa !5
  %176 = load double, ptr %45, align 8, !tbaa !5
  %177 = load double, ptr %49, align 8, !tbaa !5
  %178 = load double, ptr %50, align 8, !tbaa !5
  %179 = load double, ptr %51, align 8, !tbaa !5
  %180 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 0
  call void @StressDueToSeg(double noundef %165, double noundef %166, double noundef %167, double noundef %168, double noundef %169, double noundef %170, double noundef %171, double noundef %172, double noundef %173, double noundef %174, double noundef %175, double noundef %176, double noundef %177, double noundef %178, double noundef %179, ptr noundef %180)
  %181 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 0
  %182 = load double, ptr %181, align 16, !tbaa !5
  %183 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %184 = getelementptr inbounds [3 x double], ptr %183, i64 0, i64 0
  store double %182, ptr %184, align 16, !tbaa !5
  %185 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 3
  %186 = load double, ptr %185, align 8, !tbaa !5
  %187 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %188 = getelementptr inbounds [3 x double], ptr %187, i64 0, i64 1
  store double %186, ptr %188, align 8, !tbaa !5
  %189 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 5
  %190 = load double, ptr %189, align 8, !tbaa !5
  %191 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %192 = getelementptr inbounds [3 x double], ptr %191, i64 0, i64 2
  store double %190, ptr %192, align 16, !tbaa !5
  %193 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 3
  %194 = load double, ptr %193, align 8, !tbaa !5
  %195 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %196 = getelementptr inbounds [3 x double], ptr %195, i64 0, i64 0
  store double %194, ptr %196, align 8, !tbaa !5
  %197 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 1
  %198 = load double, ptr %197, align 8, !tbaa !5
  %199 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %200 = getelementptr inbounds [3 x double], ptr %199, i64 0, i64 1
  store double %198, ptr %200, align 8, !tbaa !5
  %201 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 4
  %202 = load double, ptr %201, align 16, !tbaa !5
  %203 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %204 = getelementptr inbounds [3 x double], ptr %203, i64 0, i64 2
  store double %202, ptr %204, align 8, !tbaa !5
  %205 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 5
  %206 = load double, ptr %205, align 8, !tbaa !5
  %207 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %208 = getelementptr inbounds [3 x double], ptr %207, i64 0, i64 0
  store double %206, ptr %208, align 16, !tbaa !5
  %209 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 4
  %210 = load double, ptr %209, align 16, !tbaa !5
  %211 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %212 = getelementptr inbounds [3 x double], ptr %211, i64 0, i64 1
  store double %210, ptr %212, align 8, !tbaa !5
  %213 = getelementptr inbounds [6 x double], ptr %75, i64 0, i64 2
  %214 = load double, ptr %213, align 16, !tbaa !5
  %215 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %216 = getelementptr inbounds [3 x double], ptr %215, i64 0, i64 2
  store double %214, ptr %216, align 16, !tbaa !5
  %217 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %218 = getelementptr inbounds [3 x double], ptr %217, i64 0, i64 0
  %219 = load double, ptr %218, align 16, !tbaa !5
  %220 = load double, ptr %46, align 8, !tbaa !5
  %221 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %222 = getelementptr inbounds [3 x double], ptr %221, i64 0, i64 1
  %223 = load double, ptr %222, align 8, !tbaa !5
  %224 = load double, ptr %47, align 8, !tbaa !5
  %225 = fmul double %223, %224
  %226 = call double @llvm.fmuladd.f64(double %219, double %220, double %225)
  %227 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 0
  %228 = getelementptr inbounds [3 x double], ptr %227, i64 0, i64 2
  %229 = load double, ptr %228, align 16, !tbaa !5
  %230 = load double, ptr %48, align 8, !tbaa !5
  %231 = call double @llvm.fmuladd.f64(double %229, double %230, double %226)
  %232 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 0
  store double %231, ptr %232, align 16, !tbaa !5
  %233 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %234 = getelementptr inbounds [3 x double], ptr %233, i64 0, i64 0
  %235 = load double, ptr %234, align 8, !tbaa !5
  %236 = load double, ptr %46, align 8, !tbaa !5
  %237 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %238 = getelementptr inbounds [3 x double], ptr %237, i64 0, i64 1
  %239 = load double, ptr %238, align 8, !tbaa !5
  %240 = load double, ptr %47, align 8, !tbaa !5
  %241 = fmul double %239, %240
  %242 = call double @llvm.fmuladd.f64(double %235, double %236, double %241)
  %243 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 1
  %244 = getelementptr inbounds [3 x double], ptr %243, i64 0, i64 2
  %245 = load double, ptr %244, align 8, !tbaa !5
  %246 = load double, ptr %48, align 8, !tbaa !5
  %247 = call double @llvm.fmuladd.f64(double %245, double %246, double %242)
  %248 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 1
  store double %247, ptr %248, align 8, !tbaa !5
  %249 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %250 = getelementptr inbounds [3 x double], ptr %249, i64 0, i64 0
  %251 = load double, ptr %250, align 16, !tbaa !5
  %252 = load double, ptr %46, align 8, !tbaa !5
  %253 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %254 = getelementptr inbounds [3 x double], ptr %253, i64 0, i64 1
  %255 = load double, ptr %254, align 8, !tbaa !5
  %256 = load double, ptr %47, align 8, !tbaa !5
  %257 = fmul double %255, %256
  %258 = call double @llvm.fmuladd.f64(double %251, double %252, double %257)
  %259 = getelementptr inbounds [3 x [3 x double]], ptr %73, i64 0, i64 2
  %260 = getelementptr inbounds [3 x double], ptr %259, i64 0, i64 2
  %261 = load double, ptr %260, align 16, !tbaa !5
  %262 = load double, ptr %48, align 8, !tbaa !5
  %263 = call double @llvm.fmuladd.f64(double %261, double %262, double %258)
  %264 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 2
  store double %263, ptr %264, align 16, !tbaa !5
  %265 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 1
  %266 = load double, ptr %265, align 8, !tbaa !5
  %267 = load double, ptr %66, align 8, !tbaa !5
  %268 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 2
  %269 = load double, ptr %268, align 16, !tbaa !5
  %270 = load double, ptr %65, align 8, !tbaa !5
  %271 = fmul double %269, %270
  %272 = fneg double %271
  %273 = call double @llvm.fmuladd.f64(double %266, double %267, double %272)
  %274 = load i32, ptr %61, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [7 x double], ptr %62, i64 0, i64 %275
  %277 = load double, ptr %276, align 8, !tbaa !5
  %278 = fmul double %273, %277
  %279 = load ptr, ptr %54, align 8, !tbaa !11
  %280 = load i32, ptr %61, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds double, ptr %279, i64 %281
  %283 = load double, ptr %282, align 8, !tbaa !5
  %284 = load ptr, ptr %55, align 8, !tbaa !11
  %285 = load double, ptr %284, align 8, !tbaa !5
  %286 = call double @llvm.fmuladd.f64(double %278, double %283, double %285)
  store double %286, ptr %284, align 8, !tbaa !5
  %287 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 2
  %288 = load double, ptr %287, align 16, !tbaa !5
  %289 = load double, ptr %64, align 8, !tbaa !5
  %290 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 0
  %291 = load double, ptr %290, align 16, !tbaa !5
  %292 = load double, ptr %66, align 8, !tbaa !5
  %293 = fmul double %291, %292
  %294 = fneg double %293
  %295 = call double @llvm.fmuladd.f64(double %288, double %289, double %294)
  %296 = load i32, ptr %61, align 4, !tbaa !9
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [7 x double], ptr %62, i64 0, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !5
  %300 = fmul double %295, %299
  %301 = load ptr, ptr %54, align 8, !tbaa !11
  %302 = load i32, ptr %61, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %301, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !5
  %306 = load ptr, ptr %56, align 8, !tbaa !11
  %307 = load double, ptr %306, align 8, !tbaa !5
  %308 = call double @llvm.fmuladd.f64(double %300, double %305, double %307)
  store double %308, ptr %306, align 8, !tbaa !5
  %309 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 0
  %310 = load double, ptr %309, align 16, !tbaa !5
  %311 = load double, ptr %65, align 8, !tbaa !5
  %312 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 1
  %313 = load double, ptr %312, align 8, !tbaa !5
  %314 = load double, ptr %64, align 8, !tbaa !5
  %315 = fmul double %313, %314
  %316 = fneg double %315
  %317 = call double @llvm.fmuladd.f64(double %310, double %311, double %316)
  %318 = load i32, ptr %61, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [7 x double], ptr %62, i64 0, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !5
  %322 = fmul double %317, %321
  %323 = load ptr, ptr %54, align 8, !tbaa !11
  %324 = load i32, ptr %61, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %323, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !5
  %328 = load ptr, ptr %57, align 8, !tbaa !11
  %329 = load double, ptr %328, align 8, !tbaa !5
  %330 = call double @llvm.fmuladd.f64(double %322, double %327, double %329)
  store double %330, ptr %328, align 8, !tbaa !5
  %331 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 1
  %332 = load double, ptr %331, align 8, !tbaa !5
  %333 = load double, ptr %66, align 8, !tbaa !5
  %334 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 2
  %335 = load double, ptr %334, align 16, !tbaa !5
  %336 = load double, ptr %65, align 8, !tbaa !5
  %337 = fmul double %335, %336
  %338 = fneg double %337
  %339 = call double @llvm.fmuladd.f64(double %332, double %333, double %338)
  %340 = load i32, ptr %61, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [7 x double], ptr %63, i64 0, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !5
  %344 = fmul double %339, %343
  %345 = load ptr, ptr %54, align 8, !tbaa !11
  %346 = load i32, ptr %61, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %345, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !5
  %350 = load ptr, ptr %58, align 8, !tbaa !11
  %351 = load double, ptr %350, align 8, !tbaa !5
  %352 = call double @llvm.fmuladd.f64(double %344, double %349, double %351)
  store double %352, ptr %350, align 8, !tbaa !5
  %353 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 2
  %354 = load double, ptr %353, align 16, !tbaa !5
  %355 = load double, ptr %64, align 8, !tbaa !5
  %356 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 0
  %357 = load double, ptr %356, align 16, !tbaa !5
  %358 = load double, ptr %66, align 8, !tbaa !5
  %359 = fmul double %357, %358
  %360 = fneg double %359
  %361 = call double @llvm.fmuladd.f64(double %354, double %355, double %360)
  %362 = load i32, ptr %61, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds [7 x double], ptr %63, i64 0, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !5
  %366 = fmul double %361, %365
  %367 = load ptr, ptr %54, align 8, !tbaa !11
  %368 = load i32, ptr %61, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %367, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !5
  %372 = load ptr, ptr %59, align 8, !tbaa !11
  %373 = load double, ptr %372, align 8, !tbaa !5
  %374 = call double @llvm.fmuladd.f64(double %366, double %371, double %373)
  store double %374, ptr %372, align 8, !tbaa !5
  %375 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 0
  %376 = load double, ptr %375, align 16, !tbaa !5
  %377 = load double, ptr %65, align 8, !tbaa !5
  %378 = getelementptr inbounds [3 x double], ptr %74, i64 0, i64 1
  %379 = load double, ptr %378, align 8, !tbaa !5
  %380 = load double, ptr %64, align 8, !tbaa !5
  %381 = fmul double %379, %380
  %382 = fneg double %381
  %383 = call double @llvm.fmuladd.f64(double %376, double %377, double %382)
  %384 = load i32, ptr %61, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [7 x double], ptr %63, i64 0, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !5
  %388 = fmul double %383, %387
  %389 = load ptr, ptr %54, align 8, !tbaa !11
  %390 = load i32, ptr %61, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !5
  %394 = load ptr, ptr %60, align 8, !tbaa !11
  %395 = load double, ptr %394, align 8, !tbaa !5
  %396 = call double @llvm.fmuladd.f64(double %388, double %393, double %395)
  store double %396, ptr %394, align 8, !tbaa !5
  br label %397

397:                                              ; preds = %140
  %398 = load i32, ptr %61, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %61, align 4, !tbaa !9
  br label %136, !llvm.loop !15

400:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  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: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #3

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

declare void @StressDueToSeg(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef) #5

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

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

@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local double @Shape_Func_N1(double noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local double @Shape_Func_N2(double noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @SegSegForceHalf_SBN1(double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, double noundef %7, double noundef %8, double noundef %9, double noundef %10, double noundef %11, double noundef %12, double noundef %13, double noundef %14, double noundef %15, double noundef %16, double noundef %17, double noundef %18, double noundef %19, double noundef %20, i32 noundef %21, ptr nocapture noundef readonly %22, ptr nocapture noundef readonly %23, ptr nocapture noundef %24, ptr nocapture noundef %25, ptr nocapture noundef %26, ptr nocapture noundef %27, ptr nocapture noundef %28, ptr nocapture noundef %29) local_unnamed_addr #0 {
  %31 = alloca [7 x double], align 16
  %32 = alloca [7 x double], align 16
  %33 = alloca [6 x double], align 16
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %33) #6
  %34 = icmp sgt i32 %21, 7
  br i1 %34, label %35, label %38

35:                                               ; preds = %30
  %36 = load ptr, ptr @stderr, align 8, !tbaa !5
  %37 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str, i32 noundef 7) #7
  tail call void @exit(i32 noundef 1) #8
  unreachable

38:                                               ; preds = %30
  %39 = fsub double %9, %6
  %40 = fmul double %39, 5.000000e-01
  %41 = fsub double %10, %7
  %42 = fmul double %41, 5.000000e-01
  %43 = fsub double %11, %8
  %44 = fmul double %43, 5.000000e-01
  %45 = fadd double %6, %9
  %46 = fmul double %45, 5.000000e-01
  %47 = fadd double %7, %10
  %48 = fmul double %47, 5.000000e-01
  %49 = fadd double %8, %11
  %50 = fmul double %49, 5.000000e-01
  %51 = icmp sgt i32 %21, 0
  br i1 %51, label %.lr.ph.preheader, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %38
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  br label %._crit_edge115

.lr.ph.preheader:                                 ; preds = %38
  %wide.trip.count = zext nneg i32 %21 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %52 = getelementptr inbounds double, ptr %22, i64 %indvars.iv
  %53 = load double, ptr %52, align 8, !tbaa !9
  %54 = tail call double @Shape_Func_N1(double noundef %53)
  %55 = getelementptr inbounds [7 x double], ptr %31, i64 0, i64 %indvars.iv
  store double %54, ptr %55, align 8, !tbaa !9
  %56 = load double, ptr %52, align 8, !tbaa !9
  %57 = tail call double @Shape_Func_N2(double noundef %56)
  %58 = getelementptr inbounds [7 x double], ptr %32, i64 0, i64 %indvars.iv
  store double %57, ptr %58, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  br i1 %51, label %.lr.ph114, label %._crit_edge115

.lr.ph114:                                        ; preds = %._crit_edge
  %59 = getelementptr inbounds i8, ptr %33, i64 24
  %60 = getelementptr inbounds i8, ptr %33, i64 40
  %61 = getelementptr inbounds i8, ptr %33, i64 8
  %62 = getelementptr inbounds i8, ptr %33, i64 32
  %63 = getelementptr inbounds i8, ptr %33, i64 16
  %wide.trip.count120 = zext nneg i32 %21 to i64
  br label %64

64:                                               ; preds = %.lr.ph114, %64
  %indvars.iv117 = phi i64 [ 0, %.lr.ph114 ], [ %indvars.iv.next118, %64 ]
  %65 = getelementptr inbounds double, ptr %22, i64 %indvars.iv117
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = call double @llvm.fmuladd.f64(double %40, double %66, double %46)
  %68 = call double @llvm.fmuladd.f64(double %42, double %66, double %48)
  %69 = call double @llvm.fmuladd.f64(double %44, double %66, double %50)
  call void @StressDueToSeg(double noundef %67, double noundef %68, double noundef %69, double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %12, double noundef %13, double noundef %14, double noundef %18, double noundef %19, double noundef %20, ptr noundef nonnull %33) #6
  %70 = load double, ptr %33, align 16, !tbaa !9
  %71 = load double, ptr %59, align 8, !tbaa !9
  %72 = load double, ptr %60, align 8, !tbaa !9
  %73 = load double, ptr %61, align 8, !tbaa !9
  %74 = load double, ptr %62, align 16, !tbaa !9
  %75 = load double, ptr %63, align 16, !tbaa !9
  %76 = fmul double %71, %16
  %77 = call double @llvm.fmuladd.f64(double %70, double %15, double %76)
  %78 = call double @llvm.fmuladd.f64(double %72, double %17, double %77)
  %79 = fmul double %73, %16
  %80 = call double @llvm.fmuladd.f64(double %71, double %15, double %79)
  %81 = call double @llvm.fmuladd.f64(double %74, double %17, double %80)
  %82 = fmul double %74, %16
  %83 = call double @llvm.fmuladd.f64(double %72, double %15, double %82)
  %84 = call double @llvm.fmuladd.f64(double %75, double %17, double %83)
  %85 = fneg double %84
  %86 = fmul double %42, %85
  %87 = call double @llvm.fmuladd.f64(double %81, double %44, double %86)
  %88 = getelementptr inbounds [7 x double], ptr %31, i64 0, i64 %indvars.iv117
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fmul double %89, %87
  %91 = getelementptr inbounds double, ptr %23, i64 %indvars.iv117
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = load double, ptr %24, align 8, !tbaa !9
  %94 = call double @llvm.fmuladd.f64(double %90, double %92, double %93)
  store double %94, ptr %24, align 8, !tbaa !9
  %95 = fneg double %78
  %96 = fmul double %44, %95
  %97 = call double @llvm.fmuladd.f64(double %84, double %40, double %96)
  %98 = fmul double %89, %97
  %99 = load double, ptr %91, align 8, !tbaa !9
  %100 = load double, ptr %25, align 8, !tbaa !9
  %101 = call double @llvm.fmuladd.f64(double %98, double %99, double %100)
  store double %101, ptr %25, align 8, !tbaa !9
  %102 = fneg double %81
  %103 = fmul double %40, %102
  %104 = call double @llvm.fmuladd.f64(double %78, double %42, double %103)
  %105 = fmul double %89, %104
  %106 = load double, ptr %91, align 8, !tbaa !9
  %107 = load double, ptr %26, align 8, !tbaa !9
  %108 = call double @llvm.fmuladd.f64(double %105, double %106, double %107)
  store double %108, ptr %26, align 8, !tbaa !9
  %109 = getelementptr inbounds [7 x double], ptr %32, i64 0, i64 %indvars.iv117
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fmul double %87, %110
  %112 = load double, ptr %91, align 8, !tbaa !9
  %113 = load double, ptr %27, align 8, !tbaa !9
  %114 = call double @llvm.fmuladd.f64(double %111, double %112, double %113)
  store double %114, ptr %27, align 8, !tbaa !9
  %115 = fmul double %97, %110
  %116 = load double, ptr %91, align 8, !tbaa !9
  %117 = load double, ptr %28, align 8, !tbaa !9
  %118 = call double @llvm.fmuladd.f64(double %115, double %116, double %117)
  store double %118, ptr %28, align 8, !tbaa !9
  %119 = fmul double %104, %110
  %120 = load double, ptr %91, align 8, !tbaa !9
  %121 = load double, ptr %29, align 8, !tbaa !9
  %122 = call double @llvm.fmuladd.f64(double %119, double %120, double %121)
  store double %122, ptr %29, align 8, !tbaa !9
  %indvars.iv.next118 = add nuw nsw i64 %indvars.iv117, 1
  %exitcond121.not = icmp eq i64 %indvars.iv.next118, %wide.trip.count120
  br i1 %exitcond121.not, label %._crit_edge115, label %64, !llvm.loop !13

._crit_edge115:                                   ; preds = %64, %._crit_edge.thread, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %31) #6
  ret void
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #3

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

declare void @StressDueToSeg(double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef) local_unnamed_addr #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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