; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (diffequations)

; 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.alglib_impl::odesolverstate" = type { i64, i64, double, double, double, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@_ZN11alglib_implL26odesolver_odesolvermaxgrowE = external hidden global double, align 8
@.str.18 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZN11alglib_implL28odesolver_odesolvermaxshrinkE = external hidden global double, align 8
@_ZN11alglib_implL34odesolver_odesolverguaranteeddecayE = external hidden global 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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl18odesolveriterationEPNS_14odesolverstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i8, align 1
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca i64, align 8
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #4
  %21 = load ptr, ptr %4, align 8, !tbaa !5
  %22 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %21, i32 0, i32 24
  %23 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %22, i32 0, i32 0
  %24 = load i32, ptr %23, align 8, !tbaa !9
  %25 = icmp sge i32 %24, 0
  br i1 %25, label %26, label %120

26:                                               ; preds = %2
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %27, i32 0, i32 24
  %29 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %28, i32 0, i32 1
  %30 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %29, i32 0, i32 4
  %31 = load ptr, ptr %30, align 8, !tbaa !19
  %32 = getelementptr inbounds i64, ptr %31, i64 0
  %33 = load i64, ptr %32, align 8, !tbaa !20
  store i64 %33, ptr %6, align 8, !tbaa !20
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %34, i32 0, i32 24
  %36 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %35, i32 0, i32 1
  %37 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %38 = load ptr, ptr %37, align 8, !tbaa !19
  %39 = getelementptr inbounds i64, ptr %38, i64 1
  %40 = load i64, ptr %39, align 8, !tbaa !20
  store i64 %40, ptr %7, align 8, !tbaa !20
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %41, i32 0, i32 24
  %43 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %42, i32 0, i32 1
  %44 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %43, i32 0, i32 4
  %45 = load ptr, ptr %44, align 8, !tbaa !19
  %46 = getelementptr inbounds i64, ptr %45, i64 2
  %47 = load i64, ptr %46, align 8, !tbaa !20
  store i64 %47, ptr %8, align 8, !tbaa !20
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %48, i32 0, i32 24
  %50 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %49, i32 0, i32 1
  %51 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %50, i32 0, i32 4
  %52 = load ptr, ptr %51, align 8, !tbaa !19
  %53 = getelementptr inbounds i64, ptr %52, i64 3
  %54 = load i64, ptr %53, align 8, !tbaa !20
  store i64 %54, ptr %9, align 8, !tbaa !20
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %55, i32 0, i32 24
  %57 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %56, i32 0, i32 1
  %58 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %57, i32 0, i32 4
  %59 = load ptr, ptr %58, align 8, !tbaa !19
  %60 = getelementptr inbounds i64, ptr %59, i64 4
  %61 = load i64, ptr %60, align 8, !tbaa !20
  store i64 %61, ptr %10, align 8, !tbaa !20
  %62 = load ptr, ptr %4, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %62, i32 0, i32 24
  %64 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %63, i32 0, i32 1
  %65 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %64, i32 0, i32 4
  %66 = load ptr, ptr %65, align 8, !tbaa !19
  %67 = getelementptr inbounds i64, ptr %66, i64 5
  %68 = load i64, ptr %67, align 8, !tbaa !20
  store i64 %68, ptr %18, align 8, !tbaa !20
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %69, i32 0, i32 24
  %71 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %70, i32 0, i32 2
  %72 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %71, i32 0, i32 4
  %73 = load ptr, ptr %72, align 8, !tbaa !19
  %74 = getelementptr inbounds i8, ptr %73, i64 0
  %75 = load i8, ptr %74, align 1, !tbaa !21, !range !22, !noundef !23
  %76 = trunc i8 %75 to i1
  %77 = zext i1 %76 to i8
  store i8 %77, ptr %15, align 1, !tbaa !21
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %78, i32 0, i32 24
  %80 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %79, i32 0, i32 3
  %81 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %80, i32 0, i32 4
  %82 = load ptr, ptr %81, align 8, !tbaa !19
  %83 = getelementptr inbounds double, ptr %82, i64 0
  %84 = load double, ptr %83, align 8, !tbaa !24
  store double %84, ptr %11, align 8, !tbaa !24
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %85, i32 0, i32 24
  %87 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %86, i32 0, i32 3
  %88 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %87, i32 0, i32 4
  %89 = load ptr, ptr %88, align 8, !tbaa !19
  %90 = getelementptr inbounds double, ptr %89, i64 1
  %91 = load double, ptr %90, align 8, !tbaa !24
  store double %91, ptr %12, align 8, !tbaa !24
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %92, i32 0, i32 24
  %94 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %93, i32 0, i32 3
  %95 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %94, i32 0, i32 4
  %96 = load ptr, ptr %95, align 8, !tbaa !19
  %97 = getelementptr inbounds double, ptr %96, i64 2
  %98 = load double, ptr %97, align 8, !tbaa !24
  store double %98, ptr %13, align 8, !tbaa !24
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %99, i32 0, i32 24
  %101 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %100, i32 0, i32 3
  %102 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %101, i32 0, i32 4
  %103 = load ptr, ptr %102, align 8, !tbaa !19
  %104 = getelementptr inbounds double, ptr %103, i64 3
  %105 = load double, ptr %104, align 8, !tbaa !24
  store double %105, ptr %14, align 8, !tbaa !24
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %106, i32 0, i32 24
  %108 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %107, i32 0, i32 3
  %109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %108, i32 0, i32 4
  %110 = load ptr, ptr %109, align 8, !tbaa !19
  %111 = getelementptr inbounds double, ptr %110, i64 4
  %112 = load double, ptr %111, align 8, !tbaa !24
  store double %112, ptr %16, align 8, !tbaa !24
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %113, i32 0, i32 24
  %115 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %114, i32 0, i32 3
  %116 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %115, i32 0, i32 4
  %117 = load ptr, ptr %116, align 8, !tbaa !19
  %118 = getelementptr inbounds double, ptr %117, i64 5
  %119 = load double, ptr %118, align 8, !tbaa !24
  store double %119, ptr %17, align 8, !tbaa !24
  br label %121

120:                                              ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !20
  store i64 -58, ptr %7, align 8, !tbaa !20
  store i64 -919, ptr %8, align 8, !tbaa !20
  store i64 -909, ptr %9, align 8, !tbaa !20
  store i64 81, ptr %10, align 8, !tbaa !20
  store i64 255, ptr %18, align 8, !tbaa !20
  store i8 0, ptr %15, align 1, !tbaa !21
  store double -7.880000e+02, ptr %11, align 8, !tbaa !24
  store double 8.090000e+02, ptr %12, align 8, !tbaa !24
  store double 2.050000e+02, ptr %13, align 8, !tbaa !24
  store double -8.380000e+02, ptr %14, align 8, !tbaa !24
  store double 9.390000e+02, ptr %16, align 8, !tbaa !24
  store double -5.260000e+02, ptr %17, align 8, !tbaa !24
  br label %121

121:                                              ; preds = %120, %26
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %122, i32 0, i32 24
  %124 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %123, i32 0, i32 0
  %125 = load i32, ptr %124, align 8, !tbaa !9
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %128

127:                                              ; preds = %121
  br label %597

128:                                              ; preds = %121
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %129, i32 0, i32 15
  %131 = load i64, ptr %130, align 8, !tbaa !25
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %133, label %136

133:                                              ; preds = %128
  store i8 0, ptr %19, align 1, !tbaa !21
  %134 = load i8, ptr %19, align 1, !tbaa !21, !range !22, !noundef !23
  %135 = trunc i8 %134 to i1
  store i1 %135, ptr %3, align 1
  store i32 1, ptr %20, align 4
  br label %938

136:                                              ; preds = %128
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %137, i32 0, i32 0
  %139 = load i64, ptr %138, align 8, !tbaa !26
  store i64 %139, ptr %6, align 8, !tbaa !20
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %140, i32 0, i32 1
  %142 = load i64, ptr %141, align 8, !tbaa !27
  store i64 %142, ptr %7, align 8, !tbaa !20
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %143, i32 0, i32 3
  %145 = load double, ptr %144, align 8, !tbaa !28
  store double %145, ptr %13, align 8, !tbaa !24
  %146 = load double, ptr @_ZN11alglib_implL26odesolver_odesolvermaxgrowE, align 8, !tbaa !24
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %146, double noundef 5.000000e+00, ptr noundef %147)
  store double %148, ptr %17, align 8, !tbaa !24
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %149, i32 0, i32 16
  store i64 0, ptr %150, align 8, !tbaa !29
  %151 = load ptr, ptr %4, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %151, i32 0, i32 3
  %153 = load double, ptr %152, align 8, !tbaa !28
  %154 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %153, double noundef 0.000000e+00)
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %154, ptr noundef @.str.18, ptr noundef %155)
  %156 = load i64, ptr %7, align 8, !tbaa !20
  %157 = icmp sgt i64 %156, 1
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %157, ptr noundef @.str.19, ptr noundef %158)
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %159, i32 0, i32 9
  %161 = load i64, ptr %160, align 8, !tbaa !30
  %162 = icmp ne i64 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %136
  br label %839

164:                                              ; preds = %136
  %165 = load ptr, ptr %4, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %165, i32 0, i32 19
  %167 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %166, i64 noundef 6, ptr noundef %167)
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %168, i32 0, i32 19
  %170 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %169, i32 0, i32 4
  %171 = load ptr, ptr %170, align 8, !tbaa !19
  %172 = getelementptr inbounds double, ptr %171, i64 0
  store double 0.000000e+00, ptr %172, align 8, !tbaa !24
  %173 = load ptr, ptr %4, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %173, i32 0, i32 19
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !19
  %177 = getelementptr inbounds double, ptr %176, i64 1
  store double 2.000000e-01, ptr %177, align 8, !tbaa !24
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %178, i32 0, i32 19
  %180 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %179, i32 0, i32 4
  %181 = load ptr, ptr %180, align 8, !tbaa !19
  %182 = getelementptr inbounds double, ptr %181, i64 2
  store double 3.000000e-01, ptr %182, align 8, !tbaa !24
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %183, i32 0, i32 19
  %185 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %184, i32 0, i32 4
  %186 = load ptr, ptr %185, align 8, !tbaa !19
  %187 = getelementptr inbounds double, ptr %186, i64 3
  store double 6.000000e-01, ptr %187, align 8, !tbaa !24
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %188, i32 0, i32 19
  %190 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %189, i32 0, i32 4
  %191 = load ptr, ptr %190, align 8, !tbaa !19
  %192 = getelementptr inbounds double, ptr %191, i64 4
  store double 1.000000e+00, ptr %192, align 8, !tbaa !24
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %193, i32 0, i32 19
  %195 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %194, i32 0, i32 4
  %196 = load ptr, ptr %195, align 8, !tbaa !19
  %197 = getelementptr inbounds double, ptr %196, i64 5
  store double 8.750000e-01, ptr %197, align 8, !tbaa !24
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %198, i32 0, i32 22
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %199, i64 noundef 6, i64 noundef 5, ptr noundef %200)
  %201 = load ptr, ptr %4, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %201, i32 0, i32 22
  %203 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %202, i32 0, i32 6
  %204 = load ptr, ptr %203, align 8, !tbaa !19
  %205 = getelementptr inbounds ptr, ptr %204, i64 1
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 0
  store double 2.000000e-01, ptr %207, align 8, !tbaa !24
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %208, i32 0, i32 22
  %210 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %209, i32 0, i32 6
  %211 = load ptr, ptr %210, align 8, !tbaa !19
  %212 = getelementptr inbounds ptr, ptr %211, i64 2
  %213 = load ptr, ptr %212, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 0
  store double 0x3FB3333333333333, ptr %214, align 8, !tbaa !24
  %215 = load ptr, ptr %4, align 8, !tbaa !5
  %216 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %215, i32 0, i32 22
  %217 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %216, i32 0, i32 6
  %218 = load ptr, ptr %217, align 8, !tbaa !19
  %219 = getelementptr inbounds ptr, ptr %218, i64 2
  %220 = load ptr, ptr %219, align 8, !tbaa !5
  %221 = getelementptr inbounds double, ptr %220, i64 1
  store double 2.250000e-01, ptr %221, align 8, !tbaa !24
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %222, i32 0, i32 22
  %224 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %223, i32 0, i32 6
  %225 = load ptr, ptr %224, align 8, !tbaa !19
  %226 = getelementptr inbounds ptr, ptr %225, i64 3
  %227 = load ptr, ptr %226, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 0
  store double 3.000000e-01, ptr %228, align 8, !tbaa !24
  %229 = load ptr, ptr %4, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %229, i32 0, i32 22
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %230, i32 0, i32 6
  %232 = load ptr, ptr %231, align 8, !tbaa !19
  %233 = getelementptr inbounds ptr, ptr %232, i64 3
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %235 = getelementptr inbounds double, ptr %234, i64 1
  store double -9.000000e-01, ptr %235, align 8, !tbaa !24
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %236, i32 0, i32 22
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %237, i32 0, i32 6
  %239 = load ptr, ptr %238, align 8, !tbaa !19
  %240 = getelementptr inbounds ptr, ptr %239, i64 3
  %241 = load ptr, ptr %240, align 8, !tbaa !5
  %242 = getelementptr inbounds double, ptr %241, i64 2
  store double 1.200000e+00, ptr %242, align 8, !tbaa !24
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %243, i32 0, i32 22
  %245 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %244, i32 0, i32 6
  %246 = load ptr, ptr %245, align 8, !tbaa !19
  %247 = getelementptr inbounds ptr, ptr %246, i64 4
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  %249 = getelementptr inbounds double, ptr %248, i64 0
  store double 0xBFCA12F684BDA12F, ptr %249, align 8, !tbaa !24
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %250, i32 0, i32 22
  %252 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %251, i32 0, i32 6
  %253 = load ptr, ptr %252, align 8, !tbaa !19
  %254 = getelementptr inbounds ptr, ptr %253, i64 4
  %255 = load ptr, ptr %254, align 8, !tbaa !5
  %256 = getelementptr inbounds double, ptr %255, i64 1
  store double 2.500000e+00, ptr %256, align 8, !tbaa !24
  %257 = load ptr, ptr %4, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %257, i32 0, i32 22
  %259 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %258, i32 0, i32 6
  %260 = load ptr, ptr %259, align 8, !tbaa !19
  %261 = getelementptr inbounds ptr, ptr %260, i64 4
  %262 = load ptr, ptr %261, align 8, !tbaa !5
  %263 = getelementptr inbounds double, ptr %262, i64 2
  store double 0xC004BDA12F684BDA, ptr %263, align 8, !tbaa !24
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %264, i32 0, i32 22
  %266 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %265, i32 0, i32 6
  %267 = load ptr, ptr %266, align 8, !tbaa !19
  %268 = getelementptr inbounds ptr, ptr %267, i64 4
  %269 = load ptr, ptr %268, align 8, !tbaa !5
  %270 = getelementptr inbounds double, ptr %269, i64 3
  store double 0x3FF4BDA12F684BDA, ptr %270, align 8, !tbaa !24
  %271 = load ptr, ptr %4, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %271, i32 0, i32 22
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %272, i32 0, i32 6
  %274 = load ptr, ptr %273, align 8, !tbaa !19
  %275 = getelementptr inbounds ptr, ptr %274, i64 5
  %276 = load ptr, ptr %275, align 8, !tbaa !5
  %277 = getelementptr inbounds double, ptr %276, i64 0
  store double 0x3F9E3425ED097B42, ptr %277, align 8, !tbaa !24
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %278, i32 0, i32 22
  %280 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %279, i32 0, i32 6
  %281 = load ptr, ptr %280, align 8, !tbaa !19
  %282 = getelementptr inbounds ptr, ptr %281, i64 5
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  store double 0x3FD5E00000000000, ptr %284, align 8, !tbaa !24
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %285, i32 0, i32 22
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %286, i32 0, i32 6
  %288 = load ptr, ptr %287, align 8, !tbaa !19
  %289 = getelementptr inbounds ptr, ptr %288, i64 5
  %290 = load ptr, ptr %289, align 8, !tbaa !5
  %291 = getelementptr inbounds double, ptr %290, i64 2
  store double 0x3FA54BDA12F684BE, ptr %291, align 8, !tbaa !24
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %292, i32 0, i32 22
  %294 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %293, i32 0, i32 6
  %295 = load ptr, ptr %294, align 8, !tbaa !19
  %296 = getelementptr inbounds ptr, ptr %295, i64 5
  %297 = load ptr, ptr %296, align 8, !tbaa !5
  %298 = getelementptr inbounds double, ptr %297, i64 3
  store double 0x3FD99F425ED097B4, ptr %298, align 8, !tbaa !24
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %299, i32 0, i32 22
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %300, i32 0, i32 6
  %302 = load ptr, ptr %301, align 8, !tbaa !19
  %303 = getelementptr inbounds ptr, ptr %302, i64 5
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = getelementptr inbounds double, ptr %304, i64 4
  store double 0x3FAFA00000000000, ptr %305, align 8, !tbaa !24
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %306, i32 0, i32 20
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %307, i64 noundef 6, ptr noundef %308)
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %309, i32 0, i32 20
  %311 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %310, i32 0, i32 4
  %312 = load ptr, ptr %311, align 8, !tbaa !19
  %313 = getelementptr inbounds double, ptr %312, i64 0
  store double 0x3FB90EE643B990EE, ptr %313, align 8, !tbaa !24
  %314 = load ptr, ptr %4, align 8, !tbaa !5
  %315 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %314, i32 0, i32 20
  %316 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %315, i32 0, i32 4
  %317 = load ptr, ptr %316, align 8, !tbaa !19
  %318 = getelementptr inbounds double, ptr %317, i64 1
  store double 0.000000e+00, ptr %318, align 8, !tbaa !24
  %319 = load ptr, ptr %4, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %319, i32 0, i32 20
  %321 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %320, i32 0, i32 4
  %322 = load ptr, ptr %321, align 8, !tbaa !19
  %323 = getelementptr inbounds double, ptr %322, i64 2
  store double 0x3FD9C3D02E2BB280, ptr %323, align 8, !tbaa !24
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %324, i32 0, i32 20
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %325, i32 0, i32 4
  %327 = load ptr, ptr %326, align 8, !tbaa !19
  %328 = getelementptr inbounds double, ptr %327, i64 3
  store double 0x3FCAEF9F76166929, ptr %328, align 8, !tbaa !24
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %329, i32 0, i32 20
  %331 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %330, i32 0, i32 4
  %332 = load ptr, ptr %331, align 8, !tbaa !19
  %333 = getelementptr inbounds double, ptr %332, i64 4
  store double 0.000000e+00, ptr %333, align 8, !tbaa !24
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %334, i32 0, i32 20
  %336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %335, i32 0, i32 4
  %337 = load ptr, ptr %336, align 8, !tbaa !19
  %338 = getelementptr inbounds double, ptr %337, i64 5
  store double 0x3FD280A685DAB4B0, ptr %338, align 8, !tbaa !24
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %339, i32 0, i32 21
  %341 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %340, i64 noundef 6, ptr noundef %341)
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %342, i32 0, i32 21
  %344 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %343, i32 0, i32 4
  %345 = load ptr, ptr %344, align 8, !tbaa !19
  %346 = getelementptr inbounds double, ptr %345, i64 0
  store double 0x3FBA284BDA12F685, ptr %346, align 8, !tbaa !24
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %347, i32 0, i32 21
  %349 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %348, i32 0, i32 4
  %350 = load ptr, ptr %349, align 8, !tbaa !19
  %351 = getelementptr inbounds double, ptr %350, i64 1
  store double 0.000000e+00, ptr %351, align 8, !tbaa !24
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %352, i32 0, i32 21
  %354 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %353, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !19
  %356 = getelementptr inbounds double, ptr %355, i64 2
  store double 0x3FD891F2747C9D1F, ptr %356, align 8, !tbaa !24
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %357, i32 0, i32 21
  %359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %358, i32 0, i32 4
  %360 = load ptr, ptr %359, align 8, !tbaa !19
  %361 = getelementptr inbounds double, ptr %360, i64 3
  store double 0x3FCF4ED097B425ED, ptr %361, align 8, !tbaa !24
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %362, i32 0, i32 21
  %364 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %363, i32 0, i32 4
  %365 = load ptr, ptr %364, align 8, !tbaa !19
  %366 = getelementptr inbounds double, ptr %365, i64 4
  store double 0x3F93C92492492492, ptr %366, align 8, !tbaa !24
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %367, i32 0, i32 21
  %369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %368, i32 0, i32 4
  %370 = load ptr, ptr %369, align 8, !tbaa !19
  %371 = getelementptr inbounds double, ptr %370, i64 5
  store double 2.500000e-01, ptr %371, align 8, !tbaa !24
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %372, i32 0, i32 23
  %374 = load i64, ptr %6, align 8, !tbaa !20
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %373, i64 noundef 6, i64 noundef %374, ptr noundef %375)
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %376, i32 0, i32 14
  %378 = load i64, ptr %7, align 8, !tbaa !20
  %379 = load i64, ptr %6, align 8, !tbaa !20
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %377, i64 noundef %378, i64 noundef %379, ptr noundef %380)
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %381, i32 0, i32 7
  %383 = load i64, ptr %6, align 8, !tbaa !20
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %382, i64 noundef %383, ptr noundef %384)
  %385 = load ptr, ptr %4, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %385, i32 0, i32 17
  %387 = load i64, ptr %6, align 8, !tbaa !20
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %386, i64 noundef %387, ptr noundef %388)
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %389, i32 0, i32 18
  %391 = load i64, ptr %6, align 8, !tbaa !20
  %392 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %390, i64 noundef %391, ptr noundef %392)
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %393, i32 0, i32 8
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %394, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !19
  %397 = getelementptr inbounds double, ptr %396, i64 0
  %398 = load double, ptr %397, align 8, !tbaa !24
  store double %398, ptr %11, align 8, !tbaa !24
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %399, i32 0, i32 14
  %401 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %400, i32 0, i32 6
  %402 = load ptr, ptr %401, align 8, !tbaa !19
  %403 = getelementptr inbounds ptr, ptr %402, i64 0
  %404 = load ptr, ptr %403, align 8, !tbaa !5
  %405 = getelementptr inbounds double, ptr %404, i64 0
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %406, i32 0, i32 6
  %408 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %408, align 8, !tbaa !19
  %410 = getelementptr inbounds double, ptr %409, i64 0
  %411 = load i64, ptr %6, align 8, !tbaa !20
  %412 = sub nsw i64 %411, 1
  %413 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %412)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %405, i64 noundef 1, ptr noundef %410, i64 noundef 1, i64 noundef %413)
  store i64 0, ptr %9, align 8, !tbaa !20
  br label %414

414:                                              ; preds = %426, %164
  %415 = load i64, ptr %9, align 8, !tbaa !20
  %416 = load i64, ptr %6, align 8, !tbaa !20
  %417 = sub nsw i64 %416, 1
  %418 = icmp sle i64 %415, %417
  br i1 %418, label %419, label %429

419:                                              ; preds = %414
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %420, i32 0, i32 7
  %422 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %421, i32 0, i32 4
  %423 = load ptr, ptr %422, align 8, !tbaa !19
  %424 = load i64, ptr %9, align 8, !tbaa !20
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  store double 0.000000e+00, ptr %425, align 8, !tbaa !24
  br label %426

426:                                              ; preds = %419
  %427 = load i64, ptr %9, align 8, !tbaa !20
  %428 = add nsw i64 %427, 1
  store i64 %428, ptr %9, align 8, !tbaa !20
  br label %414, !llvm.loop !31

429:                                              ; preds = %414
  store i64 1, ptr %8, align 8, !tbaa !20
  br label %430

430:                                              ; preds = %815, %429
  %431 = load i64, ptr %8, align 8, !tbaa !20
  %432 = load i64, ptr %7, align 8, !tbaa !20
  %433 = sub nsw i64 %432, 1
  %434 = icmp sgt i64 %431, %433
  br i1 %434, label %435, label %436

435:                                              ; preds = %430
  br label %834

436:                                              ; preds = %430
  br label %437

437:                                              ; preds = %814, %786, %436
  %438 = load double, ptr %11, align 8, !tbaa !24
  %439 = load double, ptr %13, align 8, !tbaa !24
  %440 = fadd double %438, %439
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %441, i32 0, i32 8
  %443 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %442, i32 0, i32 4
  %444 = load ptr, ptr %443, align 8, !tbaa !19
  %445 = load i64, ptr %8, align 8, !tbaa !20
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !24
  %448 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %440, double noundef %447)
  br i1 %448, label %449, label %459

449:                                              ; preds = %437
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %450, i32 0, i32 8
  %452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %451, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !19
  %454 = load i64, ptr %8, align 8, !tbaa !20
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !24
  %457 = load double, ptr %11, align 8, !tbaa !24
  %458 = fsub double %456, %457
  store double %458, ptr %13, align 8, !tbaa !24
  store i8 1, ptr %15, align 1, !tbaa !21
  br label %460

459:                                              ; preds = %437
  store i8 0, ptr %15, align 1, !tbaa !21
  br label %460

460:                                              ; preds = %459, %449
  store i64 0, ptr %9, align 8, !tbaa !20
  br label %461

461:                                              ; preds = %491, %460
  %462 = load i64, ptr %9, align 8, !tbaa !20
  %463 = load i64, ptr %6, align 8, !tbaa !20
  %464 = sub nsw i64 %463, 1
  %465 = icmp sle i64 %462, %464
  br i1 %465, label %466, label %494

466:                                              ; preds = %461
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %467, i32 0, i32 7
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %468, i32 0, i32 4
  %470 = load ptr, ptr %469, align 8, !tbaa !19
  %471 = load i64, ptr %9, align 8, !tbaa !20
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !24
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %474, i32 0, i32 6
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %476, align 8, !tbaa !19
  %478 = load i64, ptr %9, align 8, !tbaa !20
  %479 = getelementptr inbounds double, ptr %477, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !24
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  %482 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %480, ptr noundef %481)
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %473, double noundef %482, ptr noundef %483)
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %485, i32 0, i32 7
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %486, i32 0, i32 4
  %488 = load ptr, ptr %487, align 8, !tbaa !19
  %489 = load i64, ptr %9, align 8, !tbaa !20
  %490 = getelementptr inbounds double, ptr %488, i64 %489
  store double %484, ptr %490, align 8, !tbaa !24
  br label %491

491:                                              ; preds = %466
  %492 = load i64, ptr %9, align 8, !tbaa !20
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %9, align 8, !tbaa !20
  br label %461, !llvm.loop !33

494:                                              ; preds = %461
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %495, i32 0, i32 17
  %497 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %496, i32 0, i32 4
  %498 = load ptr, ptr %497, align 8, !tbaa !19
  %499 = getelementptr inbounds double, ptr %498, i64 0
  %500 = load ptr, ptr %4, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %500, i32 0, i32 6
  %502 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %501, i32 0, i32 4
  %503 = load ptr, ptr %502, align 8, !tbaa !19
  %504 = getelementptr inbounds double, ptr %503, i64 0
  %505 = load i64, ptr %6, align 8, !tbaa !20
  %506 = sub nsw i64 %505, 1
  %507 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %506)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %499, i64 noundef 1, ptr noundef %504, i64 noundef 1, i64 noundef %507)
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %508, i32 0, i32 18
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %509, i32 0, i32 4
  %511 = load ptr, ptr %510, align 8, !tbaa !19
  %512 = getelementptr inbounds double, ptr %511, i64 0
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %513, i32 0, i32 6
  %515 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %514, i32 0, i32 4
  %516 = load ptr, ptr %515, align 8, !tbaa !19
  %517 = getelementptr inbounds double, ptr %516, i64 0
  %518 = load i64, ptr %6, align 8, !tbaa !20
  %519 = sub nsw i64 %518, 1
  %520 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %519)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %512, i64 noundef 1, ptr noundef %517, i64 noundef 1, i64 noundef %520)
  store i64 0, ptr %10, align 8, !tbaa !20
  br label %521

521:                                              ; preds = %597, %494
  %522 = load i64, ptr %10, align 8, !tbaa !20
  %523 = icmp sgt i64 %522, 5
  br i1 %523, label %524, label %525

524:                                              ; preds = %521
  br label %678

525:                                              ; preds = %521
  %526 = load ptr, ptr %4, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %526, i32 0, i32 2
  %528 = load double, ptr %527, align 8, !tbaa !34
  %529 = load double, ptr %11, align 8, !tbaa !24
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %530, i32 0, i32 19
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %531, i32 0, i32 4
  %533 = load ptr, ptr %532, align 8, !tbaa !19
  %534 = load i64, ptr %10, align 8, !tbaa !20
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !24
  %537 = load double, ptr %13, align 8, !tbaa !24
  %538 = call double @llvm.fmuladd.f64(double %536, double %537, double %529)
  %539 = fmul double %528, %538
  %540 = load ptr, ptr %4, align 8, !tbaa !5
  %541 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %540, i32 0, i32 11
  store double %539, ptr %541, align 8, !tbaa !35
  %542 = load ptr, ptr %4, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %542, i32 0, i32 12
  %544 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %543, i32 0, i32 4
  %545 = load ptr, ptr %544, align 8, !tbaa !19
  %546 = getelementptr inbounds double, ptr %545, i64 0
  %547 = load ptr, ptr %4, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %547, i32 0, i32 6
  %549 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %548, i32 0, i32 4
  %550 = load ptr, ptr %549, align 8, !tbaa !19
  %551 = getelementptr inbounds double, ptr %550, i64 0
  %552 = load i64, ptr %6, align 8, !tbaa !20
  %553 = sub nsw i64 %552, 1
  %554 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %553)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %546, i64 noundef 1, ptr noundef %551, i64 noundef 1, i64 noundef %554)
  store i64 0, ptr %9, align 8, !tbaa !20
  br label %555

555:                                              ; preds = %588, %525
  %556 = load i64, ptr %9, align 8, !tbaa !20
  %557 = load i64, ptr %10, align 8, !tbaa !20
  %558 = sub nsw i64 %557, 1
  %559 = icmp sle i64 %556, %558
  br i1 %559, label %560, label %591

560:                                              ; preds = %555
  %561 = load ptr, ptr %4, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %561, i32 0, i32 22
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %562, i32 0, i32 6
  %564 = load ptr, ptr %563, align 8, !tbaa !19
  %565 = load i64, ptr %10, align 8, !tbaa !20
  %566 = getelementptr inbounds ptr, ptr %564, i64 %565
  %567 = load ptr, ptr %566, align 8, !tbaa !5
  %568 = load i64, ptr %9, align 8, !tbaa !20
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !24
  store double %570, ptr %12, align 8, !tbaa !24
  %571 = load ptr, ptr %4, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %571, i32 0, i32 12
  %573 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %572, i32 0, i32 4
  %574 = load ptr, ptr %573, align 8, !tbaa !19
  %575 = getelementptr inbounds double, ptr %574, i64 0
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %576, i32 0, i32 23
  %578 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %577, i32 0, i32 6
  %579 = load ptr, ptr %578, align 8, !tbaa !19
  %580 = load i64, ptr %9, align 8, !tbaa !20
  %581 = getelementptr inbounds ptr, ptr %579, i64 %580
  %582 = load ptr, ptr %581, align 8, !tbaa !5
  %583 = getelementptr inbounds double, ptr %582, i64 0
  %584 = load i64, ptr %6, align 8, !tbaa !20
  %585 = sub nsw i64 %584, 1
  %586 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %585)
  %587 = load double, ptr %12, align 8, !tbaa !24
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %575, i64 noundef 1, ptr noundef %583, i64 noundef 1, i64 noundef %586, double noundef %587)
  br label %588

588:                                              ; preds = %560
  %589 = load i64, ptr %9, align 8, !tbaa !20
  %590 = add nsw i64 %589, 1
  store i64 %590, ptr %9, align 8, !tbaa !20
  br label %555, !llvm.loop !36

591:                                              ; preds = %555
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %592, i32 0, i32 10
  store i8 1, ptr %593, align 8, !tbaa !37
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %594, i32 0, i32 24
  %596 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %595, i32 0, i32 0
  store i32 0, ptr %596, align 8, !tbaa !9
  br label %842

597:                                              ; preds = %127
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %598, i32 0, i32 10
  store i8 0, ptr %599, align 8, !tbaa !37
  %600 = load ptr, ptr %4, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %600, i32 0, i32 16
  %602 = load i64, ptr %601, align 8, !tbaa !29
  %603 = add nsw i64 %602, 1
  %604 = load ptr, ptr %4, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %604, i32 0, i32 16
  store i64 %603, ptr %605, align 8, !tbaa !29
  %606 = load double, ptr %13, align 8, !tbaa !24
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %607, i32 0, i32 2
  %609 = load double, ptr %608, align 8, !tbaa !34
  %610 = fmul double %606, %609
  store double %610, ptr %12, align 8, !tbaa !24
  %611 = load ptr, ptr %4, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %611, i32 0, i32 23
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %612, i32 0, i32 6
  %614 = load ptr, ptr %613, align 8, !tbaa !19
  %615 = load i64, ptr %10, align 8, !tbaa !20
  %616 = getelementptr inbounds ptr, ptr %614, i64 %615
  %617 = load ptr, ptr %616, align 8, !tbaa !5
  %618 = getelementptr inbounds double, ptr %617, i64 0
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  %620 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %619, i32 0, i32 13
  %621 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %620, i32 0, i32 4
  %622 = load ptr, ptr %621, align 8, !tbaa !19
  %623 = getelementptr inbounds double, ptr %622, i64 0
  %624 = load i64, ptr %6, align 8, !tbaa !20
  %625 = sub nsw i64 %624, 1
  %626 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %625)
  %627 = load double, ptr %12, align 8, !tbaa !24
  call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %618, i64 noundef 1, ptr noundef %623, i64 noundef 1, i64 noundef %626, double noundef %627)
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %628, i32 0, i32 20
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %629, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !19
  %632 = load i64, ptr %10, align 8, !tbaa !20
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !24
  store double %634, ptr %12, align 8, !tbaa !24
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %635, i32 0, i32 17
  %637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %636, i32 0, i32 4
  %638 = load ptr, ptr %637, align 8, !tbaa !19
  %639 = getelementptr inbounds double, ptr %638, i64 0
  %640 = load ptr, ptr %4, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %640, i32 0, i32 23
  %642 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %641, i32 0, i32 6
  %643 = load ptr, ptr %642, align 8, !tbaa !19
  %644 = load i64, ptr %10, align 8, !tbaa !20
  %645 = getelementptr inbounds ptr, ptr %643, i64 %644
  %646 = load ptr, ptr %645, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 0
  %648 = load i64, ptr %6, align 8, !tbaa !20
  %649 = sub nsw i64 %648, 1
  %650 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %649)
  %651 = load double, ptr %12, align 8, !tbaa !24
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %639, i64 noundef 1, ptr noundef %647, i64 noundef 1, i64 noundef %650, double noundef %651)
  %652 = load ptr, ptr %4, align 8, !tbaa !5
  %653 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %652, i32 0, i32 21
  %654 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %653, i32 0, i32 4
  %655 = load ptr, ptr %654, align 8, !tbaa !19
  %656 = load i64, ptr %10, align 8, !tbaa !20
  %657 = getelementptr inbounds double, ptr %655, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !24
  store double %658, ptr %12, align 8, !tbaa !24
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %659, i32 0, i32 18
  %661 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %660, i32 0, i32 4
  %662 = load ptr, ptr %661, align 8, !tbaa !19
  %663 = getelementptr inbounds double, ptr %662, i64 0
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %664, i32 0, i32 23
  %666 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %665, i32 0, i32 6
  %667 = load ptr, ptr %666, align 8, !tbaa !19
  %668 = load i64, ptr %10, align 8, !tbaa !20
  %669 = getelementptr inbounds ptr, ptr %667, i64 %668
  %670 = load ptr, ptr %669, align 8, !tbaa !5
  %671 = getelementptr inbounds double, ptr %670, i64 0
  %672 = load i64, ptr %6, align 8, !tbaa !20
  %673 = sub nsw i64 %672, 1
  %674 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %673)
  %675 = load double, ptr %12, align 8, !tbaa !24
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %663, i64 noundef 1, ptr noundef %671, i64 noundef 1, i64 noundef %674, double noundef %675)
  %676 = load i64, ptr %10, align 8, !tbaa !20
  %677 = add nsw i64 %676, 1
  store i64 %677, ptr %10, align 8, !tbaa !20
  br label %521

678:                                              ; preds = %524
  store double 0.000000e+00, ptr %16, align 8, !tbaa !24
  store i64 0, ptr %9, align 8, !tbaa !20
  br label %679

679:                                              ; preds = %745, %678
  %680 = load i64, ptr %9, align 8, !tbaa !20
  %681 = load i64, ptr %6, align 8, !tbaa !20
  %682 = sub nsw i64 %681, 1
  %683 = icmp sle i64 %680, %682
  br i1 %683, label %684, label %748

684:                                              ; preds = %679
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %685, i32 0, i32 5
  %687 = load i8, ptr %686, align 8, !tbaa !38, !range !22, !noundef !23
  %688 = trunc i8 %687 to i1
  br i1 %688, label %710, label %689

689:                                              ; preds = %684
  %690 = load double, ptr %16, align 8, !tbaa !24
  %691 = load ptr, ptr %4, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %691, i32 0, i32 17
  %693 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %692, i32 0, i32 4
  %694 = load ptr, ptr %693, align 8, !tbaa !19
  %695 = load i64, ptr %9, align 8, !tbaa !20
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !24
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %698, i32 0, i32 18
  %700 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %699, i32 0, i32 4
  %701 = load ptr, ptr %700, align 8, !tbaa !19
  %702 = load i64, ptr %9, align 8, !tbaa !20
  %703 = getelementptr inbounds double, ptr %701, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !24
  %705 = fsub double %697, %704
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %705, ptr noundef %706)
  %708 = load ptr, ptr %5, align 8, !tbaa !5
  %709 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %690, double noundef %707, ptr noundef %708)
  store double %709, ptr %16, align 8, !tbaa !24
  br label %744

710:                                              ; preds = %684
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %711, i32 0, i32 7
  %713 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %712, i32 0, i32 4
  %714 = load ptr, ptr %713, align 8, !tbaa !19
  %715 = load i64, ptr %9, align 8, !tbaa !20
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !24
  store double %717, ptr %12, align 8, !tbaa !24
  %718 = load double, ptr %12, align 8, !tbaa !24
  %719 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %718, double noundef 0.000000e+00)
  br i1 %719, label %720, label %721

720:                                              ; preds = %710
  store double 1.000000e+00, ptr %12, align 8, !tbaa !24
  br label %721

721:                                              ; preds = %720, %710
  %722 = load double, ptr %16, align 8, !tbaa !24
  %723 = load ptr, ptr %4, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %723, i32 0, i32 17
  %725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %724, i32 0, i32 4
  %726 = load ptr, ptr %725, align 8, !tbaa !19
  %727 = load i64, ptr %9, align 8, !tbaa !20
  %728 = getelementptr inbounds double, ptr %726, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !24
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %730, i32 0, i32 18
  %732 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %731, i32 0, i32 4
  %733 = load ptr, ptr %732, align 8, !tbaa !19
  %734 = load i64, ptr %9, align 8, !tbaa !20
  %735 = getelementptr inbounds double, ptr %733, i64 %734
  %736 = load double, ptr %735, align 8, !tbaa !24
  %737 = fsub double %729, %736
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %737, ptr noundef %738)
  %740 = load double, ptr %12, align 8, !tbaa !24
  %741 = fdiv double %739, %740
  %742 = load ptr, ptr %5, align 8, !tbaa !5
  %743 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %722, double noundef %741, ptr noundef %742)
  store double %743, ptr %16, align 8, !tbaa !24
  br label %744

744:                                              ; preds = %721, %689
  br label %745

745:                                              ; preds = %744
  %746 = load i64, ptr %9, align 8, !tbaa !20
  %747 = add nsw i64 %746, 1
  store i64 %747, ptr %9, align 8, !tbaa !20
  br label %679, !llvm.loop !39

748:                                              ; preds = %679
  %749 = load double, ptr %17, align 8, !tbaa !24
  %750 = load double, ptr %16, align 8, !tbaa !24
  %751 = fmul double %749, %750
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %752, i32 0, i32 4
  %754 = load double, ptr %753, align 8, !tbaa !40
  %755 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %751, double noundef %754)
  br i1 %755, label %756, label %760

756:                                              ; preds = %748
  %757 = load double, ptr @_ZN11alglib_implL26odesolver_odesolvermaxgrowE, align 8, !tbaa !24
  %758 = load double, ptr %13, align 8, !tbaa !24
  %759 = fmul double %757, %758
  store double %759, ptr %14, align 8, !tbaa !24
  br label %770

760:                                              ; preds = %748
  %761 = load double, ptr %13, align 8, !tbaa !24
  %762 = load ptr, ptr %4, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %762, i32 0, i32 4
  %764 = load double, ptr %763, align 8, !tbaa !40
  %765 = load double, ptr %16, align 8, !tbaa !24
  %766 = fdiv double %764, %765
  %767 = load ptr, ptr %5, align 8, !tbaa !5
  %768 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %766, double noundef 2.000000e-01, ptr noundef %767)
  %769 = fmul double %761, %768
  store double %769, ptr %14, align 8, !tbaa !24
  br label %770

770:                                              ; preds = %760, %756
  %771 = load double, ptr %14, align 8, !tbaa !24
  %772 = load double, ptr %13, align 8, !tbaa !24
  %773 = load double, ptr @_ZN11alglib_implL28odesolver_odesolvermaxshrinkE, align 8, !tbaa !24
  %774 = fdiv double %772, %773
  %775 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %771, double noundef %774)
  br i1 %775, label %776, label %780

776:                                              ; preds = %770
  %777 = load double, ptr %13, align 8, !tbaa !24
  %778 = load double, ptr @_ZN11alglib_implL28odesolver_odesolvermaxshrinkE, align 8, !tbaa !24
  %779 = fdiv double %777, %778
  store double %779, ptr %14, align 8, !tbaa !24
  br label %780

780:                                              ; preds = %776, %770
  %781 = load double, ptr %16, align 8, !tbaa !24
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %782, i32 0, i32 4
  %784 = load double, ptr %783, align 8, !tbaa !40
  %785 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %781, double noundef %784)
  br i1 %785, label %786, label %793

786:                                              ; preds = %780
  %787 = load double, ptr %14, align 8, !tbaa !24
  %788 = load double, ptr @_ZN11alglib_implL34odesolver_odesolverguaranteeddecayE, align 8, !tbaa !24
  %789 = load double, ptr %13, align 8, !tbaa !24
  %790 = fmul double %788, %789
  %791 = load ptr, ptr %5, align 8, !tbaa !5
  %792 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %787, double noundef %790, ptr noundef %791)
  store double %792, ptr %13, align 8, !tbaa !24
  br label %437

793:                                              ; preds = %780
  %794 = load double, ptr %11, align 8, !tbaa !24
  %795 = load double, ptr %13, align 8, !tbaa !24
  %796 = fadd double %794, %795
  store double %796, ptr %11, align 8, !tbaa !24
  %797 = load ptr, ptr %4, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %797, i32 0, i32 6
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %798, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !19
  %801 = getelementptr inbounds double, ptr %800, i64 0
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %802, i32 0, i32 17
  %804 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %803, i32 0, i32 4
  %805 = load ptr, ptr %804, align 8, !tbaa !19
  %806 = getelementptr inbounds double, ptr %805, i64 0
  %807 = load i64, ptr %6, align 8, !tbaa !20
  %808 = sub nsw i64 %807, 1
  %809 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %808)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %801, i64 noundef 1, ptr noundef %806, i64 noundef 1, i64 noundef %809)
  %810 = load double, ptr %14, align 8, !tbaa !24
  store double %810, ptr %13, align 8, !tbaa !24
  %811 = load i8, ptr %15, align 1, !tbaa !21, !range !22, !noundef !23
  %812 = trunc i8 %811 to i1
  br i1 %812, label %813, label %814

813:                                              ; preds = %793
  br label %815

814:                                              ; preds = %793
  br label %437

815:                                              ; preds = %813
  %816 = load ptr, ptr %4, align 8, !tbaa !5
  %817 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %816, i32 0, i32 14
  %818 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %817, i32 0, i32 6
  %819 = load ptr, ptr %818, align 8, !tbaa !19
  %820 = load i64, ptr %8, align 8, !tbaa !20
  %821 = getelementptr inbounds ptr, ptr %819, i64 %820
  %822 = load ptr, ptr %821, align 8, !tbaa !5
  %823 = getelementptr inbounds double, ptr %822, i64 0
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %824, i32 0, i32 6
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %825, i32 0, i32 4
  %827 = load ptr, ptr %826, align 8, !tbaa !19
  %828 = getelementptr inbounds double, ptr %827, i64 0
  %829 = load i64, ptr %6, align 8, !tbaa !20
  %830 = sub nsw i64 %829, 1
  %831 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %830)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %823, i64 noundef 1, ptr noundef %828, i64 noundef 1, i64 noundef %831)
  %832 = load i64, ptr %8, align 8, !tbaa !20
  %833 = add nsw i64 %832, 1
  store i64 %833, ptr %8, align 8, !tbaa !20
  br label %430

834:                                              ; preds = %435
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %835, i32 0, i32 15
  store i64 1, ptr %836, align 8, !tbaa !25
  store i8 0, ptr %19, align 1, !tbaa !21
  %837 = load i8, ptr %19, align 1, !tbaa !21, !range !22, !noundef !23
  %838 = trunc i8 %837 to i1
  store i1 %838, ptr %3, align 1
  store i32 1, ptr %20, align 4
  br label %938

839:                                              ; preds = %163
  store i8 0, ptr %19, align 1, !tbaa !21
  %840 = load i8, ptr %19, align 1, !tbaa !21, !range !22, !noundef !23
  %841 = trunc i8 %840 to i1
  store i1 %841, ptr %3, align 1
  store i32 1, ptr %20, align 4
  br label %938

842:                                              ; preds = %591
  store i8 1, ptr %19, align 1, !tbaa !21
  %843 = load i64, ptr %6, align 8, !tbaa !20
  %844 = load ptr, ptr %4, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %844, i32 0, i32 24
  %846 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %845, i32 0, i32 1
  %847 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %846, i32 0, i32 4
  %848 = load ptr, ptr %847, align 8, !tbaa !19
  %849 = getelementptr inbounds i64, ptr %848, i64 0
  store i64 %843, ptr %849, align 8, !tbaa !20
  %850 = load i64, ptr %7, align 8, !tbaa !20
  %851 = load ptr, ptr %4, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %851, i32 0, i32 24
  %853 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %852, i32 0, i32 1
  %854 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %853, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !19
  %856 = getelementptr inbounds i64, ptr %855, i64 1
  store i64 %850, ptr %856, align 8, !tbaa !20
  %857 = load i64, ptr %8, align 8, !tbaa !20
  %858 = load ptr, ptr %4, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %858, i32 0, i32 24
  %860 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %859, i32 0, i32 1
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %860, i32 0, i32 4
  %862 = load ptr, ptr %861, align 8, !tbaa !19
  %863 = getelementptr inbounds i64, ptr %862, i64 2
  store i64 %857, ptr %863, align 8, !tbaa !20
  %864 = load i64, ptr %9, align 8, !tbaa !20
  %865 = load ptr, ptr %4, align 8, !tbaa !5
  %866 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %865, i32 0, i32 24
  %867 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %866, i32 0, i32 1
  %868 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %867, i32 0, i32 4
  %869 = load ptr, ptr %868, align 8, !tbaa !19
  %870 = getelementptr inbounds i64, ptr %869, i64 3
  store i64 %864, ptr %870, align 8, !tbaa !20
  %871 = load i64, ptr %10, align 8, !tbaa !20
  %872 = load ptr, ptr %4, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %872, i32 0, i32 24
  %874 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %873, i32 0, i32 1
  %875 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %874, i32 0, i32 4
  %876 = load ptr, ptr %875, align 8, !tbaa !19
  %877 = getelementptr inbounds i64, ptr %876, i64 4
  store i64 %871, ptr %877, align 8, !tbaa !20
  %878 = load i64, ptr %18, align 8, !tbaa !20
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %879, i32 0, i32 24
  %881 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %880, i32 0, i32 1
  %882 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %881, i32 0, i32 4
  %883 = load ptr, ptr %882, align 8, !tbaa !19
  %884 = getelementptr inbounds i64, ptr %883, i64 5
  store i64 %878, ptr %884, align 8, !tbaa !20
  %885 = load i8, ptr %15, align 1, !tbaa !21, !range !22, !noundef !23
  %886 = trunc i8 %885 to i1
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %887, i32 0, i32 24
  %889 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %888, i32 0, i32 2
  %890 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %889, i32 0, i32 4
  %891 = load ptr, ptr %890, align 8, !tbaa !19
  %892 = getelementptr inbounds i8, ptr %891, i64 0
  %893 = zext i1 %886 to i8
  store i8 %893, ptr %892, align 1, !tbaa !21
  %894 = load double, ptr %11, align 8, !tbaa !24
  %895 = load ptr, ptr %4, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %895, i32 0, i32 24
  %897 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %896, i32 0, i32 3
  %898 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %897, i32 0, i32 4
  %899 = load ptr, ptr %898, align 8, !tbaa !19
  %900 = getelementptr inbounds double, ptr %899, i64 0
  store double %894, ptr %900, align 8, !tbaa !24
  %901 = load double, ptr %12, align 8, !tbaa !24
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %902, i32 0, i32 24
  %904 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %903, i32 0, i32 3
  %905 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %904, i32 0, i32 4
  %906 = load ptr, ptr %905, align 8, !tbaa !19
  %907 = getelementptr inbounds double, ptr %906, i64 1
  store double %901, ptr %907, align 8, !tbaa !24
  %908 = load double, ptr %13, align 8, !tbaa !24
  %909 = load ptr, ptr %4, align 8, !tbaa !5
  %910 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %909, i32 0, i32 24
  %911 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %910, i32 0, i32 3
  %912 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %911, i32 0, i32 4
  %913 = load ptr, ptr %912, align 8, !tbaa !19
  %914 = getelementptr inbounds double, ptr %913, i64 2
  store double %908, ptr %914, align 8, !tbaa !24
  %915 = load double, ptr %14, align 8, !tbaa !24
  %916 = load ptr, ptr %4, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %916, i32 0, i32 24
  %918 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %917, i32 0, i32 3
  %919 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %918, i32 0, i32 4
  %920 = load ptr, ptr %919, align 8, !tbaa !19
  %921 = getelementptr inbounds double, ptr %920, i64 3
  store double %915, ptr %921, align 8, !tbaa !24
  %922 = load double, ptr %16, align 8, !tbaa !24
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %923, i32 0, i32 24
  %925 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %924, i32 0, i32 3
  %926 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %925, i32 0, i32 4
  %927 = load ptr, ptr %926, align 8, !tbaa !19
  %928 = getelementptr inbounds double, ptr %927, i64 4
  store double %922, ptr %928, align 8, !tbaa !24
  %929 = load double, ptr %17, align 8, !tbaa !24
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::odesolverstate", ptr %930, i32 0, i32 24
  %932 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %931, i32 0, i32 3
  %933 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %932, i32 0, i32 4
  %934 = load ptr, ptr %933, align 8, !tbaa !19
  %935 = getelementptr inbounds double, ptr %934, i64 5
  store double %929, ptr %935, align 8, !tbaa !24
  %936 = load i8, ptr %19, align 1, !tbaa !21, !range !22, !noundef !23
  %937 = trunc i8 %936 to i1
  store i1 %937, ptr %3, align 1
  store i32 1, ptr %20, align 4
  br label %938

938:                                              ; preds = %842, %839, %834, %133
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  %939 = load i1, ptr %3, align 1
  ret i1 %939
}

declare noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) #1

declare void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #1

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef, double noundef) #1

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) #1

declare void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef, double noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef, double noundef) #1

declare noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !18, i64 968}
!10 = !{!"_ZTSN11alglib_impl14odesolverstateE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !13, i64 40, !14, i64 48, !14, i64 112, !14, i64 176, !11, i64 240, !13, i64 248, !12, i64 256, !14, i64 264, !14, i64 328, !16, i64 392, !11, i64 472, !11, i64 480, !14, i64 488, !14, i64 552, !14, i64 616, !14, i64 680, !14, i64 744, !16, i64 808, !16, i64 888, !17, i64 968}
!11 = !{!"long", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !15, i64 24, !7, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !15, i64 40, !7, i64 72}
!17 = !{!"_ZTSN11alglib_impl10rcommstateE", !18, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!18 = !{!"int", !7, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!11, !11, i64 0}
!21 = !{!13, !13, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!12, !12, i64 0}
!25 = !{!10, !11, i64 472}
!26 = !{!10, !11, i64 0}
!27 = !{!10, !11, i64 8}
!28 = !{!10, !12, i64 24}
!29 = !{!10, !11, i64 480}
!30 = !{!10, !11, i64 240}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = !{!10, !12, i64 16}
!35 = !{!10, !12, i64 256}
!36 = distinct !{!36, !32}
!37 = !{!10, !13, i64 248}
!38 = !{!10, !13, i64 40}
!39 = distinct !{!39, !32}
!40 = !{!10, !12, i64 32}


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

@_ZN11alglib_implL26odesolver_odesolvermaxgrowE = external hidden local_unnamed_addr global double, align 8
@.str.18 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZN11alglib_implL28odesolver_odesolvermaxshrinkE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL34odesolver_odesolverguaranteeddecayE = external hidden local_unnamed_addr global double, align 8

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl18odesolveriterationEPNS_14odesolverstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = getelementptr inbounds i8, ptr %0, i64 968
  %4 = load i32, ptr %3, align 8, !tbaa !5
  %5 = icmp sgt i32 %4, -1
  br i1 %5, label %6, label %.thread

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %0, i64 1032
  %8 = load ptr, ptr %7, align 8, !tbaa !18
  %9 = getelementptr inbounds i8, ptr %8, i64 40
  %10 = load i64, ptr %9, align 8, !tbaa !19
  %11 = getelementptr inbounds i8, ptr %0, i64 1160
  %12 = load ptr, ptr %11, align 8, !tbaa !18
  %13 = getelementptr inbounds i8, ptr %12, i64 8
  %14 = load double, ptr %13, align 8, !tbaa !20
  %15 = getelementptr inbounds i8, ptr %12, i64 24
  %16 = load double, ptr %15, align 8, !tbaa !20
  %17 = getelementptr inbounds i8, ptr %12, i64 32
  %18 = load double, ptr %17, align 8, !tbaa !20
  %19 = icmp eq i32 %4, 0
  br i1 %19, label %267, label %.thread

.thread:                                          ; preds = %2, %6
  %.0321 = phi i64 [ %10, %6 ], [ 255, %2 ]
  %.0248317 = phi double [ %18, %6 ], [ 9.390000e+02, %2 ]
  %.0255316 = phi double [ %16, %6 ], [ -8.380000e+02, %2 ]
  %.0266315 = phi double [ %14, %6 ], [ 8.090000e+02, %2 ]
  %20 = getelementptr inbounds i8, ptr %0, i64 472
  %21 = load i64, ptr %20, align 8, !tbaa !21
  %.not = icmp eq i64 %21, 0
  br i1 %.not, label %22, label %389

22:                                               ; preds = %.thread
  %23 = load i64, ptr %0, align 8, !tbaa !22
  %24 = getelementptr inbounds i8, ptr %0, i64 8
  %25 = load i64, ptr %24, align 8, !tbaa !23
  %26 = getelementptr inbounds i8, ptr %0, i64 24
  %27 = load double, ptr %26, align 8, !tbaa !24
  %28 = load double, ptr @_ZN11alglib_implL26odesolver_odesolvermaxgrowE, align 8, !tbaa !20
  %29 = tail call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %28, double noundef 5.000000e+00, ptr noundef %1)
  %30 = getelementptr inbounds i8, ptr %0, i64 480
  store i64 0, ptr %30, align 8, !tbaa !25
  %31 = load double, ptr %26, align 8, !tbaa !24
  %32 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %31, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.18, ptr noundef %1)
  %33 = icmp sgt i64 %25, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %33, ptr noundef nonnull @.str.19, ptr noundef %1)
  %34 = getelementptr inbounds i8, ptr %0, i64 240
  %35 = load i64, ptr %34, align 8, !tbaa !26
  %.not297 = icmp eq i64 %35, 0
  br i1 %.not297, label %36, label %389

36:                                               ; preds = %22
  %37 = getelementptr inbounds i8, ptr %0, i64 616
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef 6, ptr noundef %1)
  %38 = getelementptr inbounds i8, ptr %0, i64 672
  %39 = load ptr, ptr %38, align 8, !tbaa !18
  store double 0.000000e+00, ptr %39, align 8, !tbaa !20
  %40 = load ptr, ptr %38, align 8, !tbaa !18
  %41 = getelementptr inbounds i8, ptr %40, i64 8
  store double 2.000000e-01, ptr %41, align 8, !tbaa !20
  %42 = load ptr, ptr %38, align 8, !tbaa !18
  %43 = getelementptr inbounds i8, ptr %42, i64 16
  store double 3.000000e-01, ptr %43, align 8, !tbaa !20
  %44 = load ptr, ptr %38, align 8, !tbaa !18
  %45 = getelementptr inbounds i8, ptr %44, i64 24
  store double 6.000000e-01, ptr %45, align 8, !tbaa !20
  %46 = load ptr, ptr %38, align 8, !tbaa !18
  %47 = getelementptr inbounds i8, ptr %46, i64 32
  store double 1.000000e+00, ptr %47, align 8, !tbaa !20
  %48 = load ptr, ptr %38, align 8, !tbaa !18
  %49 = getelementptr inbounds i8, ptr %48, i64 40
  store double 8.750000e-01, ptr %49, align 8, !tbaa !20
  %50 = getelementptr inbounds i8, ptr %0, i64 808
  tail call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef 6, i64 noundef 5, ptr noundef %1)
  %51 = getelementptr inbounds i8, ptr %0, i64 880
  %52 = load ptr, ptr %51, align 8, !tbaa !18
  %53 = getelementptr inbounds i8, ptr %52, i64 8
  %54 = load ptr, ptr %53, align 8, !tbaa !27
  store double 2.000000e-01, ptr %54, align 8, !tbaa !20
  %55 = load ptr, ptr %51, align 8, !tbaa !18
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  %57 = load ptr, ptr %56, align 8, !tbaa !27
  store double 0x3FB3333333333333, ptr %57, align 8, !tbaa !20
  %58 = load ptr, ptr %51, align 8, !tbaa !18
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  %60 = load ptr, ptr %59, align 8, !tbaa !27
  %61 = getelementptr inbounds i8, ptr %60, i64 8
  store double 2.250000e-01, ptr %61, align 8, !tbaa !20
  %62 = load ptr, ptr %51, align 8, !tbaa !18
  %63 = getelementptr inbounds i8, ptr %62, i64 24
  %64 = load ptr, ptr %63, align 8, !tbaa !27
  store double 3.000000e-01, ptr %64, align 8, !tbaa !20
  %65 = load ptr, ptr %51, align 8, !tbaa !18
  %66 = getelementptr inbounds i8, ptr %65, i64 24
  %67 = load ptr, ptr %66, align 8, !tbaa !27
  %68 = getelementptr inbounds i8, ptr %67, i64 8
  store double -9.000000e-01, ptr %68, align 8, !tbaa !20
  %69 = load ptr, ptr %51, align 8, !tbaa !18
  %70 = getelementptr inbounds i8, ptr %69, i64 24
  %71 = load ptr, ptr %70, align 8, !tbaa !27
  %72 = getelementptr inbounds i8, ptr %71, i64 16
  store double 1.200000e+00, ptr %72, align 8, !tbaa !20
  %73 = load ptr, ptr %51, align 8, !tbaa !18
  %74 = getelementptr inbounds i8, ptr %73, i64 32
  %75 = load ptr, ptr %74, align 8, !tbaa !27
  store double 0xBFCA12F684BDA12F, ptr %75, align 8, !tbaa !20
  %76 = load ptr, ptr %51, align 8, !tbaa !18
  %77 = getelementptr inbounds i8, ptr %76, i64 32
  %78 = load ptr, ptr %77, align 8, !tbaa !27
  %79 = getelementptr inbounds i8, ptr %78, i64 8
  store double 2.500000e+00, ptr %79, align 8, !tbaa !20
  %80 = load ptr, ptr %51, align 8, !tbaa !18
  %81 = getelementptr inbounds i8, ptr %80, i64 32
  %82 = load ptr, ptr %81, align 8, !tbaa !27
  %83 = getelementptr inbounds i8, ptr %82, i64 16
  store double 0xC004BDA12F684BDA, ptr %83, align 8, !tbaa !20
  %84 = load ptr, ptr %51, align 8, !tbaa !18
  %85 = getelementptr inbounds i8, ptr %84, i64 32
  %86 = load ptr, ptr %85, align 8, !tbaa !27
  %87 = getelementptr inbounds i8, ptr %86, i64 24
  store double 0x3FF4BDA12F684BDA, ptr %87, align 8, !tbaa !20
  %88 = load ptr, ptr %51, align 8, !tbaa !18
  %89 = getelementptr inbounds i8, ptr %88, i64 40
  %90 = load ptr, ptr %89, align 8, !tbaa !27
  store double 0x3F9E3425ED097B42, ptr %90, align 8, !tbaa !20
  %91 = load ptr, ptr %51, align 8, !tbaa !18
  %92 = getelementptr inbounds i8, ptr %91, i64 40
  %93 = load ptr, ptr %92, align 8, !tbaa !27
  %94 = getelementptr inbounds i8, ptr %93, i64 8
  store double 0x3FD5E00000000000, ptr %94, align 8, !tbaa !20
  %95 = load ptr, ptr %51, align 8, !tbaa !18
  %96 = getelementptr inbounds i8, ptr %95, i64 40
  %97 = load ptr, ptr %96, align 8, !tbaa !27
  %98 = getelementptr inbounds i8, ptr %97, i64 16
  store double 0x3FA54BDA12F684BE, ptr %98, align 8, !tbaa !20
  %99 = load ptr, ptr %51, align 8, !tbaa !18
  %100 = getelementptr inbounds i8, ptr %99, i64 40
  %101 = load ptr, ptr %100, align 8, !tbaa !27
  %102 = getelementptr inbounds i8, ptr %101, i64 24
  store double 0x3FD99F425ED097B4, ptr %102, align 8, !tbaa !20
  %103 = load ptr, ptr %51, align 8, !tbaa !18
  %104 = getelementptr inbounds i8, ptr %103, i64 40
  %105 = load ptr, ptr %104, align 8, !tbaa !27
  %106 = getelementptr inbounds i8, ptr %105, i64 32
  store double 0x3FAFA00000000000, ptr %106, align 8, !tbaa !20
  %107 = getelementptr inbounds i8, ptr %0, i64 680
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %107, i64 noundef 6, ptr noundef %1)
  %108 = getelementptr inbounds i8, ptr %0, i64 736
  %109 = load ptr, ptr %108, align 8, !tbaa !18
  store double 0x3FB90EE643B990EE, ptr %109, align 8, !tbaa !20
  %110 = load ptr, ptr %108, align 8, !tbaa !18
  %111 = getelementptr inbounds i8, ptr %110, i64 8
  store double 0.000000e+00, ptr %111, align 8, !tbaa !20
  %112 = load ptr, ptr %108, align 8, !tbaa !18
  %113 = getelementptr inbounds i8, ptr %112, i64 16
  store double 0x3FD9C3D02E2BB280, ptr %113, align 8, !tbaa !20
  %114 = load ptr, ptr %108, align 8, !tbaa !18
  %115 = getelementptr inbounds i8, ptr %114, i64 24
  store double 0x3FCAEF9F76166929, ptr %115, align 8, !tbaa !20
  %116 = load ptr, ptr %108, align 8, !tbaa !18
  %117 = getelementptr inbounds i8, ptr %116, i64 32
  store double 0.000000e+00, ptr %117, align 8, !tbaa !20
  %118 = load ptr, ptr %108, align 8, !tbaa !18
  %119 = getelementptr inbounds i8, ptr %118, i64 40
  store double 0x3FD280A685DAB4B0, ptr %119, align 8, !tbaa !20
  %120 = getelementptr inbounds i8, ptr %0, i64 744
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %120, i64 noundef 6, ptr noundef %1)
  %121 = getelementptr inbounds i8, ptr %0, i64 800
  %122 = load ptr, ptr %121, align 8, !tbaa !18
  store double 0x3FBA284BDA12F685, ptr %122, align 8, !tbaa !20
  %123 = load ptr, ptr %121, align 8, !tbaa !18
  %124 = getelementptr inbounds i8, ptr %123, i64 8
  store double 0.000000e+00, ptr %124, align 8, !tbaa !20
  %125 = load ptr, ptr %121, align 8, !tbaa !18
  %126 = getelementptr inbounds i8, ptr %125, i64 16
  store double 0x3FD891F2747C9D1F, ptr %126, align 8, !tbaa !20
  %127 = load ptr, ptr %121, align 8, !tbaa !18
  %128 = getelementptr inbounds i8, ptr %127, i64 24
  store double 0x3FCF4ED097B425ED, ptr %128, align 8, !tbaa !20
  %129 = load ptr, ptr %121, align 8, !tbaa !18
  %130 = getelementptr inbounds i8, ptr %129, i64 32
  store double 0x3F93C92492492492, ptr %130, align 8, !tbaa !20
  %131 = load ptr, ptr %121, align 8, !tbaa !18
  %132 = getelementptr inbounds i8, ptr %131, i64 40
  store double 2.500000e-01, ptr %132, align 8, !tbaa !20
  %133 = getelementptr inbounds i8, ptr %0, i64 888
  tail call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %133, i64 noundef 6, i64 noundef %23, ptr noundef %1)
  %134 = getelementptr inbounds i8, ptr %0, i64 392
  tail call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %134, i64 noundef %25, i64 noundef %23, ptr noundef %1)
  %135 = getelementptr inbounds i8, ptr %0, i64 112
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %135, i64 noundef %23, ptr noundef %1)
  %136 = getelementptr inbounds i8, ptr %0, i64 488
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %136, i64 noundef %23, ptr noundef %1)
  %137 = getelementptr inbounds i8, ptr %0, i64 552
  tail call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %137, i64 noundef %23, ptr noundef %1)
  %138 = getelementptr inbounds i8, ptr %0, i64 232
  %139 = load ptr, ptr %138, align 8, !tbaa !18
  %140 = load double, ptr %139, align 8, !tbaa !20
  %141 = getelementptr inbounds i8, ptr %0, i64 464
  %142 = load ptr, ptr %141, align 8, !tbaa !18
  %143 = load ptr, ptr %142, align 8, !tbaa !27
  %144 = getelementptr inbounds i8, ptr %0, i64 104
  %145 = load ptr, ptr %144, align 8, !tbaa !18
  %146 = add nsw i64 %23, -1
  %147 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %146)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %143, i64 noundef 1, ptr noundef %145, i64 noundef 1, i64 noundef %147)
  %.not298.not322 = icmp sgt i64 %23, 0
  br i1 %.not298.not322, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %36
  %148 = getelementptr inbounds i8, ptr %0, i64 168
  %xtraiter = and i64 %23, 3
  %149 = icmp ult i64 %23, 4
  br i1 %149, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %23, 9223372036854775804
  br label %150

150:                                              ; preds = %150, %.lr.ph.new
  %.0278323 = phi i64 [ 0, %.lr.ph.new ], [ %162, %150 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %150 ]
  %151 = load ptr, ptr %148, align 8, !tbaa !18
  %152 = getelementptr inbounds double, ptr %151, i64 %.0278323
  store double 0.000000e+00, ptr %152, align 8, !tbaa !20
  %153 = or disjoint i64 %.0278323, 1
  %154 = load ptr, ptr %148, align 8, !tbaa !18
  %155 = getelementptr inbounds double, ptr %154, i64 %153
  store double 0.000000e+00, ptr %155, align 8, !tbaa !20
  %156 = or disjoint i64 %.0278323, 2
  %157 = load ptr, ptr %148, align 8, !tbaa !18
  %158 = getelementptr inbounds double, ptr %157, i64 %156
  store double 0.000000e+00, ptr %158, align 8, !tbaa !20
  %159 = or disjoint i64 %.0278323, 3
  %160 = load ptr, ptr %148, align 8, !tbaa !18
  %161 = getelementptr inbounds double, ptr %160, i64 %159
  store double 0.000000e+00, ptr %161, align 8, !tbaa !20
  %162 = add nuw nsw i64 %.0278323, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %150, !llvm.loop !28

.loopexit.loopexit.unr-lcssa:                     ; preds = %150, %.lr.ph
  %.0278323.unr = phi i64 [ 0, %.lr.ph ], [ %162, %150 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader
  %.0278323.epil = phi i64 [ %165, %.epil.preheader ], [ %.0278323.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %163 = load ptr, ptr %148, align 8, !tbaa !18
  %164 = getelementptr inbounds double, ptr %163, i64 %.0278323.epil
  store double 0.000000e+00, ptr %164, align 8, !tbaa !20
  %165 = add nuw nsw i64 %.0278323.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.epil.preheader, !llvm.loop !30

.loopexit:                                        ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader, %36, %379
  %.0320 = phi i64 [ %.0318, %379 ], [ %.0321, %36 ], [ %.0321, %.epil.preheader ], [ %.0321, %.loopexit.loopexit.unr-lcssa ]
  %.1291 = phi i64 [ %.3293, %379 ], [ %23, %36 ], [ %23, %.epil.preheader ], [ %23, %.loopexit.loopexit.unr-lcssa ]
  %.1287 = phi i64 [ %.3289, %379 ], [ %25, %36 ], [ %25, %.epil.preheader ], [ %25, %.loopexit.loopexit.unr-lcssa ]
  %.1283 = phi i64 [ %386, %379 ], [ 1, %36 ], [ 1, %.epil.preheader ], [ 1, %.loopexit.loopexit.unr-lcssa ]
  %.1273 = phi double [ %372, %379 ], [ %140, %36 ], [ %140, %.epil.preheader ], [ %140, %.loopexit.loopexit.unr-lcssa ]
  %.1267 = phi double [ %.5271.lcssa, %379 ], [ %.0266315, %36 ], [ %.0266315, %.epil.preheader ], [ %.0266315, %.loopexit.loopexit.unr-lcssa ]
  %.1262 = phi double [ %.5260, %379 ], [ %27, %36 ], [ %27, %.epil.preheader ], [ %27, %.loopexit.loopexit.unr-lcssa ]
  %.1256 = phi double [ %.5260, %379 ], [ %.0255316, %36 ], [ %.0255316, %.epil.preheader ], [ %.0255316, %.loopexit.loopexit.unr-lcssa ]
  %.1249 = phi double [ %.4.lcssa, %379 ], [ %.0248317, %36 ], [ %.0248317, %.epil.preheader ], [ %.0248317, %.loopexit.loopexit.unr-lcssa ]
  %.1 = phi double [ %.3, %379 ], [ %29, %36 ], [ %29, %.epil.preheader ], [ %29, %.loopexit.loopexit.unr-lcssa ]
  %.not301 = icmp slt i64 %.1283, %.1287
  br i1 %.not301, label %166, label %387

166:                                              ; preds = %371, %.loopexit, %367
  %.0319 = phi i64 [ %.0318, %367 ], [ %.0320, %.loopexit ], [ %.0318, %371 ]
  %.2292 = phi i64 [ %.3293, %367 ], [ %.1291, %.loopexit ], [ %.3293, %371 ]
  %.2288 = phi i64 [ %.3289, %367 ], [ %.1287, %.loopexit ], [ %.3289, %371 ]
  %.2284 = phi i64 [ %.3285, %367 ], [ %.1283, %.loopexit ], [ %.3285, %371 ]
  %.2274 = phi double [ %.3275, %367 ], [ %.1273, %.loopexit ], [ %372, %371 ]
  %.2268 = phi double [ %.5271.lcssa, %367 ], [ %.1267, %.loopexit ], [ %.5271.lcssa, %371 ]
  %.2263 = phi double [ %370, %367 ], [ %.1262, %.loopexit ], [ %.5260, %371 ]
  %.2257 = phi double [ %.5260, %367 ], [ %.1256, %.loopexit ], [ %.5260, %371 ]
  %.2250 = phi double [ %.4.lcssa, %367 ], [ %.1249, %.loopexit ], [ %.4.lcssa, %371 ]
  %.2 = phi double [ %.3, %367 ], [ %.1, %.loopexit ], [ %.3, %371 ]
  %167 = fadd double %.2274, %.2263
  %168 = getelementptr inbounds i8, ptr %0, i64 232
  %169 = load ptr, ptr %168, align 8, !tbaa !18
  %170 = getelementptr inbounds double, ptr %169, i64 %.2284
  %171 = load double, ptr %170, align 8, !tbaa !20
  %172 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %167, double noundef %171)
  br i1 %172, label %173, label %178

173:                                              ; preds = %166
  %174 = load ptr, ptr %168, align 8, !tbaa !18
  %175 = getelementptr inbounds double, ptr %174, i64 %.2284
  %176 = load double, ptr %175, align 8, !tbaa !20
  %177 = fsub double %176, %.2274
  br label %178

178:                                              ; preds = %166, %173
  %.3264 = phi double [ %177, %173 ], [ %.2263, %166 ]
  %.1253 = phi i8 [ 1, %173 ], [ 0, %166 ]
  %.not302.not336 = icmp sgt i64 %.2292, 0
  br i1 %.not302.not336, label %.lr.ph339, label %._crit_edge340

.lr.ph339:                                        ; preds = %178
  %179 = getelementptr inbounds i8, ptr %0, i64 168
  %180 = getelementptr inbounds i8, ptr %0, i64 104
  br label %181

181:                                              ; preds = %.lr.ph339, %181
  %.1279337 = phi i64 [ 0, %.lr.ph339 ], [ %192, %181 ]
  %182 = load ptr, ptr %179, align 8, !tbaa !18
  %183 = getelementptr inbounds double, ptr %182, i64 %.1279337
  %184 = load double, ptr %183, align 8, !tbaa !20
  %185 = load ptr, ptr %180, align 8, !tbaa !18
  %186 = getelementptr inbounds double, ptr %185, i64 %.1279337
  %187 = load double, ptr %186, align 8, !tbaa !20
  %188 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %187, ptr noundef %1)
  %189 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %184, double noundef %188, ptr noundef %1)
  %190 = load ptr, ptr %179, align 8, !tbaa !18
  %191 = getelementptr inbounds double, ptr %190, i64 %.1279337
  store double %189, ptr %191, align 8, !tbaa !20
  %192 = add nuw nsw i64 %.1279337, 1
  %exitcond344.not = icmp eq i64 %192, %.2292
  br i1 %exitcond344.not, label %._crit_edge340, label %181, !llvm.loop !32

._crit_edge340:                                   ; preds = %181, %178
  %193 = add nsw i64 %.2292, -1
  %194 = getelementptr inbounds i8, ptr %0, i64 544
  %195 = load ptr, ptr %194, align 8, !tbaa !18
  %196 = getelementptr inbounds i8, ptr %0, i64 104
  %197 = load ptr, ptr %196, align 8, !tbaa !18
  %198 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %193)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %195, i64 noundef 1, ptr noundef %197, i64 noundef 1, i64 noundef %198)
  %199 = getelementptr inbounds i8, ptr %0, i64 608
  %200 = load ptr, ptr %199, align 8, !tbaa !18
  %201 = load ptr, ptr %196, align 8, !tbaa !18
  %202 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %193)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %200, i64 noundef 1, ptr noundef %201, i64 noundef 1, i64 noundef %202)
  br label %203

203:                                              ; preds = %267, %._crit_edge340
  %.0318 = phi i64 [ %10, %267 ], [ %.0319, %._crit_edge340 ]
  %.3293 = phi i64 [ %282, %267 ], [ %.2292, %._crit_edge340 ]
  %.3289 = phi i64 [ %281, %267 ], [ %.2288, %._crit_edge340 ]
  %.3285 = phi i64 [ %279, %267 ], [ %.2284, %._crit_edge340 ]
  %.1277 = phi i64 [ %318, %267 ], [ 0, %._crit_edge340 ]
  %.3275 = phi double [ %272, %267 ], [ %.2274, %._crit_edge340 ]
  %.3269 = phi double [ %311, %267 ], [ %.2268, %._crit_edge340 ]
  %.4265 = phi double [ %271, %267 ], [ %.3264, %._crit_edge340 ]
  %.3258 = phi double [ %16, %267 ], [ %.2257, %._crit_edge340 ]
  %.2254 = phi i8 [ %275, %267 ], [ %.1253, %._crit_edge340 ]
  %.3251 = phi double [ %18, %267 ], [ %.2250, %._crit_edge340 ]
  %.3 = phi double [ %269, %267 ], [ %.2, %._crit_edge340 ]
  %204 = icmp sgt i64 %.1277, 5
  br i1 %204, label %.preheader, label %209

.preheader:                                       ; preds = %203
  %.not300.not328 = icmp sgt i64 %.3293, 0
  br i1 %.not300.not328, label %.lr.ph332, label %._crit_edge333

.lr.ph332:                                        ; preds = %.preheader
  %205 = getelementptr inbounds i8, ptr %0, i64 40
  %206 = getelementptr inbounds i8, ptr %0, i64 544
  %207 = getelementptr inbounds i8, ptr %0, i64 608
  %208 = getelementptr inbounds i8, ptr %0, i64 168
  br label %319

209:                                              ; preds = %203
  %210 = getelementptr inbounds i8, ptr %0, i64 16
  %211 = load double, ptr %210, align 8, !tbaa !33
  %212 = getelementptr inbounds i8, ptr %0, i64 672
  %213 = load ptr, ptr %212, align 8, !tbaa !18
  %214 = getelementptr inbounds double, ptr %213, i64 %.1277
  %215 = load double, ptr %214, align 8, !tbaa !20
  %216 = tail call double @llvm.fmuladd.f64(double %215, double %.4265, double %.3275)
  %217 = fmul double %211, %216
  %218 = getelementptr inbounds i8, ptr %0, i64 256
  store double %217, ptr %218, align 8, !tbaa !34
  %219 = getelementptr inbounds i8, ptr %0, i64 320
  %220 = load ptr, ptr %219, align 8, !tbaa !18
  %221 = getelementptr inbounds i8, ptr %0, i64 104
  %222 = load ptr, ptr %221, align 8, !tbaa !18
  %223 = add nsw i64 %.3293, -1
  %224 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %223)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %220, i64 noundef 1, ptr noundef %222, i64 noundef 1, i64 noundef %224)
  %.not299.not324 = icmp sgt i64 %.1277, 0
  br i1 %.not299.not324, label %.lr.ph326, label %._crit_edge

.lr.ph326:                                        ; preds = %209
  %225 = getelementptr inbounds i8, ptr %0, i64 880
  %226 = getelementptr inbounds i8, ptr %0, i64 960
  br label %227

227:                                              ; preds = %.lr.ph326, %227
  %.2280325 = phi i64 [ 0, %.lr.ph326 ], [ %238, %227 ]
  %228 = load ptr, ptr %225, align 8, !tbaa !18
  %229 = getelementptr inbounds ptr, ptr %228, i64 %.1277
  %230 = load ptr, ptr %229, align 8, !tbaa !27
  %231 = getelementptr inbounds double, ptr %230, i64 %.2280325
  %232 = load double, ptr %231, align 8, !tbaa !20
  %233 = load ptr, ptr %219, align 8, !tbaa !18
  %234 = load ptr, ptr %226, align 8, !tbaa !18
  %235 = getelementptr inbounds ptr, ptr %234, i64 %.2280325
  %236 = load ptr, ptr %235, align 8, !tbaa !27
  %237 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %223)
  tail call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %233, i64 noundef 1, ptr noundef %236, i64 noundef 1, i64 noundef %237, double noundef %232)
  %238 = add nuw nsw i64 %.2280325, 1
  %exitcond342.not = icmp eq i64 %238, %.1277
  br i1 %exitcond342.not, label %._crit_edge, label %227, !llvm.loop !35

._crit_edge:                                      ; preds = %227, %209
  %.2280.lcssa = phi i64 [ 0, %209 ], [ %.1277, %227 ]
  %.4270.lcssa = phi double [ %.3269, %209 ], [ %232, %227 ]
  %239 = getelementptr inbounds i8, ptr %0, i64 248
  store i8 1, ptr %239, align 8, !tbaa !36
  store i32 0, ptr %3, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %0, i64 1032
  %241 = load ptr, ptr %240, align 8, !tbaa !18
  store i64 %.3293, ptr %241, align 8, !tbaa !19
  %242 = load ptr, ptr %240, align 8, !tbaa !18
  %243 = getelementptr inbounds i8, ptr %242, i64 8
  store i64 %.3289, ptr %243, align 8, !tbaa !19
  %244 = load ptr, ptr %240, align 8, !tbaa !18
  %245 = getelementptr inbounds i8, ptr %244, i64 16
  store i64 %.3285, ptr %245, align 8, !tbaa !19
  %246 = load ptr, ptr %240, align 8, !tbaa !18
  %247 = getelementptr inbounds i8, ptr %246, i64 24
  store i64 %.2280.lcssa, ptr %247, align 8, !tbaa !19
  %248 = load ptr, ptr %240, align 8, !tbaa !18
  %249 = getelementptr inbounds i8, ptr %248, i64 32
  store i64 %.1277, ptr %249, align 8, !tbaa !19
  %250 = load ptr, ptr %240, align 8, !tbaa !18
  %251 = getelementptr inbounds i8, ptr %250, i64 40
  store i64 %.0318, ptr %251, align 8, !tbaa !19
  %252 = getelementptr inbounds i8, ptr %0, i64 1096
  %253 = load ptr, ptr %252, align 8, !tbaa !18
  %254 = and i8 %.2254, 1
  store i8 %254, ptr %253, align 1, !tbaa !37
  %255 = getelementptr inbounds i8, ptr %0, i64 1160
  %256 = load ptr, ptr %255, align 8, !tbaa !18
  store double %.3275, ptr %256, align 8, !tbaa !20
  %257 = load ptr, ptr %255, align 8, !tbaa !18
  %258 = getelementptr inbounds i8, ptr %257, i64 8
  store double %.4270.lcssa, ptr %258, align 8, !tbaa !20
  %259 = load ptr, ptr %255, align 8, !tbaa !18
  %260 = getelementptr inbounds i8, ptr %259, i64 16
  store double %.4265, ptr %260, align 8, !tbaa !20
  %261 = load ptr, ptr %255, align 8, !tbaa !18
  %262 = getelementptr inbounds i8, ptr %261, i64 24
  store double %.3258, ptr %262, align 8, !tbaa !20
  %263 = load ptr, ptr %255, align 8, !tbaa !18
  %264 = getelementptr inbounds i8, ptr %263, i64 32
  store double %.3251, ptr %264, align 8, !tbaa !20
  %265 = load ptr, ptr %255, align 8, !tbaa !18
  %266 = getelementptr inbounds i8, ptr %265, i64 40
  store double %.3, ptr %266, align 8, !tbaa !20
  br label %389

267:                                              ; preds = %6
  %268 = getelementptr inbounds i8, ptr %12, i64 40
  %269 = load double, ptr %268, align 8, !tbaa !20
  %270 = getelementptr inbounds i8, ptr %12, i64 16
  %271 = load double, ptr %270, align 8, !tbaa !20
  %272 = load double, ptr %12, align 8, !tbaa !20
  %273 = getelementptr inbounds i8, ptr %0, i64 1096
  %274 = load ptr, ptr %273, align 8, !tbaa !18
  %275 = load i8, ptr %274, align 1, !tbaa !37, !range !38, !noundef !39
  %276 = getelementptr inbounds i8, ptr %8, i64 32
  %277 = load i64, ptr %276, align 8, !tbaa !19
  %278 = getelementptr inbounds i8, ptr %8, i64 16
  %279 = load i64, ptr %278, align 8, !tbaa !19
  %280 = getelementptr inbounds i8, ptr %8, i64 8
  %281 = load i64, ptr %280, align 8, !tbaa !19
  %282 = load i64, ptr %8, align 8, !tbaa !19
  %283 = getelementptr inbounds i8, ptr %0, i64 248
  store i8 0, ptr %283, align 8, !tbaa !36
  %284 = getelementptr inbounds i8, ptr %0, i64 480
  %285 = load i64, ptr %284, align 8, !tbaa !25
  %286 = add nsw i64 %285, 1
  store i64 %286, ptr %284, align 8, !tbaa !25
  %287 = getelementptr inbounds i8, ptr %0, i64 16
  %288 = load double, ptr %287, align 8, !tbaa !33
  %289 = fmul double %271, %288
  %290 = getelementptr inbounds i8, ptr %0, i64 960
  %291 = load ptr, ptr %290, align 8, !tbaa !18
  %292 = getelementptr inbounds ptr, ptr %291, i64 %277
  %293 = load ptr, ptr %292, align 8, !tbaa !27
  %294 = getelementptr inbounds i8, ptr %0, i64 384
  %295 = load ptr, ptr %294, align 8, !tbaa !18
  %296 = add nsw i64 %282, -1
  %297 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %296)
  tail call void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef %293, i64 noundef 1, ptr noundef %295, i64 noundef 1, i64 noundef %297, double noundef %289)
  %298 = getelementptr inbounds i8, ptr %0, i64 736
  %299 = load ptr, ptr %298, align 8, !tbaa !18
  %300 = getelementptr inbounds double, ptr %299, i64 %277
  %301 = load double, ptr %300, align 8, !tbaa !20
  %302 = getelementptr inbounds i8, ptr %0, i64 544
  %303 = load ptr, ptr %302, align 8, !tbaa !18
  %304 = load ptr, ptr %290, align 8, !tbaa !18
  %305 = getelementptr inbounds ptr, ptr %304, i64 %277
  %306 = load ptr, ptr %305, align 8, !tbaa !27
  %307 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %296)
  tail call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %303, i64 noundef 1, ptr noundef %306, i64 noundef 1, i64 noundef %307, double noundef %301)
  %308 = getelementptr inbounds i8, ptr %0, i64 800
  %309 = load ptr, ptr %308, align 8, !tbaa !18
  %310 = getelementptr inbounds double, ptr %309, i64 %277
  %311 = load double, ptr %310, align 8, !tbaa !20
  %312 = getelementptr inbounds i8, ptr %0, i64 608
  %313 = load ptr, ptr %312, align 8, !tbaa !18
  %314 = load ptr, ptr %290, align 8, !tbaa !18
  %315 = getelementptr inbounds ptr, ptr %314, i64 %277
  %316 = load ptr, ptr %315, align 8, !tbaa !27
  %317 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %296)
  tail call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %313, i64 noundef 1, ptr noundef %316, i64 noundef 1, i64 noundef %317, double noundef %311)
  %318 = add nsw i64 %277, 1
  br label %203

319:                                              ; preds = %.lr.ph332, %345
  %.4331 = phi double [ 0.000000e+00, %.lr.ph332 ], [ %346, %345 ]
  %.5271330 = phi double [ %.3269, %.lr.ph332 ], [ %.7, %345 ]
  %.3281329 = phi i64 [ 0, %.lr.ph332 ], [ %347, %345 ]
  %320 = load i8, ptr %205, align 8, !tbaa !40, !range !38, !noundef !39
  %321 = trunc nuw i8 %320 to i1
  br i1 %321, label %331, label %322

322:                                              ; preds = %319
  %323 = load ptr, ptr %206, align 8, !tbaa !18
  %324 = getelementptr inbounds double, ptr %323, i64 %.3281329
  %325 = load double, ptr %324, align 8, !tbaa !20
  %326 = load ptr, ptr %207, align 8, !tbaa !18
  %327 = getelementptr inbounds double, ptr %326, i64 %.3281329
  %328 = load double, ptr %327, align 8, !tbaa !20
  %329 = fsub double %325, %328
  %330 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %329, ptr noundef %1)
  br label %345

331:                                              ; preds = %319
  %332 = load ptr, ptr %208, align 8, !tbaa !18
  %333 = getelementptr inbounds double, ptr %332, i64 %.3281329
  %334 = load double, ptr %333, align 8, !tbaa !20
  %335 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %334, double noundef 0.000000e+00)
  %.6 = select i1 %335, double 1.000000e+00, double %334
  %336 = load ptr, ptr %206, align 8, !tbaa !18
  %337 = getelementptr inbounds double, ptr %336, i64 %.3281329
  %338 = load double, ptr %337, align 8, !tbaa !20
  %339 = load ptr, ptr %207, align 8, !tbaa !18
  %340 = getelementptr inbounds double, ptr %339, i64 %.3281329
  %341 = load double, ptr %340, align 8, !tbaa !20
  %342 = fsub double %338, %341
  %343 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %342, ptr noundef %1)
  %344 = fdiv double %343, %.6
  br label %345

345:                                              ; preds = %322, %331
  %.sink = phi double [ %330, %322 ], [ %344, %331 ]
  %.7 = phi double [ %.5271330, %322 ], [ %.6, %331 ]
  %346 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.4331, double noundef %.sink, ptr noundef %1)
  %347 = add nuw nsw i64 %.3281329, 1
  %exitcond343.not = icmp eq i64 %347, %.3293
  br i1 %exitcond343.not, label %._crit_edge333, label %319, !llvm.loop !41

._crit_edge333:                                   ; preds = %345, %.preheader
  %.5271.lcssa = phi double [ %.3269, %.preheader ], [ %.7, %345 ]
  %.4.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %346, %345 ]
  %348 = add nsw i64 %.3293, -1
  %349 = fmul double %.3, %.4.lcssa
  %350 = getelementptr inbounds i8, ptr %0, i64 32
  %351 = load double, ptr %350, align 8, !tbaa !42
  %352 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %349, double noundef %351)
  br i1 %352, label %353, label %355

353:                                              ; preds = %._crit_edge333
  %354 = load double, ptr @_ZN11alglib_implL26odesolver_odesolvermaxgrowE, align 8, !tbaa !20
  br label %359

355:                                              ; preds = %._crit_edge333
  %356 = load double, ptr %350, align 8, !tbaa !42
  %357 = fdiv double %356, %.4.lcssa
  %358 = tail call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef %357, double noundef 2.000000e-01, ptr noundef %1)
  br label %359

359:                                              ; preds = %355, %353
  %.pn = phi double [ %354, %353 ], [ %358, %355 ]
  %.4259 = fmul double %.4265, %.pn
  %360 = load double, ptr @_ZN11alglib_implL28odesolver_odesolvermaxshrinkE, align 8, !tbaa !20
  %361 = fdiv double %.4265, %360
  %362 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %.4259, double noundef %361)
  %363 = load double, ptr @_ZN11alglib_implL28odesolver_odesolvermaxshrinkE, align 8
  %364 = fdiv double %.4265, %363
  %.5260 = select i1 %362, double %364, double %.4259
  %365 = load double, ptr %350, align 8, !tbaa !42
  %366 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.4.lcssa, double noundef %365)
  br i1 %366, label %367, label %371

367:                                              ; preds = %359
  %368 = load double, ptr @_ZN11alglib_implL34odesolver_odesolverguaranteeddecayE, align 8, !tbaa !20
  %369 = fmul double %.4265, %368
  %370 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %.5260, double noundef %369, ptr noundef %1)
  br label %166

371:                                              ; preds = %359
  %372 = fadd double %.3275, %.4265
  %373 = getelementptr inbounds i8, ptr %0, i64 104
  %374 = load ptr, ptr %373, align 8, !tbaa !18
  %375 = getelementptr inbounds i8, ptr %0, i64 544
  %376 = load ptr, ptr %375, align 8, !tbaa !18
  %377 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %348)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %374, i64 noundef 1, ptr noundef %376, i64 noundef 1, i64 noundef %377)
  %378 = trunc nuw i8 %.2254 to i1
  br i1 %378, label %379, label %166

379:                                              ; preds = %371
  %380 = getelementptr inbounds i8, ptr %0, i64 464
  %381 = load ptr, ptr %380, align 8, !tbaa !18
  %382 = getelementptr inbounds ptr, ptr %381, i64 %.3285
  %383 = load ptr, ptr %382, align 8, !tbaa !27
  %384 = load ptr, ptr %373, align 8, !tbaa !18
  %385 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %348)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %383, i64 noundef 1, ptr noundef %384, i64 noundef 1, i64 noundef %385)
  %386 = add nsw i64 %.3285, 1
  br label %.loopexit

387:                                              ; preds = %.loopexit
  %388 = getelementptr inbounds i8, ptr %0, i64 472
  store i64 1, ptr %388, align 8, !tbaa !21
  br label %389

389:                                              ; preds = %22, %.thread, %._crit_edge, %387
  %.0294 = phi i1 [ false, %387 ], [ true, %._crit_edge ], [ false, %.thread ], [ false, %22 ]
  ret i1 %.0294
}

declare noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef, double noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

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

declare void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl10ae_v_movedEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef, double noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef, double noundef) local_unnamed_addr #0

declare noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #0

attributes #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 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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, !17, i64 968}
!6 = !{!"_ZTSN11alglib_impl14odesolverstateE", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !11, i64 40, !12, i64 48, !12, i64 112, !12, i64 176, !7, i64 240, !11, i64 248, !10, i64 256, !12, i64 264, !12, i64 328, !15, i64 392, !7, i64 472, !7, i64 480, !12, i64 488, !12, i64 552, !12, i64 616, !12, i64 680, !12, i64 744, !15, i64 808, !15, i64 888, !16, i64 968}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !13, i64 24, !8, i64 56}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !13, i64 40, !8, i64 72}
!16 = !{!"_ZTSN11alglib_impl10rcommstateE", !17, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!17 = !{!"int", !8, i64 0}
!18 = !{!8, !8, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!10, !10, i64 0}
!21 = !{!6, !7, i64 472}
!22 = !{!6, !7, i64 0}
!23 = !{!6, !7, i64 8}
!24 = !{!6, !10, i64 24}
!25 = !{!6, !7, i64 480}
!26 = !{!6, !7, i64 240}
!27 = !{!14, !14, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.unroll.disable"}
!32 = distinct !{!32, !29}
!33 = !{!6, !10, i64 16}
!34 = !{!6, !10, i64 256}
!35 = distinct !{!35, !29}
!36 = !{!6, !11, i64 248}
!37 = !{!11, !11, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!6, !11, i64 40}
!41 = distinct !{!41, !29}
!42 = !{!6, !10, i64 32}


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