; LLVM IR from chrxh/alien :: source/EngineInterface (SimulationParametersValidationService)

; 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.SimulationParameters = type <{ [64 x i8], %struct.Features, [2 x i8], i32, [40 x %struct.RadiationSource], i8, [3 x i8], float, [7 x float], [7 x float], [7 x float], i8, [3 x i8], float, i32, [20 x %struct.SimulationParametersZone], i32, i8, i8, i8, i8, i32, i32, float, float, i32, float, i8, i8, [2 x i8], float, i8, [3 x i8], %struct.SimulationParametersZoneValues, float, i32, %union.MotionData, float, float, [7 x float], [7 x float], float, float, i32, [7 x float], [7 x float], [7 x float], [7 x i32], float, float, float, [7 x i32], [7 x float], [7 x float], [7 x float], [7 x float], i32, [7 x i32], i8, i8, [2 x i8], [7 x i32], i8, [3 x i8], i32, i8, i8, i8, i8, i32, [7 x float], [7 x float], [7 x float], i8, [7 x [7 x i8]], i8, i8, float, float, float, float, float, float, i32, [7 x float], [7 x [7 x i32]], float, [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x [7 x float]], [7 x float], float, i8, [3 x i8], [7 x float], [7 x float], i8, [3 x i8], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], float, i8, [3 x i8], [7 x float], [7 x float], float, [7 x float], float, [7 x float], [7 x float], float, i8, [3 x i8] }>
%struct.Features = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.RadiationSource = type { [64 x i8], i32, float, i8, float, float, float, float, i8, float, i32, %union.RadiationSourceShapeData }
%union.RadiationSourceShapeData = type { %struct.RectangularRadiationSource }
%struct.RectangularRadiationSource = type { float, float }
%struct.SimulationParametersZone = type { [64 x i8], i32, i32, float, float, float, float, float, i32, %union.SpotShapeData, i32, %union.FlowData, %struct.SimulationParametersZoneValues, %struct.SimulationParametersZoneActivatedValues }
%union.SpotShapeData = type { %struct.RectangularSpot }
%struct.RectangularSpot = type { float, float }
%union.FlowData = type { %struct.RadialFlow }
%struct.RadialFlow = type { i32, float, float }
%struct.SimulationParametersZoneActivatedValues = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.SimulationParametersZoneValues = type { float, float, [7 x float], [7 x float], [7 x float], [7 x float], i8, [7 x float], [7 x float], [7 x float], float, float, [7 x float], [7 x i32], [7 x i32], [7 x float], [7 x [7 x float]], [7 x float], [7 x float], [7 x [7 x float]], [7 x [7 x float]], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float] }
%union.MotionData = type { %struct.FluidMotion }
%struct.FluidMotion = type { float, float, float }

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

61:                                               ; preds = %359, %2
  %62 = load i32, ptr %5, align 4, !tbaa !9
  %63 = icmp slt i32 %62, 7
  br i1 %63, label %65, label %64

64:                                               ; preds = %61
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  br label %362

65:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %152, %65
  %67 = load i32, ptr %7, align 4, !tbaa !9
  %68 = icmp slt i32 %67, 7
  br i1 %68, label %70, label %69

69:                                               ; preds = %66
  store i32 5, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  br label %155

70:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  store float 0.000000e+00, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  store float 1.000000e+00, ptr %9, align 4, !tbaa !11
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.SimulationParameters, ptr %71, i32 0, i32 33
  %73 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %72, i32 0, i32 16
  %74 = load i32, ptr %5, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds [7 x [7 x float]], ptr %73, i64 0, i64 %75
  %77 = load i32, ptr %7, align 4, !tbaa !9
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds [7 x float], ptr %76, i64 0, i64 %78
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %79)
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %80)
  %82 = load float, ptr %81, align 4, !tbaa !11
  %83 = load ptr, ptr %4, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.SimulationParameters, ptr %83, i32 0, i32 33
  %85 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %84, i32 0, i32 16
  %86 = load i32, ptr %5, align 4, !tbaa !9
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds [7 x [7 x float]], ptr %85, i64 0, i64 %87
  %89 = load i32, ptr %7, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds [7 x float], ptr %88, i64 0, i64 %90
  store float %82, ptr %91, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  store float 0.000000e+00, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store float 1.000000e+00, ptr %11, align 4, !tbaa !11
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.SimulationParameters, ptr %92, i32 0, i32 92
  %94 = load i32, ptr %5, align 4, !tbaa !9
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [7 x [7 x float]], ptr %93, i64 0, i64 %95
  %97 = load i32, ptr %7, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [7 x float], ptr %96, i64 0, i64 %98
  %100 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %99)
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %100)
  %102 = load float, ptr %101, align 4, !tbaa !11
  %103 = load ptr, ptr %4, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.SimulationParameters, ptr %103, i32 0, i32 92
  %105 = load i32, ptr %5, align 4, !tbaa !9
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds [7 x [7 x float]], ptr %104, i64 0, i64 %106
  %108 = load i32, ptr %7, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds [7 x float], ptr %107, i64 0, i64 %109
  store float %102, ptr %110, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store float 0.000000e+00, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store float 1.000000e+00, ptr %13, align 4, !tbaa !11
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.SimulationParameters, ptr %111, i32 0, i32 33
  %113 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %112, i32 0, i32 20
  %114 = load i32, ptr %5, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds [7 x [7 x float]], ptr %113, i64 0, i64 %115
  %117 = load i32, ptr %7, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds [7 x float], ptr %116, i64 0, i64 %118
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %119)
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %120)
  %122 = load float, ptr %121, align 4, !tbaa !11
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.SimulationParameters, ptr %123, i32 0, i32 33
  %125 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %124, i32 0, i32 20
  %126 = load i32, ptr %5, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [7 x [7 x float]], ptr %125, i64 0, i64 %127
  %129 = load i32, ptr %7, align 4, !tbaa !9
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds [7 x float], ptr %128, i64 0, i64 %130
  store float %122, ptr %131, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store float 0.000000e+00, ptr %14, align 4, !tbaa !11
  %132 = load ptr, ptr %4, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.SimulationParameters, ptr %132, i32 0, i32 33
  %134 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %133, i32 0, i32 19
  %135 = load i32, ptr %5, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [7 x [7 x float]], ptr %134, i64 0, i64 %136
  %138 = load i32, ptr %7, align 4, !tbaa !9
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds [7 x float], ptr %137, i64 0, i64 %139
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %140)
  %142 = load float, ptr %141, align 4, !tbaa !11
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.SimulationParameters, ptr %143, i32 0, i32 33
  %145 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %144, i32 0, i32 19
  %146 = load i32, ptr %5, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [7 x [7 x float]], ptr %145, i64 0, i64 %147
  %149 = load i32, ptr %7, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds [7 x float], ptr %148, i64 0, i64 %150
  store float %142, ptr %151, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %152

152:                                              ; preds = %70
  %153 = load i32, ptr %7, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %7, align 4, !tbaa !9
  br label %66, !llvm.loop !13

155:                                              ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store float 0.000000e+00, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store float 1.000000e+00, ptr %16, align 4, !tbaa !11
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.SimulationParameters, ptr %156, i32 0, i32 33
  %158 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %157, i32 0, i32 2
  %159 = load i32, ptr %5, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds [7 x float], ptr %158, i64 0, i64 %160
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %161)
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %162)
  %164 = load float, ptr %163, align 4, !tbaa !11
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.SimulationParameters, ptr %165, i32 0, i32 33
  %167 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %166, i32 0, i32 2
  %168 = load i32, ptr %5, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [7 x float], ptr %167, i64 0, i64 %169
  store float %164, ptr %170, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store float 0.000000e+00, ptr %17, align 4, !tbaa !11
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.SimulationParameters, ptr %171, i32 0, i32 52
  %173 = load i32, ptr %5, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds [7 x float], ptr %172, i64 0, i64 %174
  %176 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %175)
  %177 = load float, ptr %176, align 4, !tbaa !11
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.SimulationParameters, ptr %178, i32 0, i32 52
  %180 = load i32, ptr %5, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [7 x float], ptr %179, i64 0, i64 %181
  store float %177, ptr %182, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  store float 0.000000e+00, ptr %18, align 4, !tbaa !11
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.SimulationParameters, ptr %183, i32 0, i32 53
  %185 = load i32, ptr %5, align 4, !tbaa !9
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds [7 x float], ptr %184, i64 0, i64 %186
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %187)
  %189 = load float, ptr %188, align 4, !tbaa !11
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.SimulationParameters, ptr %190, i32 0, i32 53
  %192 = load i32, ptr %5, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [7 x float], ptr %191, i64 0, i64 %193
  store float %189, ptr %194, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store float 0.000000e+00, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store float 1.000000e+00, ptr %20, align 4, !tbaa !11
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.SimulationParameters, ptr %195, i32 0, i32 9
  %197 = load i32, ptr %5, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [7 x float], ptr %196, i64 0, i64 %198
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %199)
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %200)
  %202 = load float, ptr %201, align 4, !tbaa !11
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.SimulationParameters, ptr %203, i32 0, i32 9
  %205 = load i32, ptr %5, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds [7 x float], ptr %204, i64 0, i64 %206
  store float %202, ptr %207, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store float 0.000000e+00, ptr %21, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store float 1.000000e+00, ptr %22, align 4, !tbaa !11
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.SimulationParameters, ptr %208, i32 0, i32 93
  %210 = load i32, ptr %5, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [7 x float], ptr %209, i64 0, i64 %211
  %213 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %212)
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %213)
  %215 = load float, ptr %214, align 4, !tbaa !11
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.SimulationParameters, ptr %216, i32 0, i32 93
  %218 = load i32, ptr %5, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [7 x float], ptr %217, i64 0, i64 %219
  store float %215, ptr %220, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store float 0.000000e+00, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store float 1.000000e+00, ptr %24, align 4, !tbaa !11
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.SimulationParameters, ptr %221, i32 0, i32 116
  %223 = load i32, ptr %5, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [7 x float], ptr %222, i64 0, i64 %224
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %225)
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %226)
  %228 = load float, ptr %227, align 4, !tbaa !11
  %229 = load ptr, ptr %4, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.SimulationParameters, ptr %229, i32 0, i32 116
  %231 = load i32, ptr %5, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds [7 x float], ptr %230, i64 0, i64 %232
  store float %228, ptr %233, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  store float 0.000000e+00, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store float 1.000000e+00, ptr %26, align 4, !tbaa !11
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.SimulationParameters, ptr %234, i32 0, i32 8
  %236 = load i32, ptr %5, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [7 x float], ptr %235, i64 0, i64 %237
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %238)
  %240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %239)
  %241 = load float, ptr %240, align 4, !tbaa !11
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.SimulationParameters, ptr %242, i32 0, i32 8
  %244 = load i32, ptr %5, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [7 x float], ptr %243, i64 0, i64 %245
  store float %241, ptr %246, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.SimulationParameters, ptr %247, i32 0, i32 33
  %249 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %248, i32 0, i32 8
  %250 = load i32, ptr %5, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [7 x float], ptr %249, i64 0, i64 %251
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %253 = load ptr, ptr %4, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.SimulationParameters, ptr %253, i32 0, i32 40
  %255 = load i32, ptr %5, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds [7 x float], ptr %254, i64 0, i64 %256
  %258 = load float, ptr %257, align 4, !tbaa !11
  %259 = fmul float %258, 0x3FEE666660000000
  store float %259, ptr %27, align 4, !tbaa !11
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %252, ptr noundef nonnull align 4 dereferenceable(4) %27)
  %261 = load float, ptr %260, align 4, !tbaa !11
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.SimulationParameters, ptr %262, i32 0, i32 33
  %264 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %263, i32 0, i32 8
  %265 = load i32, ptr %5, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [7 x float], ptr %264, i64 0, i64 %266
  store float %261, ptr %267, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  store float 0.000000e+00, ptr %28, align 4, !tbaa !11
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.SimulationParameters, ptr %268, i32 0, i32 70
  %270 = load i32, ptr %5, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [7 x float], ptr %269, i64 0, i64 %271
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %272)
  %274 = load float, ptr %273, align 4, !tbaa !11
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.SimulationParameters, ptr %275, i32 0, i32 70
  %277 = load i32, ptr %5, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds [7 x float], ptr %276, i64 0, i64 %278
  store float %274, ptr %279, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  store float 0.000000e+00, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  store float 1.000000e+00, ptr %30, align 4, !tbaa !11
  %280 = load ptr, ptr %4, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.SimulationParameters, ptr %280, i32 0, i32 33
  %282 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %281, i32 0, i32 4
  %283 = load i32, ptr %5, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [7 x float], ptr %282, i64 0, i64 %284
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %285)
  %287 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %286)
  %288 = load float, ptr %287, align 4, !tbaa !11
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.SimulationParameters, ptr %289, i32 0, i32 33
  %291 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %290, i32 0, i32 4
  %292 = load i32, ptr %5, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [7 x float], ptr %291, i64 0, i64 %293
  store float %288, ptr %294, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store float 0.000000e+00, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store float 1.000000e+00, ptr %32, align 4, !tbaa !11
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.SimulationParameters, ptr %295, i32 0, i32 33
  %297 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %296, i32 0, i32 3
  %298 = load i32, ptr %5, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds [7 x float], ptr %297, i64 0, i64 %299
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %300)
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %301)
  %303 = load float, ptr %302, align 4, !tbaa !11
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.SimulationParameters, ptr %304, i32 0, i32 33
  %306 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %305, i32 0, i32 3
  %307 = load i32, ptr %5, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds [7 x float], ptr %306, i64 0, i64 %308
  store float %303, ptr %309, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store float 0.000000e+00, ptr %33, align 4, !tbaa !11
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.SimulationParameters, ptr %310, i32 0, i32 44
  %312 = load i32, ptr %5, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds [7 x float], ptr %311, i64 0, i64 %313
  %315 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %314)
  %316 = load float, ptr %315, align 4, !tbaa !11
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.SimulationParameters, ptr %317, i32 0, i32 44
  %319 = load i32, ptr %5, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds [7 x float], ptr %318, i64 0, i64 %320
  store float %316, ptr %321, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store float 0.000000e+00, ptr %34, align 4, !tbaa !11
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.SimulationParameters, ptr %322, i32 0, i32 45
  %324 = load i32, ptr %5, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [7 x float], ptr %323, i64 0, i64 %325
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %326)
  %328 = load float, ptr %327, align 4, !tbaa !11
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.SimulationParameters, ptr %329, i32 0, i32 45
  %331 = load i32, ptr %5, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds [7 x float], ptr %330, i64 0, i64 %332
  store float %328, ptr %333, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  store float 0.000000e+00, ptr %35, align 4, !tbaa !11
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.SimulationParameters, ptr %334, i32 0, i32 46
  %336 = load i32, ptr %5, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds [7 x float], ptr %335, i64 0, i64 %337
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %338)
  %340 = load float, ptr %339, align 4, !tbaa !11
  %341 = load ptr, ptr %4, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.SimulationParameters, ptr %341, i32 0, i32 46
  %343 = load i32, ptr %5, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [7 x float], ptr %342, i64 0, i64 %344
  store float %340, ptr %345, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  store float 0.000000e+00, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  store float 5.000000e+00, ptr %37, align 4, !tbaa !11
  %346 = load ptr, ptr %4, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.SimulationParameters, ptr %346, i32 0, i32 110
  %348 = load i32, ptr %5, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds [7 x float], ptr %347, i64 0, i64 %349
  %351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %350)
  %352 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %351)
  %353 = load float, ptr %352, align 4, !tbaa !11
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.SimulationParameters, ptr %354, i32 0, i32 110
  %356 = load i32, ptr %5, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds [7 x float], ptr %355, i64 0, i64 %357
  store float %353, ptr %358, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  br label %359

359:                                              ; preds = %155
  %360 = load i32, ptr %5, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %5, align 4, !tbaa !9
  br label %61, !llvm.loop !15

362:                                              ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  store float 0.000000e+00, ptr %38, align 4, !tbaa !11
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.SimulationParameters, ptr %363, i32 0, i32 7
  %365 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %364)
  %366 = load float, ptr %365, align 4, !tbaa !11
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.SimulationParameters, ptr %367, i32 0, i32 7
  store float %366, ptr %368, align 4, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  store float 1.000000e+01, ptr %39, align 4, !tbaa !11
  %369 = load ptr, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.SimulationParameters, ptr %369, i32 0, i32 33
  %371 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %370, i32 0, i32 11
  %372 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %371)
  %373 = load float, ptr %372, align 4, !tbaa !11
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.SimulationParameters, ptr %374, i32 0, i32 33
  %376 = getelementptr inbounds %struct.SimulationParametersZoneValues, ptr %375, i32 0, i32 11
  store float %373, ptr %376, align 4, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  store float 0.000000e+00, ptr %40, align 4, !tbaa !11
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.SimulationParameters, ptr %377, i32 0, i32 34
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %378)
  %380 = load float, ptr %379, align 4, !tbaa !11
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.SimulationParameters, ptr %381, i32 0, i32 34
  store float %380, ptr %382, align 4, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  store i32 1000, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  store i32 1000000, ptr %42, align 4, !tbaa !9
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.SimulationParameters, ptr %383, i32 0, i32 64
  %385 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %384)
  %386 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %385)
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = load ptr, ptr %4, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.SimulationParameters, ptr %388, i32 0, i32 64
  store i32 %387, ptr %389, align 4, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  store float 1.000000e+00, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  store float 8.000000e+00, ptr %44, align 4, !tbaa !11
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.SimulationParameters, ptr %390, i32 0, i32 23
  %392 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %391)
  %393 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %392)
  %394 = load float, ptr %393, align 4, !tbaa !11
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.SimulationParameters, ptr %395, i32 0, i32 23
  store float %394, ptr %396, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  store float 1.000000e+00, ptr %46, align 4, !tbaa !11
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.SimulationParameters, ptr %397, i32 0, i32 24
  %399 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %398)
  %400 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %399)
  %401 = load float, ptr %400, align 4, !tbaa !11
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.SimulationParameters, ptr %402, i32 0, i32 24
  store float %401, ptr %403, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  store float 0.000000e+00, ptr %47, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  store float 1.000000e+00, ptr %48, align 4, !tbaa !11
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.SimulationParameters, ptr %404, i32 0, i32 77
  %406 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %405)
  %407 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 4 dereferenceable(4) %406)
  %408 = load float, ptr %407, align 4, !tbaa !11
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.SimulationParameters, ptr %409, i32 0, i32 77
  store float %408, ptr %410, align 4, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  store float 0.000000e+00, ptr %49, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  store float 1.000000e+00, ptr %50, align 4, !tbaa !11
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.SimulationParameters, ptr %411, i32 0, i32 78
  %413 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 4 dereferenceable(4) %412)
  %414 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %413)
  %415 = load float, ptr %414, align 4, !tbaa !11
  %416 = load ptr, ptr %4, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.SimulationParameters, ptr %416, i32 0, i32 78
  store float %415, ptr %417, align 4, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  store float 1.000000e+00, ptr %52, align 4, !tbaa !11
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.SimulationParameters, ptr %418, i32 0, i32 79
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %419)
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %420)
  %422 = load float, ptr %421, align 4, !tbaa !11
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.SimulationParameters, ptr %423, i32 0, i32 79
  store float %422, ptr %424, align 4, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  store float 1.000000e+00, ptr %53, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  store float 2.000000e+00, ptr %54, align 4, !tbaa !11
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.SimulationParameters, ptr %425, i32 0, i32 80
  %427 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %54, ptr noundef nonnull align 4 dereferenceable(4) %426)
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %427)
  %429 = load float, ptr %428, align 4, !tbaa !11
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.SimulationParameters, ptr %430, i32 0, i32 80
  store float %429, ptr %431, align 4, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  store float 1.000000e+00, ptr %55, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  store float 2.000000e+00, ptr %56, align 4, !tbaa !11
  %432 = load ptr, ptr %4, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.SimulationParameters, ptr %432, i32 0, i32 81
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %56, ptr noundef nonnull align 4 dereferenceable(4) %433)
  %435 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %55, ptr noundef nonnull align 4 dereferenceable(4) %434)
  %436 = load float, ptr %435, align 4, !tbaa !11
  %437 = load ptr, ptr %4, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.SimulationParameters, ptr %437, i32 0, i32 81
  store float %436, ptr %438, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  store float 0.000000e+00, ptr %57, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  store float 1.000000e+00, ptr %58, align 4, !tbaa !11
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.SimulationParameters, ptr %439, i32 0, i32 82
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %58, ptr noundef nonnull align 4 dereferenceable(4) %440)
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %57, ptr noundef nonnull align 4 dereferenceable(4) %441)
  %443 = load float, ptr %442, align 4, !tbaa !11
  %444 = load ptr, ptr %4, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.SimulationParameters, ptr %444, i32 0, i32 82
  store float %443, ptr %445, align 4, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %446

446:                                              ; preds = %460, %362
  %447 = load i32, ptr %59, align 4, !tbaa !9
  %448 = load ptr, ptr %4, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.SimulationParameters, ptr %448, i32 0, i32 14
  %450 = load i32, ptr %449, align 4, !tbaa !32
  %451 = icmp slt i32 %447, %450
  br i1 %451, label %453, label %452

452:                                              ; preds = %446
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  br label %463

453:                                              ; preds = %446
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.SimulationParameters, ptr %454, i32 0, i32 15
  %456 = load i32, ptr %59, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [20 x %struct.SimulationParametersZone], ptr %455, i64 0, i64 %457
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNK37SimulationParametersValidationService18validateAndCorrectER24SimulationParametersZoneRK20SimulationParameters(ptr noundef nonnull align 1 dereferenceable(1) %60, ptr noundef nonnull align 4 dereferenceable(1460) %458, ptr noundef nonnull align 4 dereferenceable(36809) %459)
  br label %460

460:                                              ; preds = %453
  %461 = load i32, ptr %59, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %59, align 4, !tbaa !9
  br label %446, !llvm.loop !33

463:                                              ; preds = %452
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK37SimulationParametersValidationService18validateAndCorrectER24SimulationParametersZoneRK20SimulationParameters(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(1460), ptr noundef nonnull align 4 dereferenceable(36809)) #0 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!17, !12, i64 4564}
!17 = !{!"_ZTS20SimulationParameters", !7, i64 0, !18, i64 64, !10, i64 76, !7, i64 80, !19, i64 4560, !12, i64 4564, !7, i64 4568, !7, i64 4596, !7, i64 4624, !19, i64 4652, !12, i64 4656, !10, i64 4660, !7, i64 4664, !10, i64 33864, !19, i64 33868, !19, i64 33869, !19, i64 33870, !10, i64 33872, !10, i64 33876, !12, i64 33880, !12, i64 33884, !10, i64 33888, !12, i64 33892, !19, i64 33896, !19, i64 33897, !12, i64 33900, !19, i64 33904, !20, i64 33908, !12, i64 35216, !10, i64 35220, !7, i64 35224, !12, i64 35236, !12, i64 35240, !7, i64 35244, !7, i64 35272, !12, i64 35300, !12, i64 35304, !10, i64 35308, !7, i64 35312, !7, i64 35340, !7, i64 35368, !7, i64 35396, !12, i64 35424, !12, i64 35428, !12, i64 35432, !7, i64 35436, !7, i64 35464, !7, i64 35492, !7, i64 35520, !7, i64 35548, !10, i64 35576, !7, i64 35580, !19, i64 35608, !19, i64 35609, !7, i64 35612, !19, i64 35640, !10, i64 35644, !19, i64 35648, !19, i64 35649, !19, i64 35650, !10, i64 35652, !7, i64 35656, !7, i64 35684, !7, i64 35712, !19, i64 35740, !7, i64 35741, !19, i64 35790, !19, i64 35791, !12, i64 35792, !12, i64 35796, !12, i64 35800, !12, i64 35804, !12, i64 35808, !12, i64 35812, !10, i64 35816, !7, i64 35820, !7, i64 35848, !12, i64 36044, !7, i64 36048, !7, i64 36076, !7, i64 36104, !7, i64 36132, !7, i64 36160, !7, i64 36188, !7, i64 36384, !12, i64 36412, !19, i64 36416, !7, i64 36420, !7, i64 36448, !19, i64 36476, !7, i64 36480, !7, i64 36508, !7, i64 36536, !7, i64 36564, !7, i64 36592, !7, i64 36620, !12, i64 36648, !19, i64 36652, !7, i64 36656, !7, i64 36684, !12, i64 36712, !7, i64 36716, !12, i64 36744, !7, i64 36748, !7, i64 36776, !12, i64 36804, !19, i64 36808}
!18 = !{!"_ZTS8Features", !19, i64 0, !19, i64 1, !19, i64 2, !19, i64 3, !19, i64 4, !19, i64 5, !19, i64 6, !19, i64 7, !19, i64 8, !19, i64 9}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTS30SimulationParametersZoneValues", !12, i64 0, !12, i64 4, !7, i64 8, !7, i64 36, !7, i64 64, !7, i64 92, !19, i64 120, !7, i64 124, !7, i64 152, !7, i64 180, !12, i64 208, !12, i64 212, !7, i64 216, !7, i64 244, !7, i64 272, !7, i64 300, !7, i64 328, !7, i64 524, !7, i64 552, !7, i64 580, !7, i64 776, !7, i64 972, !7, i64 1000, !7, i64 1028, !7, i64 1056, !7, i64 1084, !7, i64 1112, !7, i64 1140, !7, i64 1168, !7, i64 1196, !7, i64 1224, !7, i64 1252, !7, i64 1280}
!21 = !{!17, !12, i64 34120}
!22 = !{!17, !12, i64 35216}
!23 = !{!17, !10, i64 35644}
!24 = !{!17, !12, i64 33880}
!25 = !{!17, !12, i64 33884}
!26 = !{!17, !12, i64 35792}
!27 = !{!17, !12, i64 35796}
!28 = !{!17, !12, i64 35800}
!29 = !{!17, !12, i64 35804}
!30 = !{!17, !12, i64 35808}
!31 = !{!17, !12, i64 35812}
!32 = !{!17, !10, i64 4660}
!33 = distinct !{!33, !14}


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

%struct.SimulationParametersZone = type { [64 x i8], i32, i32, float, float, float, float, float, i32, %union.SpotShapeData, i32, %union.FlowData, %struct.SimulationParametersZoneValues, %struct.SimulationParametersZoneActivatedValues }
%union.SpotShapeData = type { %struct.RectangularSpot }
%struct.RectangularSpot = type { float, float }
%union.FlowData = type { %struct.RadialFlow }
%struct.RadialFlow = type { i32, float, float }
%struct.SimulationParametersZoneValues = type { float, float, [7 x float], [7 x float], [7 x float], [7 x float], i8, [7 x float], [7 x float], [7 x float], float, float, [7 x float], [7 x i32], [7 x i32], [7 x float], [7 x [7 x float]], [7 x float], [7 x float], [7 x [7 x float]], [7 x [7 x float]], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float], [7 x float] }
%struct.SimulationParametersZoneActivatedValues = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK37SimulationParametersValidationService18validateAndCorrectER20SimulationParameters(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 4 dereferenceable(36809) %1) local_unnamed_addr #0 align 2 {
  %3 = alloca float, align 4
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = getelementptr inbounds i8, ptr %1, i64 34236
  %55 = getelementptr inbounds i8, ptr %1, i64 36188
  %56 = getelementptr inbounds i8, ptr %1, i64 34684
  %57 = getelementptr inbounds i8, ptr %1, i64 34488
  %58 = getelementptr inbounds i8, ptr %1, i64 33916
  %59 = getelementptr inbounds i8, ptr %1, i64 35464
  %60 = getelementptr inbounds i8, ptr %1, i64 35492
  %61 = getelementptr inbounds i8, ptr %1, i64 4596
  %62 = getelementptr inbounds i8, ptr %1, i64 36384
  %63 = getelementptr inbounds i8, ptr %1, i64 36776
  %64 = getelementptr inbounds i8, ptr %1, i64 4568
  %65 = getelementptr inbounds i8, ptr %1, i64 34060
  %66 = getelementptr inbounds i8, ptr %1, i64 35272
  %67 = getelementptr inbounds i8, ptr %1, i64 35656
  %68 = getelementptr inbounds i8, ptr %1, i64 33972
  %69 = getelementptr inbounds i8, ptr %1, i64 33944
  %70 = getelementptr inbounds i8, ptr %1, i64 35312
  %71 = getelementptr inbounds i8, ptr %1, i64 35340
  %72 = getelementptr inbounds i8, ptr %1, i64 35368
  %73 = getelementptr inbounds i8, ptr %1, i64 36656
  br label %.preheader

.preheader:                                       ; preds = %2, %124
  %indvars.iv126 = phi i64 [ 0, %2 ], [ %indvars.iv.next127, %124 ]
  br label %181

74:                                               ; preds = %124
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #3
  store float 0.000000e+00, ptr %33, align 4, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %1, i64 4564
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %75)
  %77 = load float, ptr %76, align 4, !tbaa !5
  store float %77, ptr %75, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #3
  store float 1.000000e+01, ptr %34, align 4, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %1, i64 34120
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %78)
  %80 = load float, ptr %79, align 4, !tbaa !5
  store float %80, ptr %78, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #3
  store float 0.000000e+00, ptr %35, align 4, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %1, i64 35216
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %81)
  %83 = load float, ptr %82, align 4, !tbaa !5
  store float %83, ptr %81, align 4, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #3
  store i32 1000, ptr %36, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #3
  store i32 1000000, ptr %37, align 4, !tbaa !17
  %84 = getelementptr inbounds i8, ptr %1, i64 35644
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %84)
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %85)
  %87 = load i32, ptr %86, align 4, !tbaa !17
  store i32 %87, ptr %84, align 4, !tbaa !18
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #3
  store float 1.000000e+00, ptr %38, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #3
  store float 8.000000e+00, ptr %39, align 4, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %1, i64 33880
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %39, ptr noundef nonnull align 4 dereferenceable(4) %88)
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %89)
  %91 = load float, ptr %90, align 4, !tbaa !5
  store float %91, ptr %88, align 4, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #3
  store float 0.000000e+00, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #3
  store float 1.000000e+00, ptr %41, align 4, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %1, i64 33884
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %92)
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %93)
  %95 = load float, ptr %94, align 4, !tbaa !5
  store float %95, ptr %92, align 4, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #3
  store float 0.000000e+00, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #3
  store float 1.000000e+00, ptr %43, align 4, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %1, i64 35792
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(4) %96)
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %97)
  %99 = load float, ptr %98, align 4, !tbaa !5
  store float %99, ptr %96, align 4, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #3
  store float 0.000000e+00, ptr %44, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #3
  store float 1.000000e+00, ptr %45, align 4, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %1, i64 35796
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %100)
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %101)
  %103 = load float, ptr %102, align 4, !tbaa !5
  store float %103, ptr %100, align 4, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #3
  store float 0.000000e+00, ptr %46, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #3
  store float 1.000000e+00, ptr %47, align 4, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %1, i64 35800
  %105 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 4 dereferenceable(4) %104)
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 4 dereferenceable(4) %105)
  %107 = load float, ptr %106, align 4, !tbaa !5
  store float %107, ptr %104, align 4, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #3
  store float 1.000000e+00, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #3
  store float 2.000000e+00, ptr %49, align 4, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %1, i64 35804
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %108)
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 4 dereferenceable(4) %109)
  %111 = load float, ptr %110, align 4, !tbaa !5
  store float %111, ptr %108, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #3
  store float 1.000000e+00, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #3
  store float 2.000000e+00, ptr %51, align 4, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %1, i64 35808
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %112)
  %114 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %50, ptr noundef nonnull align 4 dereferenceable(4) %113)
  %115 = load float, ptr %114, align 4, !tbaa !5
  store float %115, ptr %112, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #3
  store float 0.000000e+00, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #3
  store float 1.000000e+00, ptr %53, align 4, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %1, i64 35812
  %117 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %53, ptr noundef nonnull align 4 dereferenceable(4) %116)
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %52, ptr noundef nonnull align 4 dereferenceable(4) %117)
  %119 = load float, ptr %118, align 4, !tbaa !5
  store float %119, ptr %116, align 4, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #3
  %120 = getelementptr inbounds i8, ptr %1, i64 4660
  %121 = load i32, ptr %120, align 4, !tbaa !27
  %122 = icmp sgt i32 %121, 0
  br i1 %122, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %74
  %123 = getelementptr inbounds i8, ptr %1, i64 4664
  br label %197

124:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #3
  store float 0.000000e+00, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #3
  store float 1.000000e+00, ptr %11, align 4, !tbaa !5
  %125 = getelementptr inbounds [7 x float], ptr %58, i64 0, i64 %indvars.iv126
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %125)
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %126)
  %128 = load float, ptr %127, align 4, !tbaa !5
  store float %128, ptr %125, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #3
  store float 0.000000e+00, ptr %12, align 4, !tbaa !5
  %129 = getelementptr inbounds [7 x float], ptr %59, i64 0, i64 %indvars.iv126
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %129)
  %131 = load float, ptr %130, align 4, !tbaa !5
  store float %131, ptr %129, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #3
  store float 0.000000e+00, ptr %13, align 4, !tbaa !5
  %132 = getelementptr inbounds [7 x float], ptr %60, i64 0, i64 %indvars.iv126
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %132)
  %134 = load float, ptr %133, align 4, !tbaa !5
  store float %134, ptr %132, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #3
  store float 0.000000e+00, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #3
  store float 1.000000e+00, ptr %15, align 4, !tbaa !5
  %135 = getelementptr inbounds [7 x float], ptr %61, i64 0, i64 %indvars.iv126
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %135)
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %136)
  %138 = load float, ptr %137, align 4, !tbaa !5
  store float %138, ptr %135, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #3
  store float 0.000000e+00, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #3
  store float 1.000000e+00, ptr %17, align 4, !tbaa !5
  %139 = getelementptr inbounds [7 x float], ptr %62, i64 0, i64 %indvars.iv126
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %139)
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %140)
  %142 = load float, ptr %141, align 4, !tbaa !5
  store float %142, ptr %139, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #3
  store float 0.000000e+00, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #3
  store float 1.000000e+00, ptr %19, align 4, !tbaa !5
  %143 = getelementptr inbounds [7 x float], ptr %63, i64 0, i64 %indvars.iv126
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %143)
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %144)
  %146 = load float, ptr %145, align 4, !tbaa !5
  store float %146, ptr %143, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #3
  store float 0.000000e+00, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #3
  store float 1.000000e+00, ptr %21, align 4, !tbaa !5
  %147 = getelementptr inbounds [7 x float], ptr %64, i64 0, i64 %indvars.iv126
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %147)
  %149 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %148)
  %150 = load float, ptr %149, align 4, !tbaa !5
  store float %150, ptr %147, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #3
  %151 = getelementptr inbounds [7 x float], ptr %65, i64 0, i64 %indvars.iv126
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #3
  %152 = getelementptr inbounds [7 x float], ptr %66, i64 0, i64 %indvars.iv126
  %153 = load float, ptr %152, align 4, !tbaa !5
  %154 = fmul float %153, 0x3FEE666660000000
  store float %154, ptr %22, align 4, !tbaa !5
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %151, ptr noundef nonnull align 4 dereferenceable(4) %22)
  %156 = load float, ptr %155, align 4, !tbaa !5
  store float %156, ptr %151, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #3
  store float 0.000000e+00, ptr %23, align 4, !tbaa !5
  %157 = getelementptr inbounds [7 x float], ptr %67, i64 0, i64 %indvars.iv126
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %157)
  %159 = load float, ptr %158, align 4, !tbaa !5
  store float %159, ptr %157, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #3
  store float 0.000000e+00, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #3
  store float 1.000000e+00, ptr %25, align 4, !tbaa !5
  %160 = getelementptr inbounds [7 x float], ptr %68, i64 0, i64 %indvars.iv126
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %160)
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %161)
  %163 = load float, ptr %162, align 4, !tbaa !5
  store float %163, ptr %160, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #3
  store float 0.000000e+00, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #3
  store float 1.000000e+00, ptr %27, align 4, !tbaa !5
  %164 = getelementptr inbounds [7 x float], ptr %69, i64 0, i64 %indvars.iv126
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %27, ptr noundef nonnull align 4 dereferenceable(4) %164)
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %165)
  %167 = load float, ptr %166, align 4, !tbaa !5
  store float %167, ptr %164, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #3
  store float 0.000000e+00, ptr %28, align 4, !tbaa !5
  %168 = getelementptr inbounds [7 x float], ptr %70, i64 0, i64 %indvars.iv126
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %168)
  %170 = load float, ptr %169, align 4, !tbaa !5
  store float %170, ptr %168, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #3
  store float 0.000000e+00, ptr %29, align 4, !tbaa !5
  %171 = getelementptr inbounds [7 x float], ptr %71, i64 0, i64 %indvars.iv126
  %172 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %171)
  %173 = load float, ptr %172, align 4, !tbaa !5
  store float %173, ptr %171, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #3
  store float 0.000000e+00, ptr %30, align 4, !tbaa !5
  %174 = getelementptr inbounds [7 x float], ptr %72, i64 0, i64 %indvars.iv126
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %174)
  %176 = load float, ptr %175, align 4, !tbaa !5
  store float %176, ptr %174, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #3
  store float 0.000000e+00, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #3
  store float 5.000000e+00, ptr %32, align 4, !tbaa !5
  %177 = getelementptr inbounds [7 x float], ptr %73, i64 0, i64 %indvars.iv126
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %177)
  %179 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %178)
  %180 = load float, ptr %179, align 4, !tbaa !5
  store float %180, ptr %177, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #3
  %indvars.iv.next127 = add nuw nsw i64 %indvars.iv126, 1
  %exitcond129.not = icmp eq i64 %indvars.iv.next127, 7
  br i1 %exitcond129.not, label %74, label %.preheader, !llvm.loop !28

181:                                              ; preds = %.preheader, %181
  %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %181 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #3
  store float 0.000000e+00, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #3
  store float 1.000000e+00, ptr %4, align 4, !tbaa !5
  %182 = getelementptr inbounds [7 x [7 x float]], ptr %54, i64 0, i64 %indvars.iv126, i64 %indvars.iv
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %182)
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %183)
  %185 = load float, ptr %184, align 4, !tbaa !5
  store float %185, ptr %182, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #3
  store float 0.000000e+00, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #3
  store float 1.000000e+00, ptr %6, align 4, !tbaa !5
  %186 = getelementptr inbounds [7 x [7 x float]], ptr %55, i64 0, i64 %indvars.iv126, i64 %indvars.iv
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %186)
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %187)
  %189 = load float, ptr %188, align 4, !tbaa !5
  store float %189, ptr %186, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #3
  store float 0.000000e+00, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #3
  store float 1.000000e+00, ptr %8, align 4, !tbaa !5
  %190 = getelementptr inbounds [7 x [7 x float]], ptr %56, i64 0, i64 %indvars.iv126, i64 %indvars.iv
  %191 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %190)
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %191)
  %193 = load float, ptr %192, align 4, !tbaa !5
  store float %193, ptr %190, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #3
  store float 0.000000e+00, ptr %9, align 4, !tbaa !5
  %194 = getelementptr inbounds [7 x [7 x float]], ptr %57, i64 0, i64 %indvars.iv126, i64 %indvars.iv
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %194)
  %196 = load float, ptr %195, align 4, !tbaa !5
  store float %196, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #3
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 7
  br i1 %exitcond.not, label %124, label %181, !llvm.loop !30

._crit_edge:                                      ; preds = %197, %74
  ret void

197:                                              ; preds = %.lr.ph, %197
  %indvars.iv130 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next131, %197 ]
  %198 = getelementptr inbounds [20 x %struct.SimulationParametersZone], ptr %123, i64 0, i64 %indvars.iv130
  call void @_ZNK37SimulationParametersValidationService18validateAndCorrectER24SimulationParametersZoneRK20SimulationParameters(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 4 dereferenceable(1460) %198, ptr noundef nonnull align 4 dereferenceable(36809) %1)
  %indvars.iv.next131 = add nuw nsw i64 %indvars.iv130, 1
  %199 = load i32, ptr %120, align 4, !tbaa !27
  %200 = sext i32 %199 to i64
  %201 = icmp slt i64 %indvars.iv.next131, %200
  br i1 %201, label %197, label %._crit_edge, !llvm.loop !31
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK37SimulationParametersValidationService18validateAndCorrectER24SimulationParametersZoneRK20SimulationParameters(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(1460), ptr noundef nonnull align 4 dereferenceable(36809)) local_unnamed_addr #0 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 4564}
!10 = !{!"_ZTS20SimulationParameters", !7, i64 0, !11, i64 64, !13, i64 76, !7, i64 80, !12, i64 4560, !6, i64 4564, !7, i64 4568, !7, i64 4596, !7, i64 4624, !12, i64 4652, !6, i64 4656, !13, i64 4660, !7, i64 4664, !13, i64 33864, !12, i64 33868, !12, i64 33869, !12, i64 33870, !13, i64 33872, !13, i64 33876, !6, i64 33880, !6, i64 33884, !13, i64 33888, !6, i64 33892, !12, i64 33896, !12, i64 33897, !6, i64 33900, !12, i64 33904, !14, i64 33908, !6, i64 35216, !13, i64 35220, !7, i64 35224, !6, i64 35236, !6, i64 35240, !7, i64 35244, !7, i64 35272, !6, i64 35300, !6, i64 35304, !13, i64 35308, !7, i64 35312, !7, i64 35340, !7, i64 35368, !7, i64 35396, !6, i64 35424, !6, i64 35428, !6, i64 35432, !7, i64 35436, !7, i64 35464, !7, i64 35492, !7, i64 35520, !7, i64 35548, !13, i64 35576, !7, i64 35580, !12, i64 35608, !12, i64 35609, !7, i64 35612, !12, i64 35640, !13, i64 35644, !12, i64 35648, !12, i64 35649, !12, i64 35650, !13, i64 35652, !7, i64 35656, !7, i64 35684, !7, i64 35712, !12, i64 35740, !7, i64 35741, !12, i64 35790, !12, i64 35791, !6, i64 35792, !6, i64 35796, !6, i64 35800, !6, i64 35804, !6, i64 35808, !6, i64 35812, !13, i64 35816, !7, i64 35820, !7, i64 35848, !6, i64 36044, !7, i64 36048, !7, i64 36076, !7, i64 36104, !7, i64 36132, !7, i64 36160, !7, i64 36188, !7, i64 36384, !6, i64 36412, !12, i64 36416, !7, i64 36420, !7, i64 36448, !12, i64 36476, !7, i64 36480, !7, i64 36508, !7, i64 36536, !7, i64 36564, !7, i64 36592, !7, i64 36620, !6, i64 36648, !12, i64 36652, !7, i64 36656, !7, i64 36684, !6, i64 36712, !7, i64 36716, !6, i64 36744, !7, i64 36748, !7, i64 36776, !6, i64 36804, !12, i64 36808}
!11 = !{!"_ZTS8Features", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !12, i64 9}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS30SimulationParametersZoneValues", !6, i64 0, !6, i64 4, !7, i64 8, !7, i64 36, !7, i64 64, !7, i64 92, !12, i64 120, !7, i64 124, !7, i64 152, !7, i64 180, !6, i64 208, !6, i64 212, !7, i64 216, !7, i64 244, !7, i64 272, !7, i64 300, !7, i64 328, !7, i64 524, !7, i64 552, !7, i64 580, !7, i64 776, !7, i64 972, !7, i64 1000, !7, i64 1028, !7, i64 1056, !7, i64 1084, !7, i64 1112, !7, i64 1140, !7, i64 1168, !7, i64 1196, !7, i64 1224, !7, i64 1252, !7, i64 1280}
!15 = !{!10, !6, i64 34120}
!16 = !{!10, !6, i64 35216}
!17 = !{!13, !13, i64 0}
!18 = !{!10, !13, i64 35644}
!19 = !{!10, !6, i64 33880}
!20 = !{!10, !6, i64 33884}
!21 = !{!10, !6, i64 35792}
!22 = !{!10, !6, i64 35796}
!23 = !{!10, !6, i64 35800}
!24 = !{!10, !6, i64 35804}
!25 = !{!10, !6, i64 35808}
!26 = !{!10, !6, i64 35812}
!27 = !{!10, !13, i64 4660}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}


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