; LLVM IR from OpenFAST/openfast :: modules/map/src (jacobian)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.Domain_t = type { %struct.InnerSolveAttributes_t, %struct.OuterSolveAttributes_t, %struct.DomainOptions_t, ptr, i32, %struct.Vessel_t, %struct.list_t, %struct.list_t, %struct.list_t, %struct.list_t, ptr }
%struct.InnerSolveAttributes_t = type { ptr, double, double, double, [2 x double], [2 x double], [4 x double], [2 x double], [2 x double], [2 x double], [2 x double], [2 x double], [2 x double], double, i32, i32, i32, i32, i32, [2 x i32], i32, i32 }
%struct.OuterSolveAttributes_t = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double, double, double, double, double, double, i8, i8, i8, i32, i32, i32 }
%struct.DomainOptions_t = type { ptr, double, double, double, i8, i8, i32 }
%struct.Vessel_t = type { %struct.EulerAngle_t, ptr, ptr, ptr, %struct.Point_t, %struct.Point_t, %struct.Force_t }
%struct.EulerAngle_t = type { %struct.VarType_t, %struct.VarType_t, %struct.VarType_t }
%struct.VarType_t = type { ptr, ptr, double, i8, i8, i32, i32 }
%struct.Point_t = type { %struct.VarType_t, %struct.VarType_t, %struct.VarType_t }
%struct.Force_t = type { %struct.VarType_t, %struct.VarType_t, %struct.VarType_t }
%struct.list_t = type { ptr, ptr, ptr, i32, ptr, i32, i32, i32, ptr, %struct.list_attributes_s }
%struct.list_attributes_s = type { ptr, ptr, ptr, i32, ptr, ptr, ptr }
%struct.MAP_ConstraintStateType = type { ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32 }
%struct.MAP_OtherStateType = type { ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32 }

@.str.2 = external hidden unnamed_addr constant [49 x i8], align 1

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #0

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

declare i32 @line_solve_sequence(ptr noundef, ptr noundef, float noundef, ptr noundef, ptr noundef) #2

declare void @set_universal_error_with_message(ptr noundef, ptr noundef, i32 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: nounwind uwtable
define dso_local i32 @central_difference_jacobian(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #3 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %22 = load ptr, ptr %11, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.Domain_t, ptr %22, i32 0, i32 1
  store ptr %23, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  store i32 3, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %24 = load ptr, ptr %10, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %24, i32 0, i32 10
  %26 = load i32, ptr %25, align 8, !tbaa !13
  store i32 %26, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  store i32 0, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %27

27:                                               ; preds = %76, %6
  %28 = load i32, ptr %19, align 4, !tbaa !9
  %29 = load i32, ptr %18, align 4, !tbaa !9
  %30 = icmp slt i32 %28, %29
  br i1 %30, label %31, label %79

31:                                               ; preds = %27
  %32 = load ptr, ptr %8, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %32, i32 0, i32 21
  %34 = load ptr, ptr %33, align 8, !tbaa !15
  %35 = load i32, ptr %19, align 4, !tbaa !9
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds double, ptr %34, i64 %36
  %38 = load double, ptr %37, align 8, !tbaa !11
  %39 = load ptr, ptr %14, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %39, i32 0, i32 7
  %41 = load ptr, ptr %40, align 8, !tbaa !17
  %42 = load i32, ptr %19, align 4, !tbaa !9
  %43 = mul nsw i32 3, %42
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds double, ptr %41, i64 %44
  store double %38, ptr %45, align 8, !tbaa !11
  %46 = load ptr, ptr %8, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %46, i32 0, i32 23
  %48 = load ptr, ptr %47, align 8, !tbaa !20
  %49 = load i32, ptr %19, align 4, !tbaa !9
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds double, ptr %48, i64 %50
  %52 = load double, ptr %51, align 8, !tbaa !11
  %53 = load ptr, ptr %14, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %53, i32 0, i32 7
  %55 = load ptr, ptr %54, align 8, !tbaa !17
  %56 = load i32, ptr %19, align 4, !tbaa !9
  %57 = mul nsw i32 3, %56
  %58 = add nsw i32 %57, 1
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds double, ptr %55, i64 %59
  store double %52, ptr %60, align 8, !tbaa !11
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %61, i32 0, i32 25
  %63 = load ptr, ptr %62, align 8, !tbaa !21
  %64 = load i32, ptr %19, align 4, !tbaa !9
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds double, ptr %63, i64 %65
  %67 = load double, ptr %66, align 8, !tbaa !11
  %68 = load ptr, ptr %14, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %68, i32 0, i32 7
  %70 = load ptr, ptr %69, align 8, !tbaa !17
  %71 = load i32, ptr %19, align 4, !tbaa !9
  %72 = mul nsw i32 3, %71
  %73 = add nsw i32 %72, 2
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds double, ptr %70, i64 %74
  store double %67, ptr %75, align 8, !tbaa !11
  br label %76

76:                                               ; preds = %31
  %77 = load i32, ptr %19, align 4, !tbaa !9
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr %19, align 4, !tbaa !9
  br label %27, !llvm.loop !22

79:                                               ; preds = %27
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %403, %79
  %81 = load i32, ptr %20, align 4, !tbaa !9
  %82 = load i32, ptr %18, align 4, !tbaa !9
  %83 = icmp slt i32 %81, %82
  br i1 %83, label %84, label %406

84:                                               ; preds = %80
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %399, %84
  %86 = load i32, ptr %19, align 4, !tbaa !9
  %87 = load i32, ptr %18, align 4, !tbaa !9
  %88 = icmp slt i32 %86, %87
  br i1 %88, label %89, label %402

89:                                               ; preds = %85
  %90 = load ptr, ptr %10, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %90, i32 0, i32 5
  %92 = load ptr, ptr %91, align 8, !tbaa !24
  %93 = load i32, ptr %20, align 4, !tbaa !9
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds double, ptr %92, i64 %94
  %96 = load double, ptr %95, align 8, !tbaa !11
  store double %96, ptr %16, align 8, !tbaa !11
  %97 = load ptr, ptr %14, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %97, i32 0, i32 15
  %99 = load double, ptr %98, align 8, !tbaa !25
  %100 = load ptr, ptr %10, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %100, i32 0, i32 5
  %102 = load ptr, ptr %101, align 8, !tbaa !24
  %103 = load i32, ptr %20, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds double, ptr %102, i64 %104
  %106 = load double, ptr %105, align 8, !tbaa !11
  %107 = fadd double %106, %99
  store double %107, ptr %105, align 8, !tbaa !11
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load ptr, ptr %9, align 8, !tbaa !5
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = call i32 @line_solve_sequence(ptr noundef %108, ptr noundef %109, float noundef 0.000000e+00, ptr noundef %110, ptr noundef %111)
  store i32 %112, ptr %15, align 4, !tbaa !9
  %113 = load i32, ptr %15, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %124

115:                                              ; preds = %89
  %116 = load ptr, ptr %12, align 8, !tbaa !5
  %117 = load ptr, ptr %13, align 8, !tbaa !5
  %118 = load i32, ptr %20, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  %120 = load i32, ptr %19, align 4, !tbaa !9
  %121 = mul nsw i32 3, %120
  %122 = load i32, ptr %20, align 4, !tbaa !9
  %123 = mul nsw i32 3, %122
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %116, ptr noundef %117, i32 noundef 78, ptr noundef @.str.2, i32 noundef %119, i32 noundef %121, i32 noundef %123)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

124:                                              ; preds = %89
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %125, i32 0, i32 21
  %127 = load ptr, ptr %126, align 8, !tbaa !15
  %128 = load i32, ptr %19, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds double, ptr %127, i64 %129
  %131 = load double, ptr %130, align 8, !tbaa !11
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %132, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !26
  %135 = load i32, ptr %19, align 4, !tbaa !9
  %136 = mul nsw i32 3, %135
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds ptr, ptr %134, i64 %137
  %139 = load ptr, ptr %138, align 8, !tbaa !5
  %140 = load i32, ptr %20, align 4, !tbaa !9
  %141 = mul nsw i32 3, %140
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %139, i64 %142
  store double %131, ptr %143, align 8, !tbaa !11
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %144, i32 0, i32 23
  %146 = load ptr, ptr %145, align 8, !tbaa !20
  %147 = load i32, ptr %19, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %146, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !11
  %151 = load ptr, ptr %14, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %151, i32 0, i32 4
  %153 = load ptr, ptr %152, align 8, !tbaa !26
  %154 = load i32, ptr %19, align 4, !tbaa !9
  %155 = mul nsw i32 3, %154
  %156 = add nsw i32 %155, 1
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds ptr, ptr %153, i64 %157
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = load i32, ptr %20, align 4, !tbaa !9
  %161 = mul nsw i32 3, %160
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds double, ptr %159, i64 %162
  store double %150, ptr %163, align 8, !tbaa !11
  %164 = load ptr, ptr %8, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %164, i32 0, i32 25
  %166 = load ptr, ptr %165, align 8, !tbaa !21
  %167 = load i32, ptr %19, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %166, i64 %168
  %170 = load double, ptr %169, align 8, !tbaa !11
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %171, i32 0, i32 4
  %173 = load ptr, ptr %172, align 8, !tbaa !26
  %174 = load i32, ptr %19, align 4, !tbaa !9
  %175 = mul nsw i32 3, %174
  %176 = add nsw i32 %175, 2
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds ptr, ptr %173, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !5
  %180 = load i32, ptr %20, align 4, !tbaa !9
  %181 = mul nsw i32 3, %180
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %179, i64 %182
  store double %170, ptr %183, align 8, !tbaa !11
  %184 = load double, ptr %16, align 8, !tbaa !11
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %185, i32 0, i32 5
  %187 = load ptr, ptr %186, align 8, !tbaa !24
  %188 = load i32, ptr %20, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %187, i64 %189
  store double %184, ptr %190, align 8, !tbaa !11
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %191, i32 0, i32 7
  %193 = load ptr, ptr %192, align 8, !tbaa !27
  %194 = load i32, ptr %20, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %193, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !11
  store double %197, ptr %16, align 8, !tbaa !11
  %198 = load ptr, ptr %14, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %198, i32 0, i32 15
  %200 = load double, ptr %199, align 8, !tbaa !25
  %201 = load ptr, ptr %10, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %201, i32 0, i32 7
  %203 = load ptr, ptr %202, align 8, !tbaa !27
  %204 = load i32, ptr %20, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %203, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !11
  %208 = fadd double %207, %200
  store double %208, ptr %206, align 8, !tbaa !11
  %209 = load i32, ptr %15, align 4, !tbaa !9
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %220

211:                                              ; preds = %124
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = load i32, ptr %20, align 4, !tbaa !9
  %215 = add nsw i32 %214, 1
  %216 = load i32, ptr %19, align 4, !tbaa !9
  %217 = mul nsw i32 3, %216
  %218 = load i32, ptr %20, align 4, !tbaa !9
  %219 = mul nsw i32 3, %218
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %212, ptr noundef %213, i32 noundef 78, ptr noundef @.str.2, i32 noundef %215, i32 noundef %217, i32 noundef %219)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

220:                                              ; preds = %124
  %221 = load ptr, ptr %11, align 8, !tbaa !5
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load ptr, ptr %13, align 8, !tbaa !5
  %225 = call i32 @line_solve_sequence(ptr noundef %221, ptr noundef %222, float noundef 0.000000e+00, ptr noundef %223, ptr noundef %224)
  store i32 %225, ptr %15, align 4, !tbaa !9
  %226 = load ptr, ptr %8, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %226, i32 0, i32 21
  %228 = load ptr, ptr %227, align 8, !tbaa !15
  %229 = load i32, ptr %19, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %228, i64 %230
  %232 = load double, ptr %231, align 8, !tbaa !11
  %233 = load ptr, ptr %14, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %233, i32 0, i32 4
  %235 = load ptr, ptr %234, align 8, !tbaa !26
  %236 = load i32, ptr %19, align 4, !tbaa !9
  %237 = mul nsw i32 3, %236
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds ptr, ptr %235, i64 %238
  %240 = load ptr, ptr %239, align 8, !tbaa !5
  %241 = load i32, ptr %20, align 4, !tbaa !9
  %242 = mul nsw i32 3, %241
  %243 = add nsw i32 %242, 1
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %240, i64 %244
  store double %232, ptr %245, align 8, !tbaa !11
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %246, i32 0, i32 23
  %248 = load ptr, ptr %247, align 8, !tbaa !20
  %249 = load i32, ptr %19, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %248, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !11
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %253, i32 0, i32 4
  %255 = load ptr, ptr %254, align 8, !tbaa !26
  %256 = load i32, ptr %19, align 4, !tbaa !9
  %257 = mul nsw i32 3, %256
  %258 = add nsw i32 %257, 1
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds ptr, ptr %255, i64 %259
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = load i32, ptr %20, align 4, !tbaa !9
  %263 = mul nsw i32 3, %262
  %264 = add nsw i32 %263, 1
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %261, i64 %265
  store double %252, ptr %266, align 8, !tbaa !11
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %267, i32 0, i32 25
  %269 = load ptr, ptr %268, align 8, !tbaa !21
  %270 = load i32, ptr %19, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %269, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %274, i32 0, i32 4
  %276 = load ptr, ptr %275, align 8, !tbaa !26
  %277 = load i32, ptr %19, align 4, !tbaa !9
  %278 = mul nsw i32 3, %277
  %279 = add nsw i32 %278, 2
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds ptr, ptr %276, i64 %280
  %282 = load ptr, ptr %281, align 8, !tbaa !5
  %283 = load i32, ptr %20, align 4, !tbaa !9
  %284 = mul nsw i32 3, %283
  %285 = add nsw i32 %284, 1
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %282, i64 %286
  store double %273, ptr %287, align 8, !tbaa !11
  %288 = load double, ptr %16, align 8, !tbaa !11
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %289, i32 0, i32 7
  %291 = load ptr, ptr %290, align 8, !tbaa !27
  %292 = load i32, ptr %20, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  store double %288, ptr %294, align 8, !tbaa !11
  %295 = load ptr, ptr %10, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %295, i32 0, i32 9
  %297 = load ptr, ptr %296, align 8, !tbaa !28
  %298 = load i32, ptr %20, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  store double %301, ptr %16, align 8, !tbaa !11
  %302 = load ptr, ptr %14, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %302, i32 0, i32 15
  %304 = load double, ptr %303, align 8, !tbaa !25
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %305, i32 0, i32 9
  %307 = load ptr, ptr %306, align 8, !tbaa !28
  %308 = load i32, ptr %20, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = fadd double %311, %304
  store double %312, ptr %310, align 8, !tbaa !11
  %313 = load i32, ptr %15, align 4, !tbaa !9
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %324

315:                                              ; preds = %220
  %316 = load ptr, ptr %12, align 8, !tbaa !5
  %317 = load ptr, ptr %13, align 8, !tbaa !5
  %318 = load i32, ptr %20, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  %320 = load i32, ptr %19, align 4, !tbaa !9
  %321 = mul nsw i32 3, %320
  %322 = load i32, ptr %20, align 4, !tbaa !9
  %323 = mul nsw i32 3, %322
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %316, ptr noundef %317, i32 noundef 78, ptr noundef @.str.2, i32 noundef %319, i32 noundef %321, i32 noundef %323)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

324:                                              ; preds = %220
  %325 = load ptr, ptr %11, align 8, !tbaa !5
  %326 = load ptr, ptr %9, align 8, !tbaa !5
  %327 = load ptr, ptr %12, align 8, !tbaa !5
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = call i32 @line_solve_sequence(ptr noundef %325, ptr noundef %326, float noundef 0.000000e+00, ptr noundef %327, ptr noundef %328)
  store i32 %329, ptr %15, align 4, !tbaa !9
  %330 = load ptr, ptr %8, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %330, i32 0, i32 21
  %332 = load ptr, ptr %331, align 8, !tbaa !15
  %333 = load i32, ptr %19, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %332, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %337, i32 0, i32 4
  %339 = load ptr, ptr %338, align 8, !tbaa !26
  %340 = load i32, ptr %19, align 4, !tbaa !9
  %341 = mul nsw i32 3, %340
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds ptr, ptr %339, i64 %342
  %344 = load ptr, ptr %343, align 8, !tbaa !5
  %345 = load i32, ptr %20, align 4, !tbaa !9
  %346 = mul nsw i32 3, %345
  %347 = add nsw i32 %346, 2
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds double, ptr %344, i64 %348
  store double %336, ptr %349, align 8, !tbaa !11
  %350 = load ptr, ptr %8, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %350, i32 0, i32 23
  %352 = load ptr, ptr %351, align 8, !tbaa !20
  %353 = load i32, ptr %19, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %352, i64 %354
  %356 = load double, ptr %355, align 8, !tbaa !11
  %357 = load ptr, ptr %14, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %357, i32 0, i32 4
  %359 = load ptr, ptr %358, align 8, !tbaa !26
  %360 = load i32, ptr %19, align 4, !tbaa !9
  %361 = mul nsw i32 3, %360
  %362 = add nsw i32 %361, 1
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds ptr, ptr %359, i64 %363
  %365 = load ptr, ptr %364, align 8, !tbaa !5
  %366 = load i32, ptr %20, align 4, !tbaa !9
  %367 = mul nsw i32 3, %366
  %368 = add nsw i32 %367, 2
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %365, i64 %369
  store double %356, ptr %370, align 8, !tbaa !11
  %371 = load ptr, ptr %8, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %371, i32 0, i32 25
  %373 = load ptr, ptr %372, align 8, !tbaa !21
  %374 = load i32, ptr %19, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %373, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  %378 = load ptr, ptr %14, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %378, i32 0, i32 4
  %380 = load ptr, ptr %379, align 8, !tbaa !26
  %381 = load i32, ptr %19, align 4, !tbaa !9
  %382 = mul nsw i32 3, %381
  %383 = add nsw i32 %382, 2
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds ptr, ptr %380, i64 %384
  %386 = load ptr, ptr %385, align 8, !tbaa !5
  %387 = load i32, ptr %20, align 4, !tbaa !9
  %388 = mul nsw i32 3, %387
  %389 = add nsw i32 %388, 2
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds double, ptr %386, i64 %390
  store double %377, ptr %391, align 8, !tbaa !11
  %392 = load double, ptr %16, align 8, !tbaa !11
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %393, i32 0, i32 9
  %395 = load ptr, ptr %394, align 8, !tbaa !28
  %396 = load i32, ptr %20, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds double, ptr %395, i64 %397
  store double %392, ptr %398, align 8, !tbaa !11
  br label %399

399:                                              ; preds = %324
  %400 = load i32, ptr %19, align 4, !tbaa !9
  %401 = add nsw i32 %400, 1
  store i32 %401, ptr %19, align 4, !tbaa !9
  br label %85, !llvm.loop !29

402:                                              ; preds = %85
  br label %403

403:                                              ; preds = %402
  %404 = load i32, ptr %20, align 4, !tbaa !9
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %20, align 4, !tbaa !9
  br label %80, !llvm.loop !30

406:                                              ; preds = %80
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %922, %406
  %408 = load i32, ptr %20, align 4, !tbaa !9
  %409 = load i32, ptr %18, align 4, !tbaa !9
  %410 = icmp slt i32 %408, %409
  br i1 %410, label %411, label %925

411:                                              ; preds = %407
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %918, %411
  %413 = load i32, ptr %19, align 4, !tbaa !9
  %414 = load i32, ptr %18, align 4, !tbaa !9
  %415 = icmp slt i32 %413, %414
  br i1 %415, label %416, label %921

416:                                              ; preds = %412
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %417, i32 0, i32 5
  %419 = load ptr, ptr %418, align 8, !tbaa !24
  %420 = load i32, ptr %20, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !11
  store double %423, ptr %16, align 8, !tbaa !11
  %424 = load ptr, ptr %14, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %424, i32 0, i32 15
  %426 = load double, ptr %425, align 8, !tbaa !25
  %427 = load ptr, ptr %10, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %427, i32 0, i32 5
  %429 = load ptr, ptr %428, align 8, !tbaa !24
  %430 = load i32, ptr %20, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %429, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !11
  %434 = fsub double %433, %426
  store double %434, ptr %432, align 8, !tbaa !11
  %435 = load i32, ptr %15, align 4, !tbaa !9
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %446

437:                                              ; preds = %416
  %438 = load ptr, ptr %12, align 8, !tbaa !5
  %439 = load ptr, ptr %13, align 8, !tbaa !5
  %440 = load i32, ptr %20, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  %442 = load i32, ptr %19, align 4, !tbaa !9
  %443 = mul nsw i32 3, %442
  %444 = load i32, ptr %20, align 4, !tbaa !9
  %445 = mul nsw i32 3, %444
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %438, ptr noundef %439, i32 noundef 78, ptr noundef @.str.2, i32 noundef %441, i32 noundef %443, i32 noundef %445)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

446:                                              ; preds = %416
  %447 = load ptr, ptr %11, align 8, !tbaa !5
  %448 = load ptr, ptr %9, align 8, !tbaa !5
  %449 = load ptr, ptr %12, align 8, !tbaa !5
  %450 = load ptr, ptr %13, align 8, !tbaa !5
  %451 = call i32 @line_solve_sequence(ptr noundef %447, ptr noundef %448, float noundef 0.000000e+00, ptr noundef %449, ptr noundef %450)
  store i32 %451, ptr %15, align 4, !tbaa !9
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %452, i32 0, i32 21
  %454 = load ptr, ptr %453, align 8, !tbaa !15
  %455 = load i32, ptr %19, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %454, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !11
  %459 = load ptr, ptr %14, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %459, i32 0, i32 4
  %461 = load ptr, ptr %460, align 8, !tbaa !26
  %462 = load i32, ptr %19, align 4, !tbaa !9
  %463 = mul nsw i32 3, %462
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds ptr, ptr %461, i64 %464
  %466 = load ptr, ptr %465, align 8, !tbaa !5
  %467 = load i32, ptr %20, align 4, !tbaa !9
  %468 = mul nsw i32 3, %467
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %466, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !11
  %472 = fsub double %471, %458
  store double %472, ptr %470, align 8, !tbaa !11
  %473 = load ptr, ptr %14, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %473, i32 0, i32 15
  %475 = load double, ptr %474, align 8, !tbaa !25
  %476 = fmul double 2.000000e+00, %475
  %477 = load ptr, ptr %14, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %477, i32 0, i32 4
  %479 = load ptr, ptr %478, align 8, !tbaa !26
  %480 = load i32, ptr %19, align 4, !tbaa !9
  %481 = mul nsw i32 3, %480
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds ptr, ptr %479, i64 %482
  %484 = load ptr, ptr %483, align 8, !tbaa !5
  %485 = load i32, ptr %20, align 4, !tbaa !9
  %486 = mul nsw i32 3, %485
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %484, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !11
  %490 = fdiv double %489, %476
  store double %490, ptr %488, align 8, !tbaa !11
  %491 = load ptr, ptr %8, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %491, i32 0, i32 23
  %493 = load ptr, ptr %492, align 8, !tbaa !20
  %494 = load i32, ptr %19, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds double, ptr %493, i64 %495
  %497 = load double, ptr %496, align 8, !tbaa !11
  %498 = load ptr, ptr %14, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %498, i32 0, i32 4
  %500 = load ptr, ptr %499, align 8, !tbaa !26
  %501 = load i32, ptr %19, align 4, !tbaa !9
  %502 = mul nsw i32 3, %501
  %503 = add nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds ptr, ptr %500, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !5
  %507 = load i32, ptr %20, align 4, !tbaa !9
  %508 = mul nsw i32 3, %507
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %506, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = fsub double %511, %497
  store double %512, ptr %510, align 8, !tbaa !11
  %513 = load ptr, ptr %14, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %513, i32 0, i32 15
  %515 = load double, ptr %514, align 8, !tbaa !25
  %516 = fmul double 2.000000e+00, %515
  %517 = load ptr, ptr %14, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %517, i32 0, i32 4
  %519 = load ptr, ptr %518, align 8, !tbaa !26
  %520 = load i32, ptr %19, align 4, !tbaa !9
  %521 = mul nsw i32 3, %520
  %522 = add nsw i32 %521, 1
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds ptr, ptr %519, i64 %523
  %525 = load ptr, ptr %524, align 8, !tbaa !5
  %526 = load i32, ptr %20, align 4, !tbaa !9
  %527 = mul nsw i32 3, %526
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %525, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !11
  %531 = fdiv double %530, %516
  store double %531, ptr %529, align 8, !tbaa !11
  %532 = load ptr, ptr %8, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %532, i32 0, i32 25
  %534 = load ptr, ptr %533, align 8, !tbaa !21
  %535 = load i32, ptr %19, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds double, ptr %534, i64 %536
  %538 = load double, ptr %537, align 8, !tbaa !11
  %539 = load ptr, ptr %14, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %539, i32 0, i32 4
  %541 = load ptr, ptr %540, align 8, !tbaa !26
  %542 = load i32, ptr %19, align 4, !tbaa !9
  %543 = mul nsw i32 3, %542
  %544 = add nsw i32 %543, 2
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds ptr, ptr %541, i64 %545
  %547 = load ptr, ptr %546, align 8, !tbaa !5
  %548 = load i32, ptr %20, align 4, !tbaa !9
  %549 = mul nsw i32 3, %548
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %547, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  %553 = fsub double %552, %538
  store double %553, ptr %551, align 8, !tbaa !11
  %554 = load ptr, ptr %14, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %554, i32 0, i32 15
  %556 = load double, ptr %555, align 8, !tbaa !25
  %557 = fmul double 2.000000e+00, %556
  %558 = load ptr, ptr %14, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %558, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !26
  %561 = load i32, ptr %19, align 4, !tbaa !9
  %562 = mul nsw i32 3, %561
  %563 = add nsw i32 %562, 2
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds ptr, ptr %560, i64 %564
  %566 = load ptr, ptr %565, align 8, !tbaa !5
  %567 = load i32, ptr %20, align 4, !tbaa !9
  %568 = mul nsw i32 3, %567
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %566, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !11
  %572 = fdiv double %571, %557
  store double %572, ptr %570, align 8, !tbaa !11
  %573 = load double, ptr %16, align 8, !tbaa !11
  %574 = load ptr, ptr %10, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %574, i32 0, i32 5
  %576 = load ptr, ptr %575, align 8, !tbaa !24
  %577 = load i32, ptr %20, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %576, i64 %578
  store double %573, ptr %579, align 8, !tbaa !11
  %580 = load ptr, ptr %10, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %580, i32 0, i32 7
  %582 = load ptr, ptr %581, align 8, !tbaa !27
  %583 = load i32, ptr %20, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %582, i64 %584
  %586 = load double, ptr %585, align 8, !tbaa !11
  store double %586, ptr %16, align 8, !tbaa !11
  %587 = load ptr, ptr %14, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %587, i32 0, i32 15
  %589 = load double, ptr %588, align 8, !tbaa !25
  %590 = load ptr, ptr %10, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %590, i32 0, i32 7
  %592 = load ptr, ptr %591, align 8, !tbaa !27
  %593 = load i32, ptr %20, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds double, ptr %592, i64 %594
  %596 = load double, ptr %595, align 8, !tbaa !11
  %597 = fsub double %596, %589
  store double %597, ptr %595, align 8, !tbaa !11
  %598 = load ptr, ptr %11, align 8, !tbaa !5
  %599 = load ptr, ptr %9, align 8, !tbaa !5
  %600 = load ptr, ptr %12, align 8, !tbaa !5
  %601 = load ptr, ptr %13, align 8, !tbaa !5
  %602 = call i32 @line_solve_sequence(ptr noundef %598, ptr noundef %599, float noundef 0.000000e+00, ptr noundef %600, ptr noundef %601)
  store i32 %602, ptr %15, align 4, !tbaa !9
  %603 = load i32, ptr %15, align 4, !tbaa !9
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %614

605:                                              ; preds = %446
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = load ptr, ptr %13, align 8, !tbaa !5
  %608 = load i32, ptr %20, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  %610 = load i32, ptr %19, align 4, !tbaa !9
  %611 = mul nsw i32 3, %610
  %612 = load i32, ptr %20, align 4, !tbaa !9
  %613 = mul nsw i32 3, %612
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %606, ptr noundef %607, i32 noundef 78, ptr noundef @.str.2, i32 noundef %609, i32 noundef %611, i32 noundef %613)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

614:                                              ; preds = %446
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %615, i32 0, i32 21
  %617 = load ptr, ptr %616, align 8, !tbaa !15
  %618 = load i32, ptr %19, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  %622 = load ptr, ptr %14, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %622, i32 0, i32 4
  %624 = load ptr, ptr %623, align 8, !tbaa !26
  %625 = load i32, ptr %19, align 4, !tbaa !9
  %626 = mul nsw i32 3, %625
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds ptr, ptr %624, i64 %627
  %629 = load ptr, ptr %628, align 8, !tbaa !5
  %630 = load i32, ptr %20, align 4, !tbaa !9
  %631 = mul nsw i32 3, %630
  %632 = add nsw i32 %631, 1
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %629, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  %636 = fsub double %635, %621
  store double %636, ptr %634, align 8, !tbaa !11
  %637 = load ptr, ptr %14, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %637, i32 0, i32 15
  %639 = load double, ptr %638, align 8, !tbaa !25
  %640 = fmul double 2.000000e+00, %639
  %641 = load ptr, ptr %14, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %641, i32 0, i32 4
  %643 = load ptr, ptr %642, align 8, !tbaa !26
  %644 = load i32, ptr %19, align 4, !tbaa !9
  %645 = mul nsw i32 3, %644
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds ptr, ptr %643, i64 %646
  %648 = load ptr, ptr %647, align 8, !tbaa !5
  %649 = load i32, ptr %20, align 4, !tbaa !9
  %650 = mul nsw i32 3, %649
  %651 = add nsw i32 %650, 1
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %648, i64 %652
  %654 = load double, ptr %653, align 8, !tbaa !11
  %655 = fdiv double %654, %640
  store double %655, ptr %653, align 8, !tbaa !11
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %656, i32 0, i32 23
  %658 = load ptr, ptr %657, align 8, !tbaa !20
  %659 = load i32, ptr %19, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !26
  %666 = load i32, ptr %19, align 4, !tbaa !9
  %667 = mul nsw i32 3, %666
  %668 = add nsw i32 %667, 1
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds ptr, ptr %665, i64 %669
  %671 = load ptr, ptr %670, align 8, !tbaa !5
  %672 = load i32, ptr %20, align 4, !tbaa !9
  %673 = mul nsw i32 3, %672
  %674 = add nsw i32 %673, 1
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %671, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !11
  %678 = fsub double %677, %662
  store double %678, ptr %676, align 8, !tbaa !11
  %679 = load ptr, ptr %14, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %679, i32 0, i32 15
  %681 = load double, ptr %680, align 8, !tbaa !25
  %682 = fmul double 2.000000e+00, %681
  %683 = load ptr, ptr %14, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %683, i32 0, i32 4
  %685 = load ptr, ptr %684, align 8, !tbaa !26
  %686 = load i32, ptr %19, align 4, !tbaa !9
  %687 = mul nsw i32 3, %686
  %688 = add nsw i32 %687, 1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds ptr, ptr %685, i64 %689
  %691 = load ptr, ptr %690, align 8, !tbaa !5
  %692 = load i32, ptr %20, align 4, !tbaa !9
  %693 = mul nsw i32 3, %692
  %694 = add nsw i32 %693, 1
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds double, ptr %691, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  %698 = fdiv double %697, %682
  store double %698, ptr %696, align 8, !tbaa !11
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %699, i32 0, i32 25
  %701 = load ptr, ptr %700, align 8, !tbaa !21
  %702 = load i32, ptr %19, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %701, i64 %703
  %705 = load double, ptr %704, align 8, !tbaa !11
  %706 = load ptr, ptr %14, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %706, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !26
  %709 = load i32, ptr %19, align 4, !tbaa !9
  %710 = mul nsw i32 3, %709
  %711 = add nsw i32 %710, 2
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds ptr, ptr %708, i64 %712
  %714 = load ptr, ptr %713, align 8, !tbaa !5
  %715 = load i32, ptr %20, align 4, !tbaa !9
  %716 = mul nsw i32 3, %715
  %717 = add nsw i32 %716, 1
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds double, ptr %714, i64 %718
  %720 = load double, ptr %719, align 8, !tbaa !11
  %721 = fsub double %720, %705
  store double %721, ptr %719, align 8, !tbaa !11
  %722 = load ptr, ptr %14, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %722, i32 0, i32 15
  %724 = load double, ptr %723, align 8, !tbaa !25
  %725 = fmul double 2.000000e+00, %724
  %726 = load ptr, ptr %14, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %726, i32 0, i32 4
  %728 = load ptr, ptr %727, align 8, !tbaa !26
  %729 = load i32, ptr %19, align 4, !tbaa !9
  %730 = mul nsw i32 3, %729
  %731 = add nsw i32 %730, 2
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds ptr, ptr %728, i64 %732
  %734 = load ptr, ptr %733, align 8, !tbaa !5
  %735 = load i32, ptr %20, align 4, !tbaa !9
  %736 = mul nsw i32 3, %735
  %737 = add nsw i32 %736, 1
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds double, ptr %734, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !11
  %741 = fdiv double %740, %725
  store double %741, ptr %739, align 8, !tbaa !11
  %742 = load double, ptr %16, align 8, !tbaa !11
  %743 = load ptr, ptr %10, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %743, i32 0, i32 7
  %745 = load ptr, ptr %744, align 8, !tbaa !27
  %746 = load i32, ptr %20, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %745, i64 %747
  store double %742, ptr %748, align 8, !tbaa !11
  %749 = load ptr, ptr %10, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %749, i32 0, i32 9
  %751 = load ptr, ptr %750, align 8, !tbaa !28
  %752 = load i32, ptr %20, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %751, i64 %753
  %755 = load double, ptr %754, align 8, !tbaa !11
  store double %755, ptr %16, align 8, !tbaa !11
  %756 = load ptr, ptr %14, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %756, i32 0, i32 15
  %758 = load double, ptr %757, align 8, !tbaa !25
  %759 = load ptr, ptr %10, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %759, i32 0, i32 9
  %761 = load ptr, ptr %760, align 8, !tbaa !28
  %762 = load i32, ptr %20, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  %765 = load double, ptr %764, align 8, !tbaa !11
  %766 = fsub double %765, %758
  store double %766, ptr %764, align 8, !tbaa !11
  %767 = load ptr, ptr %11, align 8, !tbaa !5
  %768 = load ptr, ptr %9, align 8, !tbaa !5
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = load ptr, ptr %13, align 8, !tbaa !5
  %771 = call i32 @line_solve_sequence(ptr noundef %767, ptr noundef %768, float noundef 0.000000e+00, ptr noundef %769, ptr noundef %770)
  store i32 %771, ptr %15, align 4, !tbaa !9
  %772 = load i32, ptr %15, align 4, !tbaa !9
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %783

774:                                              ; preds = %614
  %775 = load ptr, ptr %12, align 8, !tbaa !5
  %776 = load ptr, ptr %13, align 8, !tbaa !5
  %777 = load i32, ptr %20, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  %779 = load i32, ptr %19, align 4, !tbaa !9
  %780 = mul nsw i32 3, %779
  %781 = load i32, ptr %20, align 4, !tbaa !9
  %782 = mul nsw i32 3, %781
  call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %775, ptr noundef %776, i32 noundef 78, ptr noundef @.str.2, i32 noundef %778, i32 noundef %780, i32 noundef %782)
  store i32 3, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

783:                                              ; preds = %614
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %784, i32 0, i32 21
  %786 = load ptr, ptr %785, align 8, !tbaa !15
  %787 = load i32, ptr %19, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds double, ptr %786, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !11
  %791 = load ptr, ptr %14, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %791, i32 0, i32 4
  %793 = load ptr, ptr %792, align 8, !tbaa !26
  %794 = load i32, ptr %19, align 4, !tbaa !9
  %795 = mul nsw i32 3, %794
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds ptr, ptr %793, i64 %796
  %798 = load ptr, ptr %797, align 8, !tbaa !5
  %799 = load i32, ptr %20, align 4, !tbaa !9
  %800 = mul nsw i32 3, %799
  %801 = add nsw i32 %800, 2
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %798, i64 %802
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = fsub double %804, %790
  store double %805, ptr %803, align 8, !tbaa !11
  %806 = load ptr, ptr %14, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %806, i32 0, i32 15
  %808 = load double, ptr %807, align 8, !tbaa !25
  %809 = fmul double 2.000000e+00, %808
  %810 = load ptr, ptr %14, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %810, i32 0, i32 4
  %812 = load ptr, ptr %811, align 8, !tbaa !26
  %813 = load i32, ptr %19, align 4, !tbaa !9
  %814 = mul nsw i32 3, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds ptr, ptr %812, i64 %815
  %817 = load ptr, ptr %816, align 8, !tbaa !5
  %818 = load i32, ptr %20, align 4, !tbaa !9
  %819 = mul nsw i32 3, %818
  %820 = add nsw i32 %819, 2
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %817, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = fdiv double %823, %809
  store double %824, ptr %822, align 8, !tbaa !11
  %825 = load ptr, ptr %8, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %825, i32 0, i32 23
  %827 = load ptr, ptr %826, align 8, !tbaa !20
  %828 = load i32, ptr %19, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %827, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = load ptr, ptr %14, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %832, i32 0, i32 4
  %834 = load ptr, ptr %833, align 8, !tbaa !26
  %835 = load i32, ptr %19, align 4, !tbaa !9
  %836 = mul nsw i32 3, %835
  %837 = add nsw i32 %836, 1
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds ptr, ptr %834, i64 %838
  %840 = load ptr, ptr %839, align 8, !tbaa !5
  %841 = load i32, ptr %20, align 4, !tbaa !9
  %842 = mul nsw i32 3, %841
  %843 = add nsw i32 %842, 2
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %840, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = fsub double %846, %831
  store double %847, ptr %845, align 8, !tbaa !11
  %848 = load ptr, ptr %14, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %848, i32 0, i32 15
  %850 = load double, ptr %849, align 8, !tbaa !25
  %851 = fmul double 2.000000e+00, %850
  %852 = load ptr, ptr %14, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %852, i32 0, i32 4
  %854 = load ptr, ptr %853, align 8, !tbaa !26
  %855 = load i32, ptr %19, align 4, !tbaa !9
  %856 = mul nsw i32 3, %855
  %857 = add nsw i32 %856, 1
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds ptr, ptr %854, i64 %858
  %860 = load ptr, ptr %859, align 8, !tbaa !5
  %861 = load i32, ptr %20, align 4, !tbaa !9
  %862 = mul nsw i32 3, %861
  %863 = add nsw i32 %862, 2
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %860, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = fdiv double %866, %851
  store double %867, ptr %865, align 8, !tbaa !11
  %868 = load ptr, ptr %8, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.MAP_OtherStateType, ptr %868, i32 0, i32 25
  %870 = load ptr, ptr %869, align 8, !tbaa !21
  %871 = load i32, ptr %19, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %870, i64 %872
  %874 = load double, ptr %873, align 8, !tbaa !11
  %875 = load ptr, ptr %14, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %875, i32 0, i32 4
  %877 = load ptr, ptr %876, align 8, !tbaa !26
  %878 = load i32, ptr %19, align 4, !tbaa !9
  %879 = mul nsw i32 3, %878
  %880 = add nsw i32 %879, 2
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds ptr, ptr %877, i64 %881
  %883 = load ptr, ptr %882, align 8, !tbaa !5
  %884 = load i32, ptr %20, align 4, !tbaa !9
  %885 = mul nsw i32 3, %884
  %886 = add nsw i32 %885, 2
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds double, ptr %883, i64 %887
  %889 = load double, ptr %888, align 8, !tbaa !11
  %890 = fsub double %889, %874
  store double %890, ptr %888, align 8, !tbaa !11
  %891 = load ptr, ptr %14, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %891, i32 0, i32 15
  %893 = load double, ptr %892, align 8, !tbaa !25
  %894 = fmul double 2.000000e+00, %893
  %895 = load ptr, ptr %14, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %895, i32 0, i32 4
  %897 = load ptr, ptr %896, align 8, !tbaa !26
  %898 = load i32, ptr %19, align 4, !tbaa !9
  %899 = mul nsw i32 3, %898
  %900 = add nsw i32 %899, 2
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds ptr, ptr %897, i64 %901
  %903 = load ptr, ptr %902, align 8, !tbaa !5
  %904 = load i32, ptr %20, align 4, !tbaa !9
  %905 = mul nsw i32 3, %904
  %906 = add nsw i32 %905, 2
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %903, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fdiv double %909, %894
  store double %910, ptr %908, align 8, !tbaa !11
  %911 = load double, ptr %16, align 8, !tbaa !11
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.MAP_ConstraintStateType, ptr %912, i32 0, i32 9
  %914 = load ptr, ptr %913, align 8, !tbaa !28
  %915 = load i32, ptr %20, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %914, i64 %916
  store double %911, ptr %917, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %783
  %919 = load i32, ptr %19, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %19, align 4, !tbaa !9
  br label %412, !llvm.loop !31

921:                                              ; preds = %412
  br label %922

922:                                              ; preds = %921
  %923 = load i32, ptr %20, align 4, !tbaa !9
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr %20, align 4, !tbaa !9
  br label %407, !llvm.loop !32

925:                                              ; preds = %407
  %926 = load ptr, ptr %14, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %926, i32 0, i32 19
  %928 = load i8, ptr %927, align 8, !tbaa !33, !range !34, !noundef !35
  %929 = trunc i8 %928 to i1
  br i1 %929, label %930, label %971

930:                                              ; preds = %925
  %931 = load ptr, ptr %14, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %931, i32 0, i32 24
  %933 = load i32, ptr %932, align 4, !tbaa !36
  %934 = sitofp i32 %933 to double
  %935 = call double @pow(double noundef %934, double noundef 1.500000e+00) #4
  %936 = load ptr, ptr %14, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %936, i32 0, i32 18
  store double %935, ptr %937, align 8, !tbaa !37
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %938

938:                                              ; preds = %967, %930
  %939 = load i32, ptr %19, align 4, !tbaa !9
  %940 = load i32, ptr %18, align 4, !tbaa !9
  %941 = mul nsw i32 3, %940
  %942 = icmp slt i32 %939, %941
  br i1 %942, label %943, label %970

943:                                              ; preds = %938
  %944 = load ptr, ptr %14, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %944, i32 0, i32 13
  %946 = load double, ptr %945, align 8, !tbaa !38
  %947 = load ptr, ptr %14, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %947, i32 0, i32 18
  %949 = load double, ptr %948, align 8, !tbaa !37
  %950 = fdiv double %946, %949
  %951 = load ptr, ptr %14, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %951, i32 0, i32 14
  %953 = load double, ptr %952, align 8, !tbaa !39
  %954 = fadd double %950, %953
  %955 = load ptr, ptr %14, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.OuterSolveAttributes_t, ptr %955, i32 0, i32 4
  %957 = load ptr, ptr %956, align 8, !tbaa !26
  %958 = load i32, ptr %19, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds ptr, ptr %957, i64 %959
  %961 = load ptr, ptr %960, align 8, !tbaa !5
  %962 = load i32, ptr %19, align 4, !tbaa !9
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %961, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  %966 = fadd double %965, %954
  store double %966, ptr %964, align 8, !tbaa !11
  br label %967

967:                                              ; preds = %943
  %968 = load i32, ptr %19, align 4, !tbaa !9
  %969 = add nsw i32 %968, 1
  store i32 %969, ptr %19, align 4, !tbaa !9
  br label %938, !llvm.loop !40

970:                                              ; preds = %938
  br label %971

971:                                              ; preds = %970, %925
  store i32 0, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %972

972:                                              ; preds = %971, %774, %605, %437, %315, %211, %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  %973 = load i32, ptr %7, align 4
  ret i32 %973
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !10, i64 80}
!14 = !{!"MAP_ConstraintStateType", !6, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80}
!15 = !{!16, !6, i64 168}
!16 = !{!"MAP_OtherStateType", !6, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !10, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !6, i64 216, !10, i64 224, !6, i64 232, !10, i64 240, !6, i64 248, !10, i64 256}
!17 = !{!18, !6, i64 56}
!18 = !{!"OuterSolveAttributes_t", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !19, i64 152, !19, i64 153, !19, i64 154, !10, i64 156, !10, i64 160, !10, i64 164}
!19 = !{!"_Bool", !7, i64 0}
!20 = !{!16, !6, i64 184}
!21 = !{!16, !6, i64 200}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!14, !6, i64 40}
!25 = !{!18, !12, i64 120}
!26 = !{!18, !6, i64 32}
!27 = !{!14, !6, i64 56}
!28 = !{!14, !6, i64 72}
!29 = distinct !{!29, !23}
!30 = distinct !{!30, !23}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !23}
!33 = !{!18, !19, i64 152}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!18, !10, i64 164}
!37 = !{!18, !12, i64 144}
!38 = !{!18, !12, i64 104}
!39 = !{!18, !12, i64 112}
!40 = distinct !{!40, !23}


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

@.str.2 = external hidden unnamed_addr constant [49 x i8], align 1

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #0

declare i32 @line_solve_sequence(ptr noundef, ptr noundef, float noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @set_universal_error_with_message(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 4) i32 @central_difference_jacobian(ptr nocapture noundef readonly %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #2 {
  %7 = getelementptr inbounds i8, ptr %2, i64 80
  %8 = load i32, ptr %7, align 8, !tbaa !5
  %9 = icmp sgt i32 %8, 0
  br i1 %9, label %.lr.ph, label %._crit_edge331

.lr.ph:                                           ; preds = %6
  %10 = getelementptr inbounds i8, ptr %0, i64 168
  %11 = load ptr, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %3, i64 296
  %13 = load ptr, ptr %12, align 8, !tbaa !13
  %14 = getelementptr inbounds i8, ptr %0, i64 184
  %15 = load ptr, ptr %14, align 8, !tbaa !17
  %16 = getelementptr inbounds i8, ptr %0, i64 200
  %17 = load ptr, ptr %16, align 8, !tbaa !18
  %wide.trip.count = zext nneg i32 %8 to i64
  %min.iters.check = icmp ult i32 %8, 14
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %18 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.ph
  %19 = load double, ptr %18, align 8, !tbaa !19
  %.idx.prol = mul nuw nsw i64 %indvars.iv.ph, 24
  %20 = getelementptr inbounds i8, ptr %13, i64 %.idx.prol
  store double %19, ptr %20, align 8, !tbaa !19
  %21 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.ph
  %22 = load double, ptr %21, align 8, !tbaa !19
  %23 = getelementptr inbounds i8, ptr %20, i64 8
  store double %22, ptr %23, align 8, !tbaa !19
  %24 = getelementptr inbounds double, ptr %17, i64 %indvars.iv.ph
  %25 = load double, ptr %24, align 8, !tbaa !19
  %26 = getelementptr inbounds i8, ptr %20, i64 16
  store double %25, ptr %26, align 8, !tbaa !19
  %indvars.iv.next.prol = or disjoint 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 ]
  %27 = add nsw i64 %wide.trip.count, -1
  %28 = icmp eq i64 %indvars.iv.ph, %27
  br i1 %28, label %.preheader290, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph
  %29 = mul nuw nsw i64 %wide.trip.count, 24
  %scevgep = getelementptr i8, ptr %13, i64 %29
  %30 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep441 = getelementptr i8, ptr %11, i64 %30
  %scevgep442 = getelementptr i8, ptr %15, i64 %30
  %scevgep443 = getelementptr i8, ptr %17, i64 %30
  %bound0 = icmp ult ptr %13, %scevgep441
  %bound1 = icmp ult ptr %11, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0444 = icmp ult ptr %13, %scevgep442
  %bound1445 = icmp ult ptr %15, %scevgep
  %found.conflict446 = and i1 %bound0444, %bound1445
  %conflict.rdx = or i1 %found.conflict, %found.conflict446
  %bound0447 = icmp ult ptr %13, %scevgep443
  %bound1448 = icmp ult ptr %17, %scevgep
  %found.conflict449 = and i1 %bound0447, %bound1448
  %conflict.rdx450 = or i1 %conflict.rdx, %found.conflict449
  br i1 %conflict.rdx450, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483646
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %31 = getelementptr inbounds double, ptr %11, i64 %index
  %wide.load = load <2 x double>, ptr %31, align 8, !tbaa !19, !alias.scope !20
  %32 = mul i64 %index, 24
  %33 = getelementptr inbounds i8, ptr %13, i64 %32
  %34 = getelementptr inbounds double, ptr %15, i64 %index
  %wide.load451 = load <2 x double>, ptr %34, align 8, !tbaa !19, !alias.scope !23
  %35 = getelementptr inbounds double, ptr %17, i64 %index
  %wide.load452 = load <2 x double>, ptr %35, align 8, !tbaa !19, !alias.scope !25
  %36 = shufflevector <2 x double> %wide.load, <2 x double> %wide.load451, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %37 = shufflevector <2 x double> %wide.load452, <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %interleaved.vec = shufflevector <4 x double> %36, <4 x double> %37, <6 x i32> <i32 0, i32 2, i32 4, i32 1, i32 3, i32 5>
  store <6 x double> %interleaved.vec, ptr %33, align 8, !tbaa !19
  %index.next = add nuw i64 %index, 2
  %38 = icmp eq i64 %index.next, %n.vec
  br i1 %38, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.preheader290, label %scalar.ph.preheader

.preheader290:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  br i1 %9, label %.preheader289.lr.ph, label %._crit_edge331

.preheader289.lr.ph:                              ; preds = %.preheader290
  %39 = getelementptr inbounds i8, ptr %2, i64 40
  %40 = getelementptr inbounds i8, ptr %3, i64 360
  %41 = getelementptr inbounds i8, ptr %0, i64 168
  %42 = getelementptr inbounds i8, ptr %3, i64 272
  %43 = getelementptr inbounds i8, ptr %0, i64 184
  %44 = getelementptr inbounds i8, ptr %0, i64 200
  %45 = getelementptr inbounds i8, ptr %2, i64 56
  %46 = getelementptr inbounds i8, ptr %2, i64 72
  %wide.trip.count379 = zext nneg i32 %8 to i64
  br label %.preheader289.us

.preheader289.us:                                 ; preds = %._crit_edge.us, %.preheader289.lr.ph
  %indvars.iv376 = phi i64 [ %indvars.iv.next377, %._crit_edge.us ], [ 0, %.preheader289.lr.ph ]
  %47 = mul nuw nsw i64 %indvars.iv376, 3
  %48 = add nuw nsw i64 %47, 1
  %49 = add nuw nsw i64 %47, 2
  br label %50

50:                                               ; preds = %.preheader289.us, %114
  %indvars.iv371 = phi i64 [ 0, %.preheader289.us ], [ %indvars.iv.next372, %114 ]
  %51 = load ptr, ptr %39, align 8, !tbaa !31
  %52 = getelementptr inbounds double, ptr %51, i64 %indvars.iv376
  %53 = load double, ptr %52, align 8, !tbaa !19
  %54 = load double, ptr %40, align 8, !tbaa !32
  %55 = fadd double %53, %54
  store double %55, ptr %52, align 8, !tbaa !19
  %56 = tail call i32 @line_solve_sequence(ptr noundef %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %.not286.us = icmp eq i32 %56, 0
  br i1 %.not286.us, label %57, label %.split.us

57:                                               ; preds = %50
  %58 = load ptr, ptr %41, align 8, !tbaa !11
  %59 = getelementptr inbounds double, ptr %58, i64 %indvars.iv371
  %60 = load double, ptr %59, align 8, !tbaa !19
  %61 = load ptr, ptr %42, align 8, !tbaa !33
  %62 = mul nuw nsw i64 %indvars.iv371, 3
  %63 = getelementptr inbounds ptr, ptr %61, i64 %62
  %64 = load ptr, ptr %63, align 8, !tbaa !34
  %65 = getelementptr inbounds double, ptr %64, i64 %47
  store double %60, ptr %65, align 8, !tbaa !19
  %66 = load ptr, ptr %43, align 8, !tbaa !17
  %67 = getelementptr inbounds double, ptr %66, i64 %indvars.iv371
  %68 = load double, ptr %67, align 8, !tbaa !19
  %69 = add nuw nsw i64 %62, 1
  %70 = getelementptr inbounds ptr, ptr %61, i64 %69
  %71 = load ptr, ptr %70, align 8, !tbaa !34
  %72 = getelementptr inbounds double, ptr %71, i64 %47
  store double %68, ptr %72, align 8, !tbaa !19
  %73 = load ptr, ptr %44, align 8, !tbaa !18
  %74 = getelementptr inbounds double, ptr %73, i64 %indvars.iv371
  %75 = load double, ptr %74, align 8, !tbaa !19
  %76 = add nuw nsw i64 %62, 2
  %77 = getelementptr inbounds ptr, ptr %61, i64 %76
  %78 = load ptr, ptr %77, align 8, !tbaa !34
  %79 = getelementptr inbounds double, ptr %78, i64 %47
  store double %75, ptr %79, align 8, !tbaa !19
  %80 = load ptr, ptr %39, align 8, !tbaa !31
  %81 = getelementptr inbounds double, ptr %80, i64 %indvars.iv376
  store double %53, ptr %81, align 8, !tbaa !19
  %82 = load ptr, ptr %45, align 8, !tbaa !35
  %83 = getelementptr inbounds double, ptr %82, i64 %indvars.iv376
  %84 = load double, ptr %83, align 8, !tbaa !19
  %85 = load double, ptr %40, align 8, !tbaa !32
  %86 = fadd double %84, %85
  store double %86, ptr %83, align 8, !tbaa !19
  %87 = tail call i32 @line_solve_sequence(ptr noundef nonnull %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %88 = load ptr, ptr %41, align 8, !tbaa !11
  %89 = getelementptr inbounds double, ptr %88, i64 %indvars.iv371
  %90 = load double, ptr %89, align 8, !tbaa !19
  %91 = load ptr, ptr %42, align 8, !tbaa !33
  %92 = getelementptr inbounds ptr, ptr %91, i64 %62
  %93 = load ptr, ptr %92, align 8, !tbaa !34
  %94 = getelementptr inbounds double, ptr %93, i64 %48
  store double %90, ptr %94, align 8, !tbaa !19
  %95 = load ptr, ptr %43, align 8, !tbaa !17
  %96 = getelementptr inbounds double, ptr %95, i64 %indvars.iv371
  %97 = load double, ptr %96, align 8, !tbaa !19
  %98 = getelementptr inbounds ptr, ptr %91, i64 %69
  %99 = load ptr, ptr %98, align 8, !tbaa !34
  %100 = getelementptr inbounds double, ptr %99, i64 %48
  store double %97, ptr %100, align 8, !tbaa !19
  %101 = load ptr, ptr %44, align 8, !tbaa !18
  %102 = getelementptr inbounds double, ptr %101, i64 %indvars.iv371
  %103 = load double, ptr %102, align 8, !tbaa !19
  %104 = getelementptr inbounds ptr, ptr %91, i64 %76
  %105 = load ptr, ptr %104, align 8, !tbaa !34
  %106 = getelementptr inbounds double, ptr %105, i64 %48
  store double %103, ptr %106, align 8, !tbaa !19
  %107 = load ptr, ptr %45, align 8, !tbaa !35
  %108 = getelementptr inbounds double, ptr %107, i64 %indvars.iv376
  store double %84, ptr %108, align 8, !tbaa !19
  %109 = load ptr, ptr %46, align 8, !tbaa !36
  %110 = getelementptr inbounds double, ptr %109, i64 %indvars.iv376
  %111 = load double, ptr %110, align 8, !tbaa !19
  %112 = load double, ptr %40, align 8, !tbaa !32
  %113 = fadd double %111, %112
  store double %113, ptr %110, align 8, !tbaa !19
  %.not287.us = icmp eq i32 %87, 0
  br i1 %.not287.us, label %114, label %.split322.us

114:                                              ; preds = %57
  %115 = tail call i32 @line_solve_sequence(ptr noundef nonnull %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %116 = load ptr, ptr %41, align 8, !tbaa !11
  %117 = getelementptr inbounds double, ptr %116, i64 %indvars.iv371
  %118 = load double, ptr %117, align 8, !tbaa !19
  %119 = load ptr, ptr %42, align 8, !tbaa !33
  %120 = getelementptr inbounds ptr, ptr %119, i64 %62
  %121 = load ptr, ptr %120, align 8, !tbaa !34
  %122 = getelementptr inbounds double, ptr %121, i64 %49
  store double %118, ptr %122, align 8, !tbaa !19
  %123 = load ptr, ptr %43, align 8, !tbaa !17
  %124 = getelementptr inbounds double, ptr %123, i64 %indvars.iv371
  %125 = load double, ptr %124, align 8, !tbaa !19
  %126 = getelementptr inbounds ptr, ptr %119, i64 %69
  %127 = load ptr, ptr %126, align 8, !tbaa !34
  %128 = getelementptr inbounds double, ptr %127, i64 %49
  store double %125, ptr %128, align 8, !tbaa !19
  %129 = load ptr, ptr %44, align 8, !tbaa !18
  %130 = getelementptr inbounds double, ptr %129, i64 %indvars.iv371
  %131 = load double, ptr %130, align 8, !tbaa !19
  %132 = getelementptr inbounds ptr, ptr %119, i64 %76
  %133 = load ptr, ptr %132, align 8, !tbaa !34
  %134 = getelementptr inbounds double, ptr %133, i64 %49
  store double %131, ptr %134, align 8, !tbaa !19
  %135 = load ptr, ptr %46, align 8, !tbaa !36
  %136 = getelementptr inbounds double, ptr %135, i64 %indvars.iv376
  store double %111, ptr %136, align 8, !tbaa !19
  %indvars.iv.next372 = add nuw nsw i64 %indvars.iv371, 1
  %exitcond375.not = icmp eq i64 %indvars.iv.next372, %wide.trip.count379
  br i1 %exitcond375.not, label %._crit_edge.us, label %50, !llvm.loop !37

._crit_edge.us:                                   ; preds = %114
  %indvars.iv.next377 = add nuw nsw i64 %indvars.iv376, 1
  %exitcond380.not = icmp eq i64 %indvars.iv.next377, %wide.trip.count379
  br i1 %exitcond380.not, label %.preheader288, label %.preheader289.us, !llvm.loop !38

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 ]
  %137 = getelementptr inbounds double, ptr %11, i64 %indvars.iv
  %138 = load double, ptr %137, align 8, !tbaa !19
  %.idx = mul i64 %indvars.iv, 24
  %139 = getelementptr inbounds i8, ptr %13, i64 %.idx
  store double %138, ptr %139, align 8, !tbaa !19
  %140 = getelementptr inbounds double, ptr %15, i64 %indvars.iv
  %141 = load double, ptr %140, align 8, !tbaa !19
  %142 = getelementptr inbounds i8, ptr %139, i64 8
  store double %141, ptr %142, align 8, !tbaa !19
  %143 = getelementptr inbounds double, ptr %17, i64 %indvars.iv
  %144 = load double, ptr %143, align 8, !tbaa !19
  %145 = getelementptr inbounds i8, ptr %139, i64 16
  store double %144, ptr %145, align 8, !tbaa !19
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %146 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next
  %147 = load double, ptr %146, align 8, !tbaa !19
  %.idx.1 = mul i64 %indvars.iv.next, 24
  %148 = getelementptr inbounds i8, ptr %13, i64 %.idx.1
  store double %147, ptr %148, align 8, !tbaa !19
  %149 = getelementptr inbounds double, ptr %15, i64 %indvars.iv.next
  %150 = load double, ptr %149, align 8, !tbaa !19
  %151 = getelementptr inbounds i8, ptr %148, i64 8
  store double %150, ptr %151, align 8, !tbaa !19
  %152 = getelementptr inbounds double, ptr %17, i64 %indvars.iv.next
  %153 = load double, ptr %152, align 8, !tbaa !19
  %154 = getelementptr inbounds i8, ptr %148, i64 16
  store double %153, ptr %154, align 8, !tbaa !19
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %.preheader290, label %scalar.ph, !llvm.loop !39

.preheader288:                                    ; preds = %._crit_edge.us
  br i1 %9, label %.preheader.lr.ph, label %._crit_edge331

.preheader.lr.ph:                                 ; preds = %.preheader288
  %155 = getelementptr inbounds i8, ptr %2, i64 40
  %156 = getelementptr inbounds i8, ptr %3, i64 360
  %157 = getelementptr inbounds i8, ptr %0, i64 168
  %158 = getelementptr inbounds i8, ptr %3, i64 272
  %159 = getelementptr inbounds i8, ptr %0, i64 184
  %160 = getelementptr inbounds i8, ptr %0, i64 200
  %161 = getelementptr inbounds i8, ptr %2, i64 56
  %162 = getelementptr inbounds i8, ptr %2, i64 72
  %wide.trip.count389 = zext nneg i32 %8 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge.us332, %.preheader.lr.ph
  %indvars.iv386 = phi i64 [ %indvars.iv.next387, %._crit_edge.us332 ], [ 0, %.preheader.lr.ph ]
  %.2280329.us = phi i32 [ 0, %._crit_edge.us332 ], [ %115, %.preheader.lr.ph ]
  %163 = mul nuw nsw i64 %indvars.iv386, 3
  %164 = add nuw nsw i64 %163, 1
  %165 = add nuw nsw i64 %163, 2
  br label %166

166:                                              ; preds = %.preheader.us, %262
  %indvars.iv381 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next382, %262 ]
  %.3281326.us = phi i32 [ %.2280329.us, %.preheader.us ], [ 0, %262 ]
  %167 = load ptr, ptr %155, align 8, !tbaa !31
  %168 = getelementptr inbounds double, ptr %167, i64 %indvars.iv386
  %169 = load double, ptr %168, align 8, !tbaa !19
  %170 = load double, ptr %156, align 8, !tbaa !32
  %171 = fsub double %169, %170
  store double %171, ptr %168, align 8, !tbaa !19
  %.not.us = icmp eq i32 %.3281326.us, 0
  br i1 %.not.us, label %172, label %.split.us333

172:                                              ; preds = %166
  %173 = tail call i32 @line_solve_sequence(ptr noundef nonnull %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %174 = load ptr, ptr %157, align 8, !tbaa !11
  %175 = getelementptr inbounds double, ptr %174, i64 %indvars.iv381
  %176 = load double, ptr %175, align 8, !tbaa !19
  %177 = load ptr, ptr %158, align 8, !tbaa !33
  %178 = mul nuw nsw i64 %indvars.iv381, 3
  %179 = getelementptr inbounds ptr, ptr %177, i64 %178
  %180 = load ptr, ptr %179, align 8, !tbaa !34
  %181 = getelementptr inbounds double, ptr %180, i64 %163
  %182 = load double, ptr %181, align 8, !tbaa !19
  %183 = fsub double %182, %176
  store double %183, ptr %181, align 8, !tbaa !19
  %184 = load double, ptr %156, align 8, !tbaa !32
  %185 = fmul double %184, 2.000000e+00
  %186 = fdiv double %183, %185
  store double %186, ptr %181, align 8, !tbaa !19
  %187 = load ptr, ptr %159, align 8, !tbaa !17
  %188 = getelementptr inbounds double, ptr %187, i64 %indvars.iv381
  %189 = load double, ptr %188, align 8, !tbaa !19
  %190 = add nuw nsw i64 %178, 1
  %191 = getelementptr inbounds ptr, ptr %177, i64 %190
  %192 = load ptr, ptr %191, align 8, !tbaa !34
  %193 = getelementptr inbounds double, ptr %192, i64 %163
  %194 = load double, ptr %193, align 8, !tbaa !19
  %195 = fsub double %194, %189
  store double %195, ptr %193, align 8, !tbaa !19
  %196 = load double, ptr %156, align 8, !tbaa !32
  %197 = fmul double %196, 2.000000e+00
  %198 = fdiv double %195, %197
  store double %198, ptr %193, align 8, !tbaa !19
  %199 = load ptr, ptr %160, align 8, !tbaa !18
  %200 = getelementptr inbounds double, ptr %199, i64 %indvars.iv381
  %201 = load double, ptr %200, align 8, !tbaa !19
  %202 = add nuw nsw i64 %178, 2
  %203 = getelementptr inbounds ptr, ptr %177, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !34
  %205 = getelementptr inbounds double, ptr %204, i64 %163
  %206 = load double, ptr %205, align 8, !tbaa !19
  %207 = fsub double %206, %201
  store double %207, ptr %205, align 8, !tbaa !19
  %208 = load double, ptr %156, align 8, !tbaa !32
  %209 = fmul double %208, 2.000000e+00
  %210 = fdiv double %207, %209
  store double %210, ptr %205, align 8, !tbaa !19
  %211 = load ptr, ptr %155, align 8, !tbaa !31
  %212 = getelementptr inbounds double, ptr %211, i64 %indvars.iv386
  store double %169, ptr %212, align 8, !tbaa !19
  %213 = load ptr, ptr %161, align 8, !tbaa !35
  %214 = getelementptr inbounds double, ptr %213, i64 %indvars.iv386
  %215 = load double, ptr %214, align 8, !tbaa !19
  %216 = load double, ptr %156, align 8, !tbaa !32
  %217 = fsub double %215, %216
  store double %217, ptr %214, align 8, !tbaa !19
  %218 = tail call i32 @line_solve_sequence(ptr noundef nonnull %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %.not284.us = icmp eq i32 %218, 0
  br i1 %.not284.us, label %219, label %.split337.us

219:                                              ; preds = %172
  %220 = load ptr, ptr %157, align 8, !tbaa !11
  %221 = getelementptr inbounds double, ptr %220, i64 %indvars.iv381
  %222 = load double, ptr %221, align 8, !tbaa !19
  %223 = load ptr, ptr %158, align 8, !tbaa !33
  %224 = getelementptr inbounds ptr, ptr %223, i64 %178
  %225 = load ptr, ptr %224, align 8, !tbaa !34
  %226 = getelementptr inbounds double, ptr %225, i64 %164
  %227 = load double, ptr %226, align 8, !tbaa !19
  %228 = fsub double %227, %222
  store double %228, ptr %226, align 8, !tbaa !19
  %229 = load double, ptr %156, align 8, !tbaa !32
  %230 = fmul double %229, 2.000000e+00
  %231 = fdiv double %228, %230
  store double %231, ptr %226, align 8, !tbaa !19
  %232 = load ptr, ptr %159, align 8, !tbaa !17
  %233 = getelementptr inbounds double, ptr %232, i64 %indvars.iv381
  %234 = load double, ptr %233, align 8, !tbaa !19
  %235 = getelementptr inbounds ptr, ptr %223, i64 %190
  %236 = load ptr, ptr %235, align 8, !tbaa !34
  %237 = getelementptr inbounds double, ptr %236, i64 %164
  %238 = load double, ptr %237, align 8, !tbaa !19
  %239 = fsub double %238, %234
  store double %239, ptr %237, align 8, !tbaa !19
  %240 = load double, ptr %156, align 8, !tbaa !32
  %241 = fmul double %240, 2.000000e+00
  %242 = fdiv double %239, %241
  store double %242, ptr %237, align 8, !tbaa !19
  %243 = load ptr, ptr %160, align 8, !tbaa !18
  %244 = getelementptr inbounds double, ptr %243, i64 %indvars.iv381
  %245 = load double, ptr %244, align 8, !tbaa !19
  %246 = getelementptr inbounds ptr, ptr %223, i64 %202
  %247 = load ptr, ptr %246, align 8, !tbaa !34
  %248 = getelementptr inbounds double, ptr %247, i64 %164
  %249 = load double, ptr %248, align 8, !tbaa !19
  %250 = fsub double %249, %245
  store double %250, ptr %248, align 8, !tbaa !19
  %251 = load double, ptr %156, align 8, !tbaa !32
  %252 = fmul double %251, 2.000000e+00
  %253 = fdiv double %250, %252
  store double %253, ptr %248, align 8, !tbaa !19
  %254 = load ptr, ptr %161, align 8, !tbaa !35
  %255 = getelementptr inbounds double, ptr %254, i64 %indvars.iv386
  store double %215, ptr %255, align 8, !tbaa !19
  %256 = load ptr, ptr %162, align 8, !tbaa !36
  %257 = getelementptr inbounds double, ptr %256, i64 %indvars.iv386
  %258 = load double, ptr %257, align 8, !tbaa !19
  %259 = load double, ptr %156, align 8, !tbaa !32
  %260 = fsub double %258, %259
  store double %260, ptr %257, align 8, !tbaa !19
  %261 = tail call i32 @line_solve_sequence(ptr noundef nonnull %3, ptr noundef %1, float noundef 0.000000e+00, ptr noundef %4, ptr noundef %5) #4
  %.not285.us = icmp eq i32 %261, 0
  br i1 %.not285.us, label %262, label %.split342.us

262:                                              ; preds = %219
  %263 = load ptr, ptr %157, align 8, !tbaa !11
  %264 = getelementptr inbounds double, ptr %263, i64 %indvars.iv381
  %265 = load double, ptr %264, align 8, !tbaa !19
  %266 = load ptr, ptr %158, align 8, !tbaa !33
  %267 = getelementptr inbounds ptr, ptr %266, i64 %178
  %268 = load ptr, ptr %267, align 8, !tbaa !34
  %269 = getelementptr inbounds double, ptr %268, i64 %165
  %270 = load double, ptr %269, align 8, !tbaa !19
  %271 = fsub double %270, %265
  store double %271, ptr %269, align 8, !tbaa !19
  %272 = load double, ptr %156, align 8, !tbaa !32
  %273 = fmul double %272, 2.000000e+00
  %274 = fdiv double %271, %273
  store double %274, ptr %269, align 8, !tbaa !19
  %275 = load ptr, ptr %159, align 8, !tbaa !17
  %276 = getelementptr inbounds double, ptr %275, i64 %indvars.iv381
  %277 = load double, ptr %276, align 8, !tbaa !19
  %278 = getelementptr inbounds ptr, ptr %266, i64 %190
  %279 = load ptr, ptr %278, align 8, !tbaa !34
  %280 = getelementptr inbounds double, ptr %279, i64 %165
  %281 = load double, ptr %280, align 8, !tbaa !19
  %282 = fsub double %281, %277
  store double %282, ptr %280, align 8, !tbaa !19
  %283 = load double, ptr %156, align 8, !tbaa !32
  %284 = fmul double %283, 2.000000e+00
  %285 = fdiv double %282, %284
  store double %285, ptr %280, align 8, !tbaa !19
  %286 = load ptr, ptr %160, align 8, !tbaa !18
  %287 = getelementptr inbounds double, ptr %286, i64 %indvars.iv381
  %288 = load double, ptr %287, align 8, !tbaa !19
  %289 = getelementptr inbounds ptr, ptr %266, i64 %202
  %290 = load ptr, ptr %289, align 8, !tbaa !34
  %291 = getelementptr inbounds double, ptr %290, i64 %165
  %292 = load double, ptr %291, align 8, !tbaa !19
  %293 = fsub double %292, %288
  store double %293, ptr %291, align 8, !tbaa !19
  %294 = load double, ptr %156, align 8, !tbaa !32
  %295 = fmul double %294, 2.000000e+00
  %296 = fdiv double %293, %295
  store double %296, ptr %291, align 8, !tbaa !19
  %297 = load ptr, ptr %162, align 8, !tbaa !36
  %298 = getelementptr inbounds double, ptr %297, i64 %indvars.iv386
  store double %258, ptr %298, align 8, !tbaa !19
  %indvars.iv.next382 = add nuw nsw i64 %indvars.iv381, 1
  %exitcond385.not = icmp eq i64 %indvars.iv.next382, %wide.trip.count389
  br i1 %exitcond385.not, label %._crit_edge.us332, label %166, !llvm.loop !40

._crit_edge.us332:                                ; preds = %262
  %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1
  %exitcond390.not = icmp eq i64 %indvars.iv.next387, %wide.trip.count389
  br i1 %exitcond390.not, label %._crit_edge331, label %.preheader.us, !llvm.loop !41

.split.us:                                        ; preds = %50
  %299 = trunc nuw nsw i64 %indvars.iv376 to i32
  %300 = trunc nuw nsw i64 %indvars.iv371 to i32
  %301 = add nuw nsw i32 %299, 1
  %302 = mul nuw nsw i32 %300, 3
  %303 = mul nuw nsw i32 %299, 3
  tail call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %4, ptr noundef %5, i32 noundef 78, ptr noundef nonnull @.str.2, i32 noundef %301, i32 noundef %302, i32 noundef %303) #4
  br label %.loopexit

.split322.us:                                     ; preds = %57
  %304 = trunc nuw nsw i64 %indvars.iv376 to i32
  %305 = trunc nuw i64 %47 to i32
  %306 = trunc nuw i64 %62 to i32
  %307 = add nuw nsw i32 %304, 1
  tail call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %4, ptr noundef %5, i32 noundef 78, ptr noundef nonnull @.str.2, i32 noundef %307, i32 noundef %306, i32 noundef %305) #4
  br label %.loopexit

.split.us333:                                     ; preds = %166
  %308 = trunc nuw nsw i64 %indvars.iv386 to i32
  %309 = trunc nuw nsw i64 %indvars.iv381 to i32
  %310 = add nuw nsw i32 %308, 1
  %311 = mul nuw nsw i32 %309, 3
  %312 = mul nuw nsw i32 %308, 3
  tail call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %4, ptr noundef %5, i32 noundef 78, ptr noundef nonnull @.str.2, i32 noundef %310, i32 noundef %311, i32 noundef %312) #4
  br label %.loopexit

.split337.us:                                     ; preds = %172
  %313 = trunc nuw nsw i64 %indvars.iv386 to i32
  %314 = trunc nuw i64 %163 to i32
  %315 = trunc nuw i64 %178 to i32
  %316 = add nuw nsw i32 %313, 1
  tail call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %4, ptr noundef %5, i32 noundef 78, ptr noundef nonnull @.str.2, i32 noundef %316, i32 noundef %315, i32 noundef %314) #4
  br label %.loopexit

.split342.us:                                     ; preds = %219
  %317 = trunc nuw nsw i64 %indvars.iv386 to i32
  %318 = trunc nuw i64 %163 to i32
  %319 = trunc nuw i64 %178 to i32
  %320 = add nuw nsw i32 %317, 1
  tail call void (ptr, ptr, i32, ptr, ...) @set_universal_error_with_message(ptr noundef %4, ptr noundef %5, i32 noundef 78, ptr noundef nonnull @.str.2, i32 noundef %320, i32 noundef %319, i32 noundef %318) #4
  br label %.loopexit

._crit_edge331:                                   ; preds = %._crit_edge.us332, %6, %.preheader290, %.preheader288
  %321 = getelementptr inbounds i8, ptr %3, i64 392
  %322 = load i8, ptr %321, align 8, !tbaa !42, !range !43, !noundef !44
  %323 = trunc nuw i8 %322 to i1
  br i1 %323, label %324, label %.loopexit

324:                                              ; preds = %._crit_edge331
  %325 = getelementptr inbounds i8, ptr %3, i64 404
  %326 = load i32, ptr %325, align 4, !tbaa !45
  %327 = sitofp i32 %326 to double
  %328 = tail call double @pow(double noundef %327, double noundef 1.500000e+00) #4
  %329 = getelementptr inbounds i8, ptr %3, i64 384
  store double %328, ptr %329, align 8, !tbaa !46
  br i1 %9, label %.lr.ph347, label %.loopexit

.lr.ph347:                                        ; preds = %324
  %330 = mul i32 %8, 3
  %331 = getelementptr inbounds i8, ptr %3, i64 344
  %332 = getelementptr inbounds i8, ptr %3, i64 352
  %333 = getelementptr inbounds i8, ptr %3, i64 272
  %334 = load ptr, ptr %333, align 8, !tbaa !33
  %smax = tail call i32 @llvm.smax.i32(i32 %330, i32 1)
  %wide.trip.count394 = zext nneg i32 %smax to i64
  %xtraiter475 = and i64 %wide.trip.count394, 1
  %335 = icmp slt i32 %330, 2
  br i1 %335, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph347.new

.lr.ph347.new:                                    ; preds = %.lr.ph347
  %unroll_iter = and i64 %wide.trip.count394, 2147483646
  br label %336

336:                                              ; preds = %336, %.lr.ph347.new
  %indvars.iv391 = phi i64 [ 0, %.lr.ph347.new ], [ %indvars.iv.next392.1, %336 ]
  %niter = phi i64 [ 0, %.lr.ph347.new ], [ %niter.next.1, %336 ]
  %337 = load double, ptr %331, align 8, !tbaa !47
  %338 = load double, ptr %329, align 8, !tbaa !46
  %339 = fdiv double %337, %338
  %340 = load double, ptr %332, align 8, !tbaa !48
  %341 = fadd double %339, %340
  %342 = getelementptr inbounds ptr, ptr %334, i64 %indvars.iv391
  %343 = load ptr, ptr %342, align 8, !tbaa !34
  %344 = getelementptr inbounds double, ptr %343, i64 %indvars.iv391
  %345 = load double, ptr %344, align 8, !tbaa !19
  %346 = fadd double %341, %345
  store double %346, ptr %344, align 8, !tbaa !19
  %indvars.iv.next392 = or disjoint i64 %indvars.iv391, 1
  %347 = load double, ptr %331, align 8, !tbaa !47
  %348 = load double, ptr %329, align 8, !tbaa !46
  %349 = fdiv double %347, %348
  %350 = load double, ptr %332, align 8, !tbaa !48
  %351 = fadd double %349, %350
  %352 = getelementptr inbounds ptr, ptr %334, i64 %indvars.iv.next392
  %353 = load ptr, ptr %352, align 8, !tbaa !34
  %354 = getelementptr inbounds double, ptr %353, i64 %indvars.iv.next392
  %355 = load double, ptr %354, align 8, !tbaa !19
  %356 = fadd double %351, %355
  store double %356, ptr %354, align 8, !tbaa !19
  %indvars.iv.next392.1 = add nuw nsw i64 %indvars.iv391, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %336, !llvm.loop !49

.loopexit.loopexit.unr-lcssa:                     ; preds = %336, %.lr.ph347
  %indvars.iv391.unr = phi i64 [ 0, %.lr.ph347 ], [ %indvars.iv.next392.1, %336 ]
  %lcmp.mod476.not = icmp eq i64 %xtraiter475, 0
  br i1 %lcmp.mod476.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %357 = load double, ptr %331, align 8, !tbaa !47
  %358 = load double, ptr %329, align 8, !tbaa !46
  %359 = fdiv double %357, %358
  %360 = load double, ptr %332, align 8, !tbaa !48
  %361 = fadd double %359, %360
  %362 = getelementptr inbounds ptr, ptr %334, i64 %indvars.iv391.unr
  %363 = load ptr, ptr %362, align 8, !tbaa !34
  %364 = getelementptr inbounds double, ptr %363, i64 %indvars.iv391.unr
  %365 = load double, ptr %364, align 8, !tbaa !19
  %366 = fadd double %361, %365
  store double %366, ptr %364, align 8, !tbaa !19
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %324, %._crit_edge331, %.split342.us, %.split337.us, %.split.us333, %.split322.us, %.split.us
  %.0277 = phi i32 [ 3, %.split.us ], [ 3, %.split322.us ], [ 3, %.split.us333 ], [ 3, %.split337.us ], [ 3, %.split342.us ], [ 0, %._crit_edge331 ], [ 0, %324 ], [ 0, %.loopexit.loopexit.unr-lcssa ], [ 0, %.loopexit.loopexit.epilog-lcssa ]
  ret i32 %.0277
}

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

attributes #0 = { mustprogress nofree nounwind willreturn memory(write) "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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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, !10, i64 80}
!6 = !{!"MAP_ConstraintStateType", !7, i64 0, !7, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !7, i64 56, !10, i64 64, !7, i64 72, !10, i64 80}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !7, i64 168}
!12 = !{!"MAP_OtherStateType", !7, i64 0, !7, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !7, i64 56, !10, i64 64, !7, i64 72, !10, i64 80, !7, i64 88, !10, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !10, i64 128, !7, i64 136, !10, i64 144, !7, i64 152, !10, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !10, i64 192, !7, i64 200, !10, i64 208, !7, i64 216, !10, i64 224, !7, i64 232, !10, i64 240, !7, i64 248, !10, i64 256}
!13 = !{!14, !7, i64 56}
!14 = !{!"OuterSolveAttributes_t", !10, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !15, i64 144, !16, i64 152, !16, i64 153, !16, i64 154, !10, i64 156, !10, i64 160, !10, i64 164}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_Bool", !8, i64 0}
!17 = !{!12, !7, i64 184}
!18 = !{!12, !7, i64 200}
!19 = !{!15, !15, i64 0}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = !{!26}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !28, !29, !30}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!"llvm.loop.isvectorized", i32 1}
!30 = !{!"llvm.loop.unroll.runtime.disable"}
!31 = !{!6, !7, i64 40}
!32 = !{!14, !15, i64 120}
!33 = !{!14, !7, i64 32}
!34 = !{!7, !7, i64 0}
!35 = !{!6, !7, i64 56}
!36 = !{!6, !7, i64 72}
!37 = distinct !{!37, !28}
!38 = distinct !{!38, !28}
!39 = distinct !{!39, !28, !29}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = !{!14, !16, i64 152}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!14, !10, i64 164}
!46 = !{!14, !15, i64 144}
!47 = !{!14, !15, i64 104}
!48 = !{!14, !15, i64 112}
!49 = distinct !{!49, !28}


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