; LLVM IR from sphexa-org/sphexa :: main/src/analytical_solutions/sedov_solution (sedov_solution)

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

@_ZN13SedovSolution5xgeomE = external dso_local global double, align 8
@_ZN13SedovSolution5omegaE = external dso_local global double, align 8
@_ZN13SedovSolution5gammaE = external dso_local global double, align 8
@_ZN13SedovSolution5gamm1E = external dso_local global double, align 8
@_ZN13SedovSolution5gamp1E = external dso_local global double, align 8
@_ZN13SedovSolution3xg2E = external dso_local global double, align 8
@_ZN13SedovSolution9lsingularE = external dso_local global i8, align 1
@_ZN13SedovSolution7lvacuumE = external dso_local global i8, align 1
@_ZN13SedovSolution7lomega2E = external dso_local global i8, align 1
@_ZN13SedovSolution7lomega3E = external dso_local global i8, align 1
@_ZN13SedovSolution2a0E = external dso_local global double, align 8
@_ZN13SedovSolution2a1E = external dso_local global double, align 8
@_ZN13SedovSolution2a2E = external dso_local global double, align 8
@_ZN13SedovSolution2a3E = external dso_local global double, align 8
@_ZN13SedovSolution2a4E = external dso_local global double, align 8
@_ZN13SedovSolution2a5E = external dso_local global double, align 8
@_ZN13SedovSolution5a_valE = external dso_local global double, align 8
@_ZN13SedovSolution5b_valE = external dso_local global double, align 8
@_ZN13SedovSolution5c_valE = external dso_local global double, align 8
@_ZN13SedovSolution5d_valE = external dso_local global double, align 8
@_ZN13SedovSolution5e_valE = external dso_local global double, align 8
@_ZN13SedovSolution5rwantE = external dso_local global double, align 8
@_ZN13SedovSolution2r2E = external dso_local global double, align 8
@_ZN13SedovSolution3rvvE = external dso_local global double, align 8
@_ZN13SedovSolution4eps2E = external dso_local constant double, align 8

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13SedovSolution11sedov_funcsEdRdS0_S0_S0_S0_(double noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #3 align 2 {
  %7 = alloca double, align 8
  %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 double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  store double %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !9
  store ptr %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !9
  store ptr %5, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %40 = load double, ptr @_ZN13SedovSolution5a_valE, align 8, !tbaa !5
  %41 = load double, ptr %7, align 8, !tbaa !5
  %42 = fmul double %40, %41
  store double %42, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %43 = load double, ptr @_ZN13SedovSolution5a_valE, align 8, !tbaa !5
  store double %43, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %44 = load double, ptr @_ZN13SedovSolution5c_valE, align 8, !tbaa !5
  %45 = load double, ptr %7, align 8, !tbaa !5
  %46 = call double @llvm.fmuladd.f64(double %44, double %45, double -1.000000e+00)
  store double %46, ptr %16, align 8, !tbaa !5
  %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) @_ZN13SedovSolution4eps2E, ptr noundef nonnull align 8 dereferenceable(8) %16)
  %48 = load double, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  store double %48, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %49 = load double, ptr @_ZN13SedovSolution5b_valE, align 8, !tbaa !5
  %50 = load double, ptr %15, align 8, !tbaa !5
  %51 = fmul double %49, %50
  store double %51, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %52 = load double, ptr @_ZN13SedovSolution5b_valE, align 8, !tbaa !5
  %53 = load double, ptr @_ZN13SedovSolution5c_valE, align 8, !tbaa !5
  %54 = fmul double %52, %53
  store double %54, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %55 = load double, ptr @_ZN13SedovSolution5e_valE, align 8, !tbaa !5
  %56 = load double, ptr %7, align 8, !tbaa !5
  %57 = fneg double %55
  %58 = call double @llvm.fmuladd.f64(double %57, double %56, double 1.000000e+00)
  store double %58, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %59 = load double, ptr @_ZN13SedovSolution5d_valE, align 8, !tbaa !5
  %60 = load double, ptr %19, align 8, !tbaa !5
  %61 = fmul double %59, %60
  store double %61, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %62 = load double, ptr @_ZN13SedovSolution5d_valE, align 8, !tbaa !5
  %63 = fneg double %62
  %64 = load double, ptr @_ZN13SedovSolution5e_valE, align 8, !tbaa !5
  %65 = fmul double %63, %64
  store double %65, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %66 = load double, ptr @_ZN13SedovSolution5b_valE, align 8, !tbaa !5
  %67 = load double, ptr @_ZN13SedovSolution3xg2E, align 8, !tbaa !5
  %68 = fmul double 5.000000e-01, %67
  %69 = load double, ptr %7, align 8, !tbaa !5
  %70 = fneg double %68
  %71 = call double @llvm.fmuladd.f64(double %70, double %69, double 1.000000e+00)
  %72 = fmul double %66, %71
  store double %72, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %73 = load double, ptr @_ZN13SedovSolution5b_valE, align 8, !tbaa !5
  %74 = fneg double %73
  %75 = fmul double %74, 5.000000e-01
  %76 = load double, ptr @_ZN13SedovSolution3xg2E, align 8, !tbaa !5
  %77 = fmul double %75, %76
  store double %77, ptr %23, align 8, !tbaa !5
  %78 = load i8, ptr @_ZN13SedovSolution9lsingularE, align 1, !tbaa !11, !range !13, !noundef !14
  %79 = trunc i8 %78 to i1
  br i1 %79, label %80, label %100

80:                                               ; preds = %6
  %81 = load double, ptr @_ZN13SedovSolution5rwantE, align 8, !tbaa !5
  %82 = load double, ptr @_ZN13SedovSolution2r2E, align 8, !tbaa !5
  %83 = fdiv double %81, %82
  %84 = load ptr, ptr %8, align 8, !tbaa !9
  store double %83, ptr %84, align 8, !tbaa !5
  %85 = load ptr, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %85, align 8, !tbaa !5
  %86 = load ptr, ptr %8, align 8, !tbaa !9
  %87 = load double, ptr %86, align 8, !tbaa !5
  %88 = load ptr, ptr %10, align 8, !tbaa !9
  store double %87, ptr %88, align 8, !tbaa !5
  %89 = load ptr, ptr %8, align 8, !tbaa !9
  %90 = load double, ptr %89, align 8, !tbaa !5
  %91 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %92 = fsub double %91, 2.000000e+00
  %93 = call double @pow(double noundef %90, double noundef %92) #5
  %94 = load ptr, ptr %11, align 8, !tbaa !9
  store double %93, ptr %94, align 8, !tbaa !5
  %95 = load ptr, ptr %8, align 8, !tbaa !9
  %96 = load double, ptr %95, align 8, !tbaa !5
  %97 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %98 = call double @pow(double noundef %96, double noundef %97) #5
  %99 = load ptr, ptr %12, align 8, !tbaa !9
  store double %98, ptr %99, align 8, !tbaa !5
  br label %431

100:                                              ; preds = %6
  %101 = load i8, ptr @_ZN13SedovSolution7lvacuumE, align 1, !tbaa !11, !range !13, !noundef !14
  %102 = trunc i8 %101 to i1
  br i1 %102, label %103, label %113

103:                                              ; preds = %100
  %104 = load double, ptr @_ZN13SedovSolution5rwantE, align 8, !tbaa !5
  %105 = load double, ptr @_ZN13SedovSolution3rvvE, align 8, !tbaa !5
  %106 = fcmp olt double %104, %105
  br i1 %106, label %107, label %113

107:                                              ; preds = %103
  %108 = load ptr, ptr %8, align 8, !tbaa !9
  store double 0.000000e+00, ptr %108, align 8, !tbaa !5
  %109 = load ptr, ptr %9, align 8, !tbaa !9
  store double 0.000000e+00, ptr %109, align 8, !tbaa !5
  %110 = load ptr, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %110, align 8, !tbaa !5
  %111 = load ptr, ptr %11, align 8, !tbaa !9
  store double 0.000000e+00, ptr %111, align 8, !tbaa !5
  %112 = load ptr, ptr %12, align 8, !tbaa !9
  store double 0.000000e+00, ptr %112, align 8, !tbaa !5
  br label %430

113:                                              ; preds = %103, %100
  %114 = load i8, ptr @_ZN13SedovSolution7lomega2E, align 1, !tbaa !11, !range !13, !noundef !14
  %115 = trunc i8 %114 to i1
  br i1 %115, label %116, label %232

116:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %117 = load double, ptr @_ZN13SedovSolution5e_valE, align 8, !tbaa !5
  %118 = fmul double 2.000000e+00, %117
  %119 = fdiv double 1.000000e+00, %118
  store double %119, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %120 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %121 = fmul double 5.000000e-01, %120
  store double %121, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %122 = load double, ptr %25, align 8, !tbaa !5
  %123 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %124 = fdiv double %122, %123
  store double %124, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %125 = load double, ptr %13, align 8, !tbaa !5
  %126 = load double, ptr %26, align 8, !tbaa !5
  %127 = fsub double %125, %126
  %128 = fdiv double 1.000000e+00, %127
  store double %128, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %129 = load double, ptr %13, align 8, !tbaa !5
  %130 = fsub double 1.000000e+00, %129
  %131 = load double, ptr %27, align 8, !tbaa !5
  %132 = fmul double %130, %131
  store double %132, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %133 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %134 = fneg double %133
  %135 = load double, ptr %24, align 8, !tbaa !5
  %136 = fmul double %134, %135
  %137 = load double, ptr %14, align 8, !tbaa !5
  %138 = fmul double %136, %137
  %139 = load double, ptr %27, align 8, !tbaa !5
  %140 = fmul double %138, %139
  %141 = load double, ptr %28, align 8, !tbaa !5
  %142 = fadd double 1.000000e+00, %141
  %143 = fmul double %140, %142
  store double %143, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %144 = load double, ptr @_ZN13SedovSolution5gamm1E, align 8, !tbaa !5
  %145 = load double, ptr %24, align 8, !tbaa !5
  %146 = fmul double %144, %145
  store double %146, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %147 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %148 = load double, ptr %24, align 8, !tbaa !5
  %149 = fmul double %147, %148
  %150 = load double, ptr %28, align 8, !tbaa !5
  %151 = fmul double %149, %150
  store double %151, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %152 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %153 = fsub double 4.000000e+00, %152
  %154 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %155 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %154, double %153)
  %156 = load double, ptr %24, align 8, !tbaa !5
  %157 = fmul double %155, %156
  store double %157, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %158 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %159 = fneg double %158
  %160 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %161 = fmul double %159, %160
  %162 = load double, ptr %24, align 8, !tbaa !5
  %163 = fmul double %161, %162
  store double %163, ptr %33, align 8, !tbaa !5
  %164 = load double, ptr %13, align 8, !tbaa !5
  %165 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %166 = fneg double %165
  %167 = call double @pow(double noundef %164, double noundef %166) #5
  %168 = load double, ptr %17, align 8, !tbaa !5
  %169 = load double, ptr %30, align 8, !tbaa !5
  %170 = call double @pow(double noundef %168, double noundef %169) #5
  %171 = fmul double %167, %170
  %172 = load double, ptr %31, align 8, !tbaa !5
  %173 = call double @exp(double noundef %172) #5
  %174 = fmul double %171, %173
  %175 = load ptr, ptr %8, align 8, !tbaa !9
  store double %174, ptr %175, align 8, !tbaa !5
  %176 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %177 = fneg double %176
  %178 = load double, ptr %14, align 8, !tbaa !5
  %179 = fmul double %177, %178
  %180 = load double, ptr %13, align 8, !tbaa !5
  %181 = fdiv double %179, %180
  %182 = load double, ptr %30, align 8, !tbaa !5
  %183 = load double, ptr %18, align 8, !tbaa !5
  %184 = fmul double %182, %183
  %185 = load double, ptr %17, align 8, !tbaa !5
  %186 = fdiv double %184, %185
  %187 = fadd double %181, %186
  %188 = load double, ptr %29, align 8, !tbaa !5
  %189 = fadd double %187, %188
  %190 = load ptr, ptr %8, align 8, !tbaa !9
  %191 = load double, ptr %190, align 8, !tbaa !5
  %192 = fmul double %189, %191
  %193 = load ptr, ptr %9, align 8, !tbaa !9
  store double %192, ptr %193, align 8, !tbaa !5
  %194 = load double, ptr %13, align 8, !tbaa !5
  %195 = load ptr, ptr %8, align 8, !tbaa !9
  %196 = load double, ptr %195, align 8, !tbaa !5
  %197 = fmul double %194, %196
  %198 = load ptr, ptr %10, align 8, !tbaa !9
  store double %197, ptr %198, align 8, !tbaa !5
  %199 = load double, ptr %13, align 8, !tbaa !5
  %200 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %201 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %202 = fmul double %200, %201
  %203 = call double @pow(double noundef %199, double noundef %202) #5
  %204 = load double, ptr %17, align 8, !tbaa !5
  %205 = load double, ptr %32, align 8, !tbaa !5
  %206 = call double @pow(double noundef %204, double noundef %205) #5
  %207 = fmul double %203, %206
  %208 = load double, ptr %22, align 8, !tbaa !5
  %209 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %210 = call double @pow(double noundef %208, double noundef %209) #5
  %211 = fmul double %207, %210
  %212 = load double, ptr %31, align 8, !tbaa !5
  %213 = fmul double -2.000000e+00, %212
  %214 = call double @exp(double noundef %213) #5
  %215 = fmul double %211, %214
  %216 = load ptr, ptr %11, align 8, !tbaa !9
  store double %215, ptr %216, align 8, !tbaa !5
  %217 = load double, ptr %13, align 8, !tbaa !5
  %218 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %219 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %220 = fmul double %218, %219
  %221 = call double @pow(double noundef %217, double noundef %220) #5
  %222 = load double, ptr %17, align 8, !tbaa !5
  %223 = load double, ptr %33, align 8, !tbaa !5
  %224 = call double @pow(double noundef %222, double noundef %223) #5
  %225 = fmul double %221, %224
  %226 = load double, ptr %22, align 8, !tbaa !5
  %227 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %228 = fadd double 1.000000e+00, %227
  %229 = call double @pow(double noundef %226, double noundef %228) #5
  %230 = fmul double %225, %229
  %231 = load ptr, ptr %12, align 8, !tbaa !9
  store double %230, ptr %231, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  br label %429

232:                                              ; preds = %113
  %233 = load i8, ptr @_ZN13SedovSolution7lomega3E, align 1, !tbaa !11, !range !13, !noundef !14
  %234 = trunc i8 %233 to i1
  br i1 %234, label %235, label %342

235:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %236 = load double, ptr @_ZN13SedovSolution5e_valE, align 8, !tbaa !5
  %237 = fmul double 2.000000e+00, %236
  %238 = fdiv double 1.000000e+00, %237
  store double %238, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %239 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %240 = fmul double 5.000000e-01, %239
  store double %240, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %241 = load double, ptr @_ZN13SedovSolution2a3E, align 8, !tbaa !5
  %242 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %243 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %244 = call double @llvm.fmuladd.f64(double %242, double %243, double %241)
  store double %244, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %245 = load double, ptr %34, align 8, !tbaa !5
  %246 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %245, double 1.000000e+00)
  store double %246, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %247 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %248 = fneg double %247
  %249 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %250 = fmul double %248, %249
  %251 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %252 = fmul double %250, %251
  %253 = load double, ptr %34, align 8, !tbaa !5
  %254 = fmul double %252, %253
  %255 = load double, ptr %13, align 8, !tbaa !5
  %256 = fsub double 1.000000e+00, %255
  %257 = fmul double %254, %256
  %258 = load double, ptr %35, align 8, !tbaa !5
  %259 = load double, ptr %13, align 8, !tbaa !5
  %260 = fsub double %258, %259
  %261 = fdiv double %257, %260
  store double %261, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %262 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %263 = load double, ptr @_ZN13SedovSolution5gamm1E, align 8, !tbaa !5
  %264 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %265 = fneg double %264
  %266 = call double @llvm.fmuladd.f64(double %262, double %263, double %265)
  %267 = fmul double 2.000000e+00, %266
  %268 = load double, ptr %34, align 8, !tbaa !5
  %269 = fmul double %267, %268
  store double %269, ptr %39, align 8, !tbaa !5
  %270 = load double, ptr %13, align 8, !tbaa !5
  %271 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %272 = fneg double %271
  %273 = call double @pow(double noundef %270, double noundef %272) #5
  %274 = load double, ptr %17, align 8, !tbaa !5
  %275 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %276 = fneg double %275
  %277 = call double @pow(double noundef %274, double noundef %276) #5
  %278 = fmul double %273, %277
  %279 = load double, ptr %22, align 8, !tbaa !5
  %280 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %281 = fneg double %280
  %282 = call double @pow(double noundef %279, double noundef %281) #5
  %283 = fmul double %278, %282
  %284 = load ptr, ptr %8, align 8, !tbaa !9
  store double %283, ptr %284, align 8, !tbaa !5
  %285 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %286 = load double, ptr %14, align 8, !tbaa !5
  %287 = fmul double %285, %286
  %288 = load double, ptr %13, align 8, !tbaa !5
  %289 = fdiv double %287, %288
  %290 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %291 = load double, ptr %18, align 8, !tbaa !5
  %292 = fmul double %290, %291
  %293 = load double, ptr %17, align 8, !tbaa !5
  %294 = fdiv double %292, %293
  %295 = fadd double %289, %294
  %296 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %297 = load double, ptr %23, align 8, !tbaa !5
  %298 = fmul double %296, %297
  %299 = load double, ptr %22, align 8, !tbaa !5
  %300 = fdiv double %298, %299
  %301 = fadd double %295, %300
  %302 = fneg double %301
  %303 = load ptr, ptr %8, align 8, !tbaa !9
  %304 = load double, ptr %303, align 8, !tbaa !5
  %305 = fmul double %302, %304
  %306 = load ptr, ptr %9, align 8, !tbaa !9
  store double %305, ptr %306, align 8, !tbaa !5
  %307 = load double, ptr %13, align 8, !tbaa !5
  %308 = load ptr, ptr %8, align 8, !tbaa !9
  %309 = load double, ptr %308, align 8, !tbaa !5
  %310 = fmul double %307, %309
  %311 = load ptr, ptr %10, align 8, !tbaa !9
  store double %310, ptr %311, align 8, !tbaa !5
  %312 = load double, ptr %13, align 8, !tbaa !5
  %313 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %314 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %315 = fmul double %313, %314
  %316 = call double @pow(double noundef %312, double noundef %315) #5
  %317 = load double, ptr %17, align 8, !tbaa !5
  %318 = load double, ptr %36, align 8, !tbaa !5
  %319 = call double @pow(double noundef %317, double noundef %318) #5
  %320 = fmul double %316, %319
  %321 = load double, ptr %22, align 8, !tbaa !5
  %322 = load double, ptr %37, align 8, !tbaa !5
  %323 = call double @pow(double noundef %321, double noundef %322) #5
  %324 = fmul double %320, %323
  %325 = load double, ptr %38, align 8, !tbaa !5
  %326 = call double @exp(double noundef %325) #5
  %327 = fmul double %324, %326
  %328 = load ptr, ptr %11, align 8, !tbaa !9
  store double %327, ptr %328, align 8, !tbaa !5
  %329 = load double, ptr %13, align 8, !tbaa !5
  %330 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %331 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %332 = fmul double %330, %331
  %333 = call double @pow(double noundef %329, double noundef %332) #5
  %334 = load double, ptr %22, align 8, !tbaa !5
  %335 = load double, ptr %39, align 8, !tbaa !5
  %336 = call double @pow(double noundef %334, double noundef %335) #5
  %337 = fmul double %333, %336
  %338 = load double, ptr %38, align 8, !tbaa !5
  %339 = call double @exp(double noundef %338) #5
  %340 = fmul double %337, %339
  %341 = load ptr, ptr %12, align 8, !tbaa !9
  store double %340, ptr %341, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  br label %428

342:                                              ; preds = %232
  %343 = load double, ptr %13, align 8, !tbaa !5
  %344 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %345 = fneg double %344
  %346 = call double @pow(double noundef %343, double noundef %345) #5
  %347 = load double, ptr %17, align 8, !tbaa !5
  %348 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %349 = fneg double %348
  %350 = call double @pow(double noundef %347, double noundef %349) #5
  %351 = fmul double %346, %350
  %352 = load double, ptr %20, align 8, !tbaa !5
  %353 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %354 = fneg double %353
  %355 = call double @pow(double noundef %352, double noundef %354) #5
  %356 = fmul double %351, %355
  %357 = load ptr, ptr %8, align 8, !tbaa !9
  store double %356, ptr %357, align 8, !tbaa !5
  %358 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %359 = load double, ptr %14, align 8, !tbaa !5
  %360 = fmul double %358, %359
  %361 = load double, ptr %13, align 8, !tbaa !5
  %362 = fdiv double %360, %361
  %363 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %364 = load double, ptr %18, align 8, !tbaa !5
  %365 = fmul double %363, %364
  %366 = load double, ptr %17, align 8, !tbaa !5
  %367 = fdiv double %365, %366
  %368 = fadd double %362, %367
  %369 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %370 = load double, ptr %21, align 8, !tbaa !5
  %371 = fmul double %369, %370
  %372 = load double, ptr %20, align 8, !tbaa !5
  %373 = fdiv double %371, %372
  %374 = fadd double %368, %373
  %375 = fneg double %374
  %376 = load ptr, ptr %8, align 8, !tbaa !9
  %377 = load double, ptr %376, align 8, !tbaa !5
  %378 = fmul double %375, %377
  %379 = load ptr, ptr %9, align 8, !tbaa !9
  store double %378, ptr %379, align 8, !tbaa !5
  %380 = load double, ptr %13, align 8, !tbaa !5
  %381 = load ptr, ptr %8, align 8, !tbaa !9
  %382 = load double, ptr %381, align 8, !tbaa !5
  %383 = fmul double %380, %382
  %384 = load ptr, ptr %10, align 8, !tbaa !9
  store double %383, ptr %384, align 8, !tbaa !5
  %385 = load double, ptr %13, align 8, !tbaa !5
  %386 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %387 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %388 = fmul double %386, %387
  %389 = call double @pow(double noundef %385, double noundef %388) #5
  %390 = load double, ptr %17, align 8, !tbaa !5
  %391 = load double, ptr @_ZN13SedovSolution2a3E, align 8, !tbaa !5
  %392 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %393 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %394 = call double @llvm.fmuladd.f64(double %392, double %393, double %391)
  %395 = call double @pow(double noundef %390, double noundef %394) #5
  %396 = fmul double %389, %395
  %397 = load double, ptr %20, align 8, !tbaa !5
  %398 = load double, ptr @_ZN13SedovSolution2a4E, align 8, !tbaa !5
  %399 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %400 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %401 = call double @llvm.fmuladd.f64(double %399, double %400, double %398)
  %402 = call double @pow(double noundef %397, double noundef %401) #5
  %403 = fmul double %396, %402
  %404 = load double, ptr %22, align 8, !tbaa !5
  %405 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %406 = call double @pow(double noundef %404, double noundef %405) #5
  %407 = fmul double %403, %406
  %408 = load ptr, ptr %11, align 8, !tbaa !9
  store double %407, ptr %408, align 8, !tbaa !5
  %409 = load double, ptr %13, align 8, !tbaa !5
  %410 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %411 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %412 = fmul double %410, %411
  %413 = call double @pow(double noundef %409, double noundef %412) #5
  %414 = load double, ptr %20, align 8, !tbaa !5
  %415 = load double, ptr @_ZN13SedovSolution2a4E, align 8, !tbaa !5
  %416 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %417 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %418 = fsub double %417, 2.000000e+00
  %419 = call double @llvm.fmuladd.f64(double %416, double %418, double %415)
  %420 = call double @pow(double noundef %414, double noundef %419) #5
  %421 = fmul double %413, %420
  %422 = load double, ptr %22, align 8, !tbaa !5
  %423 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %424 = fadd double 1.000000e+00, %423
  %425 = call double @pow(double noundef %422, double noundef %424) #5
  %426 = fmul double %421, %425
  %427 = load ptr, ptr %12, align 8, !tbaa !9
  store double %426, ptr %427, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %342, %235
  br label %429

429:                                              ; preds = %428, %116
  br label %430

430:                                              ; preds = %429, %107
  br label %431

431:                                              ; preds = %430, %80
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  ret void
}

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

; Function Attrs: nounwind
declare double @exp(double noundef) #2

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

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

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

@_ZN13SedovSolution5xgeomE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5omegaE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5gammaE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5gamm1E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5gamp1E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution3xg2E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution9lsingularE = external dso_local local_unnamed_addr global i8, align 1
@_ZN13SedovSolution7lvacuumE = external dso_local local_unnamed_addr global i8, align 1
@_ZN13SedovSolution7lomega2E = external dso_local local_unnamed_addr global i8, align 1
@_ZN13SedovSolution7lomega3E = external dso_local local_unnamed_addr global i8, align 1
@_ZN13SedovSolution2a0E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2a1E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2a2E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2a3E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2a4E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2a5E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5a_valE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5b_valE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5c_valE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5d_valE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5e_valE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution5rwantE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution2r2E = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution3rvvE = external dso_local local_unnamed_addr global double, align 8
@_ZN13SedovSolution4eps2E = external dso_local constant double, align 8

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN13SedovSolution11sedov_funcsEdRdS0_S0_S0_S0_(double noundef %0, ptr nocapture noundef nonnull align 8 dereferenceable(8) %1, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %3, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %4, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %5) local_unnamed_addr #3 align 2 {
  %7 = alloca double, align 8
  %8 = load double, ptr @_ZN13SedovSolution5a_valE, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %9 = load double, ptr @_ZN13SedovSolution5c_valE, align 8, !tbaa !5
  %10 = tail call double @llvm.fmuladd.f64(double %9, double %0, double -1.000000e+00)
  store double %10, ptr %7, align 8, !tbaa !5
  %11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) @_ZN13SedovSolution4eps2E, ptr noundef nonnull align 8 dereferenceable(8) %7)
  %12 = load double, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  %13 = load double, ptr @_ZN13SedovSolution5b_valE, align 8, !tbaa !5
  %14 = insertelement <2 x double> poison, double %12, i64 0
  %15 = insertelement <2 x double> %14, double %8, i64 1
  %16 = insertelement <2 x double> poison, double %13, i64 0
  %17 = insertelement <2 x double> %16, double %0, i64 1
  %18 = fmul <2 x double> %15, %17
  %19 = load double, ptr @_ZN13SedovSolution5c_valE, align 8, !tbaa !5
  %20 = fmul double %13, %19
  %21 = load double, ptr @_ZN13SedovSolution5e_valE, align 8, !tbaa !5
  %22 = fneg double %21
  %23 = call double @llvm.fmuladd.f64(double %22, double %0, double 1.000000e+00)
  %24 = load double, ptr @_ZN13SedovSolution5d_valE, align 8, !tbaa !5
  %25 = fmul double %24, %23
  %26 = fneg double %24
  %27 = fmul double %21, %26
  %28 = load double, ptr @_ZN13SedovSolution3xg2E, align 8, !tbaa !5
  %29 = fmul double %28, -5.000000e-01
  %30 = call double @llvm.fmuladd.f64(double %29, double %0, double 1.000000e+00)
  %31 = fmul double %13, %30
  %32 = fmul double %13, 5.000000e-01
  %33 = fmul double %32, %28
  %34 = load i8, ptr @_ZN13SedovSolution9lsingularE, align 1, !tbaa !9, !range !11, !noundef !12
  %35 = trunc nuw i8 %34 to i1
  br i1 %35, label %36, label %47

36:                                               ; preds = %6
  %37 = load double, ptr @_ZN13SedovSolution5rwantE, align 8, !tbaa !5
  %38 = load double, ptr @_ZN13SedovSolution2r2E, align 8, !tbaa !5
  %39 = fdiv double %37, %38
  store double %39, ptr %1, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2, align 8, !tbaa !5
  %40 = load double, ptr %1, align 8, !tbaa !5
  store double %40, ptr %3, align 8, !tbaa !5
  %41 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %42 = fadd double %41, -2.000000e+00
  %43 = call double @pow(double noundef %40, double noundef %42) #5
  store double %43, ptr %4, align 8, !tbaa !5
  %44 = load double, ptr %1, align 8, !tbaa !5
  %45 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %46 = call double @pow(double noundef %44, double noundef %45) #5
  br label %285

47:                                               ; preds = %6
  %48 = load i8, ptr @_ZN13SedovSolution7lvacuumE, align 1, !tbaa !9, !range !11, !noundef !12
  %49 = trunc nuw i8 %48 to i1
  br i1 %49, label %50, label %55

50:                                               ; preds = %47
  %51 = load double, ptr @_ZN13SedovSolution5rwantE, align 8, !tbaa !5
  %52 = load double, ptr @_ZN13SedovSolution3rvvE, align 8, !tbaa !5
  %53 = fcmp olt double %51, %52
  br i1 %53, label %54, label %55

54:                                               ; preds = %50
  store double 0.000000e+00, ptr %1, align 8, !tbaa !5
  store double 0.000000e+00, ptr %2, align 8, !tbaa !5
  store double 0.000000e+00, ptr %3, align 8, !tbaa !5
  store double 0.000000e+00, ptr %4, align 8, !tbaa !5
  br label %285

55:                                               ; preds = %50, %47
  %56 = load i8, ptr @_ZN13SedovSolution7lomega2E, align 1, !tbaa !9, !range !11, !noundef !12
  %57 = trunc nuw i8 %56 to i1
  br i1 %57, label %58, label %136

58:                                               ; preds = %55
  %59 = fmul double %21, 2.000000e+00
  %60 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %61 = fmul double %60, 5.000000e-01
  %62 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %63 = fdiv double %61, %62
  %64 = extractelement <2 x double> %18, i64 1
  %65 = fsub double %64, %63
  %66 = fsub double 1.000000e+00, %64
  %67 = fneg double %60
  %68 = load double, ptr @_ZN13SedovSolution5gamm1E, align 8, !tbaa !5
  %69 = insertelement <2 x double> poison, double %59, i64 0
  %70 = insertelement <2 x double> %69, double %65, i64 1
  %71 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %70
  %72 = extractelement <2 x double> %71, i64 0
  %73 = fmul double %72, %67
  %74 = fmul double %8, %73
  %75 = extractelement <2 x double> %71, i64 1
  %76 = fmul double %74, %75
  %77 = insertelement <2 x double> poison, double %60, i64 0
  %78 = insertelement <2 x double> %77, double %66, i64 1
  %79 = fmul <2 x double> %71, %78
  %80 = extractelement <2 x double> %79, i64 1
  %81 = fadd double %80, 1.000000e+00
  %82 = fmul double %76, %81
  %83 = fmul double %72, %68
  %84 = extractelement <2 x double> %79, i64 0
  %85 = fmul double %84, %80
  %86 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %87 = fsub double 4.000000e+00, %86
  %88 = call double @llvm.fmuladd.f64(double %62, double -2.000000e+00, double %87)
  %89 = fmul double %72, %88
  %90 = fneg double %86
  %91 = fmul double %62, %90
  %92 = fmul double %72, %91
  %93 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %94 = fneg double %93
  %95 = call double @pow(double noundef %64, double noundef %94) #5
  %96 = extractelement <2 x double> %18, i64 0
  %97 = call double @pow(double noundef %96, double noundef %83) #5
  %98 = fmul double %95, %97
  %99 = call double @exp(double noundef %85) #5
  %100 = fmul double %98, %99
  store double %100, ptr %1, align 8, !tbaa !5
  %101 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %102 = fneg double %101
  %103 = insertelement <2 x double> %15, double %20, i64 0
  %104 = insertelement <2 x double> poison, double %83, i64 0
  %105 = insertelement <2 x double> %104, double %102, i64 1
  %106 = fmul <2 x double> %103, %105
  %107 = fdiv <2 x double> %106, %18
  %shift = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %108 = fadd <2 x double> %107, %shift
  %109 = extractelement <2 x double> %108, i64 0
  %110 = fadd double %82, %109
  %111 = fmul double %100, %110
  store double %111, ptr %2, align 8, !tbaa !5
  %112 = load double, ptr %1, align 8, !tbaa !5
  %113 = fmul double %64, %112
  store double %113, ptr %3, align 8, !tbaa !5
  %114 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %115 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %116 = fmul double %114, %115
  %117 = call double @pow(double noundef %64, double noundef %116) #5
  %118 = call double @pow(double noundef %96, double noundef %89) #5
  %119 = fmul double %117, %118
  %120 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %121 = call double @pow(double noundef %31, double noundef %120) #5
  %122 = fmul double %119, %121
  %123 = fmul double %85, -2.000000e+00
  %124 = call double @exp(double noundef %123) #5
  %125 = fmul double %122, %124
  store double %125, ptr %4, align 8, !tbaa !5
  %126 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %127 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %128 = fmul double %126, %127
  %129 = call double @pow(double noundef %64, double noundef %128) #5
  %130 = call double @pow(double noundef %96, double noundef %92) #5
  %131 = fmul double %129, %130
  %132 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %133 = fadd double %132, 1.000000e+00
  %134 = call double @pow(double noundef %31, double noundef %133) #5
  %135 = fmul double %131, %134
  br label %285

136:                                              ; preds = %55
  %137 = load i8, ptr @_ZN13SedovSolution7lomega3E, align 1, !tbaa !9, !range !11, !noundef !12
  %138 = trunc nuw i8 %137 to i1
  br i1 %138, label %139, label %216

139:                                              ; preds = %136
  %140 = fmul double %21, 2.000000e+00
  %141 = fdiv double 1.000000e+00, %140
  %142 = load double, ptr @_ZN13SedovSolution5gamp1E, align 8, !tbaa !5
  %143 = fmul double %142, 5.000000e-01
  %144 = load double, ptr @_ZN13SedovSolution2a3E, align 8, !tbaa !5
  %145 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %146 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %147 = call double @llvm.fmuladd.f64(double %145, double %146, double %144)
  %148 = call double @llvm.fmuladd.f64(double %141, double -4.000000e+00, double 1.000000e+00)
  %149 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %150 = fneg double %149
  %151 = load double, ptr @_ZN13SedovSolution5gammaE, align 8, !tbaa !5
  %152 = fmul double %151, %150
  %153 = fmul double %142, %152
  %154 = fmul double %141, %153
  %155 = extractelement <2 x double> %18, i64 1
  %156 = fsub double 1.000000e+00, %155
  %157 = fmul double %156, %154
  %158 = fsub double %143, %155
  %159 = fdiv double %157, %158
  %160 = load double, ptr @_ZN13SedovSolution5gamm1E, align 8, !tbaa !5
  %161 = fneg double %151
  %162 = call double @llvm.fmuladd.f64(double %149, double %160, double %161)
  %163 = fmul double %162, 2.000000e+00
  %164 = fmul double %141, %163
  %165 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %166 = fneg double %165
  %167 = call double @pow(double noundef %155, double noundef %166) #5
  %168 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %169 = fneg double %168
  %170 = extractelement <2 x double> %18, i64 0
  %171 = call double @pow(double noundef %170, double noundef %169) #5
  %172 = fmul double %167, %171
  %173 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %174 = fneg double %173
  %175 = call double @pow(double noundef %31, double noundef %174) #5
  %176 = fmul double %172, %175
  store double %176, ptr %1, align 8, !tbaa !5
  %177 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %178 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %179 = fmul double %20, %178
  %180 = fdiv double %179, %170
  %181 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %182 = insertelement <2 x double> poison, double %8, i64 0
  %183 = insertelement <2 x double> %182, double %33, i64 1
  %184 = insertelement <2 x double> poison, double %177, i64 0
  %185 = insertelement <2 x double> %184, double %181, i64 1
  %186 = fmul <2 x double> %183, %185
  %187 = shufflevector <2 x double> %18, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %188 = insertelement <2 x double> %187, double %31, i64 1
  %189 = fdiv <2 x double> %186, %188
  %190 = extractelement <2 x double> %189, i64 0
  %191 = fadd double %190, %180
  %192 = extractelement <2 x double> %189, i64 1
  %193 = fsub double %191, %192
  %194 = fneg double %193
  %195 = fmul double %176, %194
  store double %195, ptr %2, align 8, !tbaa !5
  %196 = load double, ptr %1, align 8, !tbaa !5
  %197 = fmul double %155, %196
  store double %197, ptr %3, align 8, !tbaa !5
  %198 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %199 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %200 = fmul double %198, %199
  %201 = call double @pow(double noundef %155, double noundef %200) #5
  %202 = call double @pow(double noundef %170, double noundef %147) #5
  %203 = fmul double %201, %202
  %204 = call double @pow(double noundef %31, double noundef %148) #5
  %205 = fmul double %203, %204
  %206 = call double @exp(double noundef %159) #5
  %207 = fmul double %205, %206
  store double %207, ptr %4, align 8, !tbaa !5
  %208 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %209 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %210 = fmul double %208, %209
  %211 = call double @pow(double noundef %155, double noundef %210) #5
  %212 = call double @pow(double noundef %31, double noundef %164) #5
  %213 = fmul double %211, %212
  %214 = call double @exp(double noundef %159) #5
  %215 = fmul double %213, %214
  br label %285

216:                                              ; preds = %136
  %217 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %218 = fneg double %217
  %219 = extractelement <2 x double> %18, i64 1
  %220 = call double @pow(double noundef %219, double noundef %218) #5
  %221 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %222 = fneg double %221
  %223 = extractelement <2 x double> %18, i64 0
  %224 = call double @pow(double noundef %223, double noundef %222) #5
  %225 = fmul double %220, %224
  %226 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %227 = fneg double %226
  %228 = call double @pow(double noundef %25, double noundef %227) #5
  %229 = fmul double %225, %228
  store double %229, ptr %1, align 8, !tbaa !5
  %230 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %231 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %232 = fmul double %20, %231
  %233 = fdiv double %232, %223
  %234 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %235 = insertelement <2 x double> poison, double %8, i64 0
  %236 = insertelement <2 x double> %235, double %27, i64 1
  %237 = insertelement <2 x double> poison, double %230, i64 0
  %238 = insertelement <2 x double> %237, double %234, i64 1
  %239 = fmul <2 x double> %236, %238
  %240 = shufflevector <2 x double> %18, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %241 = insertelement <2 x double> %240, double %25, i64 1
  %242 = fdiv <2 x double> %239, %241
  %243 = extractelement <2 x double> %242, i64 0
  %244 = fadd double %243, %233
  %245 = extractelement <2 x double> %242, i64 1
  %246 = fadd double %244, %245
  %247 = fneg double %246
  %248 = fmul double %229, %247
  store double %248, ptr %2, align 8, !tbaa !5
  %249 = load double, ptr %1, align 8, !tbaa !5
  %250 = fmul double %219, %249
  store double %250, ptr %3, align 8, !tbaa !5
  %251 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %252 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %253 = fmul double %251, %252
  %254 = call double @pow(double noundef %219, double noundef %253) #5
  %255 = load double, ptr @_ZN13SedovSolution2a3E, align 8, !tbaa !5
  %256 = load double, ptr @_ZN13SedovSolution2a2E, align 8, !tbaa !5
  %257 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %258 = call double @llvm.fmuladd.f64(double %256, double %257, double %255)
  %259 = call double @pow(double noundef %223, double noundef %258) #5
  %260 = fmul double %254, %259
  %261 = load double, ptr @_ZN13SedovSolution2a4E, align 8, !tbaa !5
  %262 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %263 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %264 = call double @llvm.fmuladd.f64(double %262, double %263, double %261)
  %265 = call double @pow(double noundef %25, double noundef %264) #5
  %266 = fmul double %260, %265
  %267 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %268 = call double @pow(double noundef %31, double noundef %267) #5
  %269 = fmul double %266, %268
  store double %269, ptr %4, align 8, !tbaa !5
  %270 = load double, ptr @_ZN13SedovSolution2a0E, align 8, !tbaa !5
  %271 = load double, ptr @_ZN13SedovSolution5xgeomE, align 8, !tbaa !5
  %272 = fmul double %270, %271
  %273 = call double @pow(double noundef %219, double noundef %272) #5
  %274 = load double, ptr @_ZN13SedovSolution2a4E, align 8, !tbaa !5
  %275 = load double, ptr @_ZN13SedovSolution2a1E, align 8, !tbaa !5
  %276 = load double, ptr @_ZN13SedovSolution5omegaE, align 8, !tbaa !5
  %277 = fadd double %276, -2.000000e+00
  %278 = call double @llvm.fmuladd.f64(double %275, double %277, double %274)
  %279 = call double @pow(double noundef %25, double noundef %278) #5
  %280 = fmul double %273, %279
  %281 = load double, ptr @_ZN13SedovSolution2a5E, align 8, !tbaa !5
  %282 = fadd double %281, 1.000000e+00
  %283 = call double @pow(double noundef %31, double noundef %282) #5
  %284 = fmul double %280, %283
  br label %285

285:                                              ; preds = %54, %139, %216, %58, %36
  %.sink = phi double [ 0.000000e+00, %54 ], [ %215, %139 ], [ %284, %216 ], [ %135, %58 ], [ %46, %36 ]
  store double %.sink, ptr %5, align 8, !tbaa !5
  ret void
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @exp(double noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { nounwind }

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

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


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass