Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hessian on Lux MLP fails #2305

Open
jbrea opened this issue Feb 14, 2025 · 1 comment
Open

Hessian on Lux MLP fails #2305

jbrea opened this issue Feb 14, 2025 · 1 comment

Comments

@jbrea
Copy link

jbrea commented Feb 14, 2025

using Lux, Enzyme, ComponentArrays, Random

function loss(model, θ, st, x, y)
    pred, _ = model(x, θ, st)
    MSELoss()(pred, y)
end
function grad(model, θ, dθ, st, x, y)
    Enzyme.autodiff_deferred(Enzyme.Reverse,
                             Const(loss),
                             Enzyme.Active,
                             Const(model),
                             Duplicated(θ, dθ),
                             Const(st), Const(x), Const(y))
    nothing
end
function hess(model, θ, st, x, y)
    vdθ = Tuple(zero(θ) for i in eachindex(θ))
    for i in eachindex(θ)
        vdθ[i][i] = 1
    end= zero(θ)
    vdbθ = Tuple(zero(θ) for i in eachindex(θ))
    Enzyme.autodiff(Enzyme.Forward,
                    grad,
                    Const(model),
                    Enzyme.BatchDuplicated(θ, vdθ),
                    Enzyme.BatchDuplicated(bθ, vdbθ),
                    Const(st), Const(x), Const(y))
    hcat(vdbθ...)
end

model = Chain(Dense(2 => 8, softplus),
              Dense(8 => 1))

ps, st = Lux.setup(Xoshiro(12), model) .|> f64

pc = ComponentArray(ps)

x = randn(2, 10^4)
y = randn(1, 10^4)


loss(model, pc, st, x, y)
dpc = zero(pc)
grad(model, pc, dpc, st, x, y)
julia> hess(model, pc, st, x, y)
ERROR: TypeError: in typeassert, expected LLVM.LoadInst, got a value of type LLVM.CallInst
Stacktrace:
  [1] check_ir!(job::GPUCompiler.CompilerJob, errors::Vector{…}, imported::Set{…}, f::LLVM.Function, deletedfns::Vector{…}, mod::LLVM.Module)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler/validation.jl:275
  [2] check_ir!(job::GPUCompiler.CompilerJob, errors::Vector{Tuple{String, Vector{…}, Any}}, mod::LLVM.Module)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler/validation.jl:212
  [3] check_ir
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler/validation.jl:181 [inlined]
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:3428
  [5] codegen
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:3353 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410
  [7] _thunk
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5462 [inlined]
  [9] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, edges::Vector{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5573
 [10] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5758
 [11] autodiff(::ForwardMode{…}, ::Const{…}, ::Type{…}, ::Const{…}, ::BatchDuplicated{…}, ::BatchDuplicated{…}, ::Const{…}, ::Const{…}, ::Const{…})
    @ Enzyme ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:640
 [12] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:544 [inlined]
 [13] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:516 [inlined]
 [14] hess(model::Chain{…}, θ::ComponentVector{…}, st::@NamedTuple{}, x::Matrix{…}, y::Matrix{…})
    @ Main ./REPL[5]:8
 [15] top-level scope
    @ REPL[14]:1
Some type information was truncated. Use `show(err)` to see complete types.

(example) pkg> st
Status `~/example/Project.toml`
  [b0b7db55] ComponentArrays v0.15.24
  [7da242da] Enzyme v0.13.30
  [b2108857] Lux v1.7.0
  [37e2e46d] LinearAlgebra v1.11.0
  [9a3f8284] Random v1.11.0

julia> versioninfo()
Julia Version 1.11.3
Commit d63adeda50d (2025-01-21 19:42 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 × AMD Ryzen 7 PRO 5850U with Radeon Graphics
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)

If I use autodiff instead of autodiff_deferred in grad, I get the following error:

Instruction does not dominate all uses!
Instruction does not dominate all uses!
  %9 = call {}*** @julia.get_pgcstack()
  %3 = bitcast {}*** %9 to {}**
; Function Attrs: mustprogress willreturn
define internal fastcc void @preprocess_julia_gemm__45289({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="133462757816656" "enzymejl_parmtype_ref"="1" %0, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="133464533019408" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="133464533019408" "enzymejl_parmtype_ref"="2" %2) unnamed_addr #70 !dbg !17050 {
top:
  %3 = call {}*** @julia.get_pgcstack() #72
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i64, align 16
  %7 = alloca i64, align 16
  %8 = alloca i64, align 16
  %9 = alloca i64, align 16
  %10 = alloca i64, align 16
  %11 = alloca i64, align 16
  %12 = alloca i64, align 16
  %13 = alloca i64, align 16
  %ptls_field97 = getelementptr inbounds {}**, {}*** %3, i64 2
  %14 = bitcast {}*** %ptls_field97 to i64***
  %ptls_load9899 = load i64**, i64*** %14, align 8, !tbaa !186
  %15 = getelementptr inbounds i64*, i64** %ptls_load9899, i64 2
  %safepoint = load i64*, i64** %15, align 8, !tbaa !195
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #73, !dbg !17051
  fence syncscope("singlethread") seq_cst
  %16 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 0, !dbg !17052
  %17 = load i64, i64 addrspace(11)* %16, align 8, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %18 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 1, !dbg !17055
  %19 = load i64, i64 addrspace(11)* %18, align 8, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %20 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !17058
  %21 = addrspacecast i8 addrspace(10)* %20 to i8 addrspace(11)*, !dbg !17058
  %22 = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 16, !dbg !17058
  %.sroa.03.0..sroa_cast = bitcast i8 addrspace(11)* %22 to i64 addrspace(11)*, !dbg !17058
  %.sroa.03.0.copyload = load i64, i64 addrspace(11)* %.sroa.03.0..sroa_cast, align 8, !dbg !17058, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 24, !dbg !17058
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx to i64 addrspace(11)*, !dbg !17058
  %.sroa.1.0.copyload2 = load i64, i64 addrspace(11)* %.sroa.2.0..sroa_cast, align 8, !dbg !17063, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %23 = icmp eq i64 %19, %.sroa.03.0.copyload, !dbg !17065
  br i1 %23, label %L71, label %L66.L289_crit_edge, !dbg !17067

L66.L289_crit_edge:                               ; preds = %top
  %24 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.phi.trans.insert90 = addrspacecast i8 addrspace(10)* %24 to i8 addrspace(11)*
  %.phi.trans.insert91 = getelementptr inbounds i8, i8 addrspace(11)* %.phi.trans.insert90, i64 16
  %.sroa.079.0..sroa_idx.phi.trans.insert = bitcast i8 addrspace(11)* %.phi.trans.insert91 to i64 addrspace(11)*
  %.sroa.079.0.copyload.pre = load i64, i64 addrspace(11)* %.sroa.079.0..sroa_idx.phi.trans.insert, align 8, !dbg !17068, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  br label %L289, !dbg !17067

L71:                                              ; preds = %top
  %25 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*, !dbg !17070
  %26 = addrspacecast i8 addrspace(10)* %25 to i8 addrspace(11)*, !dbg !17070
  %27 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 16, !dbg !17070
  %.sroa.076.0..sroa_idx = bitcast i8 addrspace(11)* %27 to i64 addrspace(11)*, !dbg !17070
  %.sroa.076.0.copyload = load i64, i64 addrspace(11)* %.sroa.076.0..sroa_idx, align 8, !dbg !17070, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %28 = icmp eq i64 %17, %.sroa.076.0.copyload, !dbg !17065
  br i1 %28, label %L77, label %L289, !dbg !17067

L77:                                              ; preds = %L71
  %.sroa.277.0..sroa_idx78 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 24, !dbg !17070
  %29 = bitcast i8 addrspace(11)* %.sroa.277.0..sroa_idx78 to i64 addrspace(11)*, !dbg !17070
  %.sroa.1.0.copyload = load i64, i64 addrspace(11)* %29, align 8, !dbg !17070, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %30 = icmp eq i64 %.sroa.1.0.copyload2, %.sroa.1.0.copyload, !dbg !17065
  br i1 %30, label %L103, label %L289, !dbg !17067

L103:                                             ; preds = %L77
  store i8 78, i8* %4, align 1, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %31 = bitcast i64* %13 to i8*
  %32 = bitcast i64* %12 to i8*
  %33 = bitcast i64* %11 to i8*
  %34 = bitcast i64* %10 to i8*
  %35 = bitcast i64* %9 to i8*
  %36 = bitcast i64* %8 to i8*
  %37 = bitcast i64* %7 to i8*
  %38 = bitcast i64* %6 to i8*
  store i8 78, i8* %5, align 1, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  store i64 %17, i64* %6, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  store i64 %.sroa.1.0.copyload2, i64* %7, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  store i64 %19, i64* %8, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %39 = bitcast i64* %9 to double*, !dbg !17071
  store double 1.000000e+00, double* %39, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %40 = call i64 @llvm.smax.i64(i64 %17, i64 1) #72, !dbg !17078
  store i64 %40, i64* %10, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %41 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !17080
  %42 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %41 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !17080
  %43 = bitcast {} addrspace(10)* %1 to i8* addrspace(10)*, !dbg !17080
  %44 = addrspacecast i8* addrspace(10)* %43 to i8* addrspace(11)*, !dbg !17080
  %45 = load i8*, i8* addrspace(11)* %44, align 8, !dbg !17080, !tbaa !342, !alias.scope !376, !noalias !558, !enzyme_type !332, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %46 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %42, i64 0, i32 1, !dbg !17080
  %47 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, align 8, !dbg !17080, !tbaa !342, !alias.scope !376, !noalias !558, !dereferenceable_or_null !614, !align !234, !enzyme_type !330, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %48 = call i64 @llvm.smax.i64(i64 %19, i64 1) #72, !dbg !17078
  store i64 %48, i64* %11, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %49 = bitcast i64* %12 to double*, !dbg !17071
  store double 1.000000e+00, double* %49, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %50 = bitcast {} addrspace(10)* %2 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !17080
  %51 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %50 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !17080
  %52 = bitcast {} addrspace(10)* %2 to i8* addrspace(10)*, !dbg !17080
  %53 = addrspacecast i8* addrspace(10)* %52 to i8* addrspace(11)*, !dbg !17080
  %54 = load i8*, i8* addrspace(11)* %53, align 8, !dbg !17080, !tbaa !342, !alias.scope !376, !noalias !558, !enzyme_type !332, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %55 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %51, i64 0, i32 1, !dbg !17080
  %56 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %55, align 8, !dbg !17080, !tbaa !342, !alias.scope !376, !noalias !558, !dereferenceable_or_null !614, !align !234, !enzyme_type !330, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  store i64 %40, i64* %13, align 16, !dbg !17071, !tbaa !423, !alias.scope !314, !noalias !17075
  %57 = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !17081
  %58 = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %57 unordered, align 8, !dbg !17081, !tbaa !195, !alias.scope !368, !noalias !482, !nonnull !0, !dereferenceable !233, !align !234, !enzyme_type !216, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0
  %59 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %58 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !17083
  %60 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %59, i64 0, i32 0, !dbg !17083
  %61 = load i8*, i8* addrspace(11)* %60, align 8, !dbg !17083, !tbaa !342, !alias.scope !376, !noalias !558, !enzyme_type !332, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %62 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 2, !dbg !17085
  %63 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 3, !dbg !17085
  %64 = load i64, i64 addrspace(11)* %63, align 8, !dbg !17088, !tbaa !195, !alias.scope !368, !noalias !482, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %65 = load i64, i64 addrspace(11)* %62, align 8, !dbg !17089, !tbaa !195, !alias.scope !368, !noalias !482, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %66 = ptrtoint i8* %54 to i64, !dbg !17090
  %67 = ptrtoint i8* %45 to i64, !dbg !17090
  %68 = add i64 %65, %64, !dbg !17089
  %69 = shl i64 %68, 3, !dbg !17092
  %70 = add i64 %69, -8, !dbg !17092
  %71 = getelementptr i8, i8* %61, i64 %70, !dbg !17093
  %72 = ptrtoint i8* %71 to i64, !dbg !17093
  %73 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %54, 0, !dbg !17080
  %74 = insertvalue { i8*, {} addrspace(10)* } %73, {} addrspace(10)* %56, 1, !dbg !17080
  %75 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %45, 0, !dbg !17080
  %76 = insertvalue { i8*, {} addrspace(10)* } %75, {} addrspace(10)* %47, 1, !dbg !17080
  %77 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %58 to {} addrspace(10)*, !dbg !17074
  %78 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %77, 0, !dbg !17074
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !17074
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !17074, !tbaa !195, !alias.scope !368, !noalias !482, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %79 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !17074
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !17074
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !17074, !tbaa !195, !alias.scope !368, !noalias !482, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.unpack124.unpack132 = insertvalue [2 x i64] %79, i64 %.unpack124.unpack.unpack131, 1, !dbg !17074
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !17074
  %80 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %78, [1 x [2 x i64]] %.unpack124129, 1, !dbg !17074
  %81 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %80, i64 %65, 2, !dbg !17074
  %82 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %81, i64 %64, 3, !dbg !17074
  %83 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__45303_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !17074
  call void %83(i8* nonnull %4, i8* nonnull %5, i8* nonnull %38, i8* nonnull %37, i8* nonnull %36, i8* nonnull %35, i64 %72, i8* nonnull %34, i64 %67, i8* nonnull %33, i8* nonnull %32, i64 %66, i8* nonnull %31, i64 1, i64 1) #72 [ "jl_roots"({} addrspace(10)* null, { i8*, {} addrspace(10)* } %74, {} addrspace(10)* null, {} addrspace(10)* null, { i8*, {} addrspace(10)* } %76, {} addrspace(10)* null, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %82, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !17074
  ret void, !dbg !17074

L289:                                             ; preds = %L77, %L71, %L66.L289_crit_edge
  %.sroa.079.0.copyload = phi i64 [ %.sroa.079.0.copyload.pre, %L66.L289_crit_edge ], [ %17, %L77 ], [ %.sroa.076.0.copyload, %L71 ], !dbg !17068, !enzyme_inactive !0
  %84 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.pre-phi1.pre-phi.pre-phi.pre-phi = addrspacecast i8 addrspace(10)* %84 to i8 addrspace(11)*
  %current_task196 = getelementptr inbounds {}**, {}*** %3, i64 -14
  %85 = bitcast {}*** %current_task196 to {}*
  %.sroa.280.0..sroa_idx81 = getelementptr i8, i8 addrspace(11)* %.pre-phi1.pre-phi.pre-phi.pre-phi, i64 24, !dbg !17068
  %86 = bitcast i8 addrspace(11)* %.sroa.280.0..sroa_idx81 to i64 addrspace(11)*, !dbg !17068
  %.sroa.280.0.copyload = load i64, i64 addrspace(11)* %86, align 8, !dbg !17068, !tbaa !283, !alias.scope !405, !noalias !17060, !enzyme_inactive !0, !enzyme_type !262, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %87 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 16, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464334631200 to {}*) to {} addrspace(10)*)) #74, !dbg !17095
  %88 = bitcast {} addrspace(10)* %87 to {} addrspace(10)* addrspace(10)*, !dbg !17095, !enzyme_inactive !0
  %89 = addrspacecast {} addrspace(10)* addrspace(10)* %88 to {} addrspace(10)* addrspace(11)*, !dbg !17095, !enzyme_inactive !0
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %89, align 8, !dbg !17095, !tbaa !423, !alias.scope !314, !noalias !17075
  %90 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %89, i64 1, !dbg !17095
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %90, align 8, !dbg !17095, !tbaa !423, !alias.scope !314, !noalias !17075
  %91 = call noalias nonnull align 8 dereferenceable(88) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Pointer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,60]:Integer, [-1,61]:Integer, [-1,62]:Integer, [-1,63]:Integer, [-1,64]:Pointer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Integer, [-1,81]:Integer, [-1,82]:Integer, [-1,83]:Integer, [-1,84]:Integer, [-1,85]:Integer, [-1,86]:Integer, [-1,87]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 88, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133462678651024 to {}*) to {} addrspace(10)*)) #74, !dbg !17095
  %92 = bitcast {} addrspace(10)* %91 to { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)*, !dbg !17095, !enzyme_inactive !0
  %.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 0, !dbg !17095
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464436950080 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack103 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 1, !dbg !17095
  store i64 %17, i64 addrspace(10)* %.repack103, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack105 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 2, !dbg !17095
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464397513232 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack105, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack107 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 3, !dbg !17095
  store i64 %19, i64 addrspace(10)* %.repack107, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack109 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 4, !dbg !17095
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464436950048 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack109, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack111 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 5, !dbg !17095
  store i64 %.sroa.03.0.copyload, i64 addrspace(10)* %.repack111, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack113 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 6, !dbg !17095
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464397513232 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack113, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack115 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 7, !dbg !17095
  store i64 %.sroa.1.0.copyload2, i64 addrspace(10)* %.repack115, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack117 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 8, !dbg !17095
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464436950016 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack117, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack119.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 0, !dbg !17095
  store i64 %.sroa.079.0.copyload, i64 addrspace(10)* %.repack119.repack, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  %.repack119.repack121 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 1, !dbg !17095
  store i64 %.sroa.280.0.copyload, i64 addrspace(10)* %.repack119.repack121, align 8, !dbg !17095, !tbaa !310, !alias.scope !314, !noalias !17075
  store atomic {} addrspace(10)* %91, {} addrspace(10)* addrspace(11)* %89 release, align 8, !dbg !17095, !tbaa !423, !alias.scope !314, !noalias !17075
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* nonnull %87, {} addrspace(10)* nonnull %91) #75, !dbg !17095
  %93 = bitcast {} addrspace(10)* %87 to i8 addrspace(10)*, !dbg !17095, !enzyme_inactive !0
  %94 = addrspacecast i8 addrspace(10)* %93 to i8 addrspace(11)*, !dbg !17095, !enzyme_inactive !0
  %95 = getelementptr inbounds i8, i8 addrspace(11)* %94, i64 8, !dbg !17095
  %96 = load {}*, {}** @jl_nothing, align 8, !dbg !17095, !tbaa !195, !alias.scope !368, !noalias !482, !nonnull !0, !enzyme_inactive !0, !enzyme_type !426, !enzymejl_byref_BITS_REF !0, !enzymejl_source_type_Nothing !0
  %97 = addrspacecast {}* %96 to {} addrspace(10)*, !dbg !17095, !enzyme_inactive !0
  %98 = bitcast i8 addrspace(11)* %95 to {} addrspace(10)* addrspace(11)*, !dbg !17095
  store atomic {} addrspace(10)* %97, {} addrspace(10)* addrspace(11)* %98 release, align 8, !dbg !17095, !tbaa !423, !alias.scope !314, !noalias !17075
  %99 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 8, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 133464339136352 to {}*) to {} addrspace(10)*)) #74, !dbg !17069
  %100 = bitcast {} addrspace(10)* %99 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !17069, !enzyme_inactive !0
  %101 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %100, i64 0, i64 0, !dbg !17069
  store {} addrspace(10)* %87, {} addrspace(10)* addrspace(10)* %101, align 8, !dbg !17069, !tbaa !310, !alias.scope !314, !noalias !17075
  %102 = addrspacecast {} addrspace(10)* %99 to {} addrspace(12)*, !dbg !17069, !enzyme_inactive !0
  call void @ijl_throw({} addrspace(12)* %102) #72, !dbg !17069
  unreachable, !dbg !17069
}

; Function Attrs: mustprogress
define internal fastcc void @fwddiffe33julia_gemm__45289({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="133462757816656" "enzymejl_parmtype_ref"="1" %0, [33 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="133464533019408" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="133464533019408" "enzymejl_parmtype_ref"="2" %2, [33 x {} addrspace(10)*] %"'1") unnamed_addr #71 !dbg !17096 {
top:
 %%% MORE STUFF REMOVED DUE TO SPACE CONSTRAINTS
}

ERROR: LLVM error: function failed verification (4)
Stacktrace:
  [1] handle_error(reason::Cstring)
    @ LLVM ~/.julia/packages/LLVM/b3kFs/src/core/context.jl:194
  [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, runtimeActivity::Bool, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…})
    @ Enzyme.API ~/.julia/packages/Enzyme/QsaeA/src/api.jl:334
  [3] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:1745
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:4550
  [5] codegen
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:3353 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410
  [7] _thunk
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5462 [inlined]
  [9] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, edges::Vector{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5573
 [10] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5758
 [11] autodiff(::ForwardMode{…}, ::Const{…}, ::Type{…}, ::Const{…}, ::BatchDuplicated{…}, ::BatchDuplicated{…}, ::Const{…}, ::Const{…}, ::Const{…})
    @ Enzyme ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:640
 [12] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:544 [inlined]
 [13] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:516 [inlined]
 [14] hess(model::Chain{…}, θ::ComponentVector{…}, st::@NamedTuple{}, x::Matrix{…}, y::Matrix{…})
    @ Main ./REPL[18]:8
 [15] top-level scope
    @ REPL[19]:1
Some type information was truncated. Use `show(err)` to see complete types.
@jbrea jbrea changed the title Forward over Reverse Hessian computation results in ERROR: TypeError: in typeassert, expected LLVM.LoadInst, got a value of type LLVM.CallInst Hessian on Lux MLP fails Feb 26, 2025
@jbrea
Copy link
Author

jbrea commented Feb 26, 2025

Here is another try using DifferentiationInterface:

using Lux, DifferentiationInterface, Enzyme, ComponentArrays, Random

function loss(θ, ax, model, st, x, y)
    pred, _ = model(x, ComponentArray(θ, ax), st)
    MSELoss()(pred, y)
end

model = Chain(Dense(2 => 8, softplus),
              Dense(8 => 1))

ps, st = Lux.setup(Xoshiro(12), model) |> f64

pc = ComponentArray(ps)
pp = Array(pc)
ax = getaxes(pc)

x = randn(2, 10^4)
y = randn(1, 10^4)

DifferentiationInterface.gradient(loss,
                                  AutoEnzyme(),
                                  pp,
                                  Constant(ax),
                                  Constant(model),
                                  Constant(st),
                                  Constant(x),
                                  Constant(y))

DifferentiationInterface.hessian(loss,
                                 AutoEnzyme(),
                                 pp,
                                 Constant(ax),
                                 Constant(model),
                                 Constant(st),
                                 Constant(x),
                                 Constant(y))

Produces the error

Instruction does not dominate all uses!
Instruction does not dominate all uses!
  %9 = call {}*** @julia.get_pgcstack()
  %3 = bitcast {}*** %9 to {}**
; Function Attrs: mustprogress willreturn
define internal fastcc void @preprocess_julia_gemm__29410({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="138344148970320" "enzymejl_parmtype_ref"="1" %0, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %2) unnamed_addr #70 !dbg !9715 {
top:
  %3 = call {}*** @julia.get_pgcstack() #72
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i64, align 16
  %7 = alloca i64, align 16
  %8 = alloca i64, align 16
  %9 = alloca i64, align 16
  %10 = alloca i64, align 16
  %11 = alloca i64, align 16
  %12 = alloca i64, align 16
  %13 = alloca i64, align 16
  %ptls_field97 = getelementptr inbounds {}**, {}*** %3, i64 2
  %14 = bitcast {}*** %ptls_field97 to i64***
  %ptls_load9899 = load i64**, i64*** %14, align 8, !tbaa !187
  %15 = getelementptr inbounds i64*, i64** %ptls_load9899, i64 2
  %safepoint = load i64*, i64** %15, align 8, !tbaa !196
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #73, !dbg !9716
  fence syncscope("singlethread") seq_cst
  %16 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 0, !dbg !9717
  %17 = load i64, i64 addrspace(11)* %16, align 8, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %18 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 1, !dbg !9720
  %19 = load i64, i64 addrspace(11)* %18, align 8, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %20 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !9723
  %21 = addrspacecast i8 addrspace(10)* %20 to i8 addrspace(11)*, !dbg !9723
  %22 = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 16, !dbg !9723
  %.sroa.03.0..sroa_cast = bitcast i8 addrspace(11)* %22 to i64 addrspace(11)*, !dbg !9723
  %.sroa.03.0.copyload = load i64, i64 addrspace(11)* %.sroa.03.0..sroa_cast, align 8, !dbg !9723, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 24, !dbg !9723
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx to i64 addrspace(11)*, !dbg !9723
  %.sroa.1.0.copyload2 = load i64, i64 addrspace(11)* %.sroa.2.0..sroa_cast, align 8, !dbg !9728, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %23 = icmp eq i64 %19, %.sroa.03.0.copyload, !dbg !9730
  br i1 %23, label %L71, label %L66.L289_crit_edge, !dbg !9732

L66.L289_crit_edge:                               ; preds = %top
  %24 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.phi.trans.insert90 = addrspacecast i8 addrspace(10)* %24 to i8 addrspace(11)*
  %.phi.trans.insert91 = getelementptr inbounds i8, i8 addrspace(11)* %.phi.trans.insert90, i64 16
  %.sroa.079.0..sroa_idx.phi.trans.insert = bitcast i8 addrspace(11)* %.phi.trans.insert91 to i64 addrspace(11)*
  %.sroa.079.0.copyload.pre = load i64, i64 addrspace(11)* %.sroa.079.0..sroa_idx.phi.trans.insert, align 8, !dbg !9733, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  br label %L289, !dbg !9732

L71:                                              ; preds = %top
  %25 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*, !dbg !9735
  %26 = addrspacecast i8 addrspace(10)* %25 to i8 addrspace(11)*, !dbg !9735
  %27 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 16, !dbg !9735
  %.sroa.076.0..sroa_idx = bitcast i8 addrspace(11)* %27 to i64 addrspace(11)*, !dbg !9735
  %.sroa.076.0.copyload = load i64, i64 addrspace(11)* %.sroa.076.0..sroa_idx, align 8, !dbg !9735, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %28 = icmp eq i64 %17, %.sroa.076.0.copyload, !dbg !9730
  br i1 %28, label %L77, label %L289, !dbg !9732

L77:                                              ; preds = %L71
  %.sroa.277.0..sroa_idx78 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 24, !dbg !9735
  %29 = bitcast i8 addrspace(11)* %.sroa.277.0..sroa_idx78 to i64 addrspace(11)*, !dbg !9735
  %.sroa.1.0.copyload = load i64, i64 addrspace(11)* %29, align 8, !dbg !9735, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %30 = icmp eq i64 %.sroa.1.0.copyload2, %.sroa.1.0.copyload, !dbg !9730
  br i1 %30, label %L103, label %L289, !dbg !9732

L103:                                             ; preds = %L77
  store i8 78, i8* %4, align 1, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %31 = bitcast i64* %13 to i8*
  %32 = bitcast i64* %12 to i8*
  %33 = bitcast i64* %11 to i8*
  %34 = bitcast i64* %10 to i8*
  %35 = bitcast i64* %9 to i8*
  %36 = bitcast i64* %8 to i8*
  %37 = bitcast i64* %7 to i8*
  %38 = bitcast i64* %6 to i8*
  store i8 78, i8* %5, align 1, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  store i64 %17, i64* %6, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  store i64 %.sroa.1.0.copyload2, i64* %7, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  store i64 %19, i64* %8, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %39 = bitcast i64* %9 to double*, !dbg !9736
  store double 1.000000e+00, double* %39, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %40 = call i64 @llvm.smax.i64(i64 %17, i64 1) #72, !dbg !9743
  store i64 %40, i64* %10, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %41 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !9745
  %42 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %41 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9745
  %43 = bitcast {} addrspace(10)* %1 to i8* addrspace(10)*, !dbg !9745
  %44 = addrspacecast i8* addrspace(10)* %43 to i8* addrspace(11)*, !dbg !9745
  %45 = load i8*, i8* addrspace(11)* %44, align 8, !dbg !9745, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %46 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %42, i64 0, i32 1, !dbg !9745
  %47 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, align 8, !dbg !9745, !tbaa !343, !alias.scope !377, !noalias !559, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %48 = call i64 @llvm.smax.i64(i64 %19, i64 1) #72, !dbg !9743
  store i64 %48, i64* %11, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %49 = bitcast i64* %12 to double*, !dbg !9736
  store double 1.000000e+00, double* %49, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %50 = bitcast {} addrspace(10)* %2 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !9745
  %51 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %50 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9745
  %52 = bitcast {} addrspace(10)* %2 to i8* addrspace(10)*, !dbg !9745
  %53 = addrspacecast i8* addrspace(10)* %52 to i8* addrspace(11)*, !dbg !9745
  %54 = load i8*, i8* addrspace(11)* %53, align 8, !dbg !9745, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %55 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %51, i64 0, i32 1, !dbg !9745
  %56 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %55, align 8, !dbg !9745, !tbaa !343, !alias.scope !377, !noalias !559, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  store i64 %40, i64* %13, align 16, !dbg !9736, !tbaa !424, !alias.scope !315, !noalias !9740
  %57 = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !9746
  %58 = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %57 unordered, align 8, !dbg !9746, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !dereferenceable !234, !align !235, !enzyme_type !217, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0
  %59 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %58 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9748
  %60 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %59, i64 0, i32 0, !dbg !9748
  %61 = load i8*, i8* addrspace(11)* %60, align 8, !dbg !9748, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %62 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 2, !dbg !9750
  %63 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 3, !dbg !9750
  %64 = load i64, i64 addrspace(11)* %63, align 8, !dbg !9753, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %65 = load i64, i64 addrspace(11)* %62, align 8, !dbg !9754, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %66 = ptrtoint i8* %54 to i64, !dbg !9755
  %67 = ptrtoint i8* %45 to i64, !dbg !9755
  %68 = add i64 %65, %64, !dbg !9754
  %69 = shl i64 %68, 3, !dbg !9757
  %70 = add i64 %69, -8, !dbg !9757
  %71 = getelementptr i8, i8* %61, i64 %70, !dbg !9758
  %72 = ptrtoint i8* %71 to i64, !dbg !9758
  %73 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %54, 0, !dbg !9745
  %74 = insertvalue { i8*, {} addrspace(10)* } %73, {} addrspace(10)* %56, 1, !dbg !9745
  %75 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %45, 0, !dbg !9745
  %76 = insertvalue { i8*, {} addrspace(10)* } %75, {} addrspace(10)* %47, 1, !dbg !9745
  %77 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %58 to {} addrspace(10)*, !dbg !9739
  %78 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %77, 0, !dbg !9739
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !9739
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !9739, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %79 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !9739
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !9739
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !9739, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.unpack124.unpack132 = insertvalue [2 x i64] %79, i64 %.unpack124.unpack.unpack131, 1, !dbg !9739
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !9739
  %80 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %78, [1 x [2 x i64]] %.unpack124129, 1, !dbg !9739
  %81 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %80, i64 %65, 2, !dbg !9739
  %82 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %81, i64 %64, 3, !dbg !9739
  %83 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__29424_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !9739
  call void %83(i8* nonnull %4, i8* nonnull %5, i8* nonnull %38, i8* nonnull %37, i8* nonnull %36, i8* nonnull %35, i64 %72, i8* nonnull %34, i64 %67, i8* nonnull %33, i8* nonnull %32, i64 %66, i8* nonnull %31, i64 1, i64 1) #72 [ "jl_roots"({} addrspace(10)* null, { i8*, {} addrspace(10)* } %74, {} addrspace(10)* null, {} addrspace(10)* null, { i8*, {} addrspace(10)* } %76, {} addrspace(10)* null, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %82, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !9739
  ret void, !dbg !9739

L289:                                             ; preds = %L77, %L71, %L66.L289_crit_edge
  %.sroa.079.0.copyload = phi i64 [ %.sroa.079.0.copyload.pre, %L66.L289_crit_edge ], [ %17, %L77 ], [ %.sroa.076.0.copyload, %L71 ], !dbg !9733, !enzyme_inactive !0
  %84 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.pre-phi1.pre-phi.pre-phi.pre-phi = addrspacecast i8 addrspace(10)* %84 to i8 addrspace(11)*
  %current_task196 = getelementptr inbounds {}**, {}*** %3, i64 -14
  %85 = bitcast {}*** %current_task196 to {}*
  %.sroa.280.0..sroa_idx81 = getelementptr i8, i8 addrspace(11)* %.pre-phi1.pre-phi.pre-phi.pre-phi, i64 24, !dbg !9733
  %86 = bitcast i8 addrspace(11)* %.sroa.280.0..sroa_idx81 to i64 addrspace(11)*, !dbg !9733
  %.sroa.280.0.copyload = load i64, i64 addrspace(11)* %86, align 8, !dbg !9733, !tbaa !284, !alias.scope !406, !noalias !9725, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %87 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345797746976 to {}*) to {} addrspace(10)*)) #74, !dbg !9760
  %88 = bitcast {} addrspace(10)* %87 to {} addrspace(10)* addrspace(10)*, !dbg !9760, !enzyme_inactive !0
  %89 = addrspacecast {} addrspace(10)* addrspace(10)* %88 to {} addrspace(10)* addrspace(11)*, !dbg !9760, !enzyme_inactive !0
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %89, align 8, !dbg !9760, !tbaa !424, !alias.scope !315, !noalias !9740
  %90 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %89, i64 1, !dbg !9760
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %90, align 8, !dbg !9760, !tbaa !424, !alias.scope !315, !noalias !9740
  %91 = call noalias nonnull align 8 dereferenceable(88) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Pointer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,60]:Integer, [-1,61]:Integer, [-1,62]:Integer, [-1,63]:Integer, [-1,64]:Pointer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Integer, [-1,81]:Integer, [-1,82]:Integer, [-1,83]:Integer, [-1,84]:Integer, [-1,85]:Integer, [-1,86]:Integer, [-1,87]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 88, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138344087618192 to {}*) to {} addrspace(10)*)) #74, !dbg !9760
  %92 = bitcast {} addrspace(10)* %91 to { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)*, !dbg !9760, !enzyme_inactive !0
  %.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 0, !dbg !9760
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065856 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack103 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 1, !dbg !9760
  store i64 %17, i64 addrspace(10)* %.repack103, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack105 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 2, !dbg !9760
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack105, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack107 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 3, !dbg !9760
  store i64 %19, i64 addrspace(10)* %.repack107, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack109 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 4, !dbg !9760
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065824 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack109, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack111 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 5, !dbg !9760
  store i64 %.sroa.03.0.copyload, i64 addrspace(10)* %.repack111, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack113 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 6, !dbg !9760
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack113, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack115 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 7, !dbg !9760
  store i64 %.sroa.1.0.copyload2, i64 addrspace(10)* %.repack115, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack117 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 8, !dbg !9760
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065792 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack117, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack119.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 0, !dbg !9760
  store i64 %.sroa.079.0.copyload, i64 addrspace(10)* %.repack119.repack, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  %.repack119.repack121 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 1, !dbg !9760
  store i64 %.sroa.280.0.copyload, i64 addrspace(10)* %.repack119.repack121, align 8, !dbg !9760, !tbaa !311, !alias.scope !315, !noalias !9740
  store atomic {} addrspace(10)* %91, {} addrspace(10)* addrspace(11)* %89 release, align 8, !dbg !9760, !tbaa !424, !alias.scope !315, !noalias !9740
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* noundef nonnull %87, {} addrspace(10)* nonnull %91) #75, !dbg !9760
  %93 = bitcast {} addrspace(10)* %87 to i8 addrspace(10)*, !dbg !9760, !enzyme_inactive !0
  %94 = addrspacecast i8 addrspace(10)* %93 to i8 addrspace(11)*, !dbg !9760, !enzyme_inactive !0
  %95 = getelementptr inbounds i8, i8 addrspace(11)* %94, i64 8, !dbg !9760
  %96 = load {}*, {}** @jl_nothing, align 8, !dbg !9760, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !enzyme_inactive !0, !enzyme_type !427, !enzymejl_byref_BITS_REF !0, !enzymejl_source_type_Nothing !0
  %97 = addrspacecast {}* %96 to {} addrspace(10)*, !dbg !9760, !enzyme_inactive !0
  %98 = bitcast i8 addrspace(11)* %95 to {} addrspace(10)* addrspace(11)*, !dbg !9760
  store atomic {} addrspace(10)* %97, {} addrspace(10)* addrspace(11)* %98 release, align 8, !dbg !9760, !tbaa !424, !alias.scope !315, !noalias !9740
  %99 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345802252128 to {}*) to {} addrspace(10)*)) #74, !dbg !9734
  %100 = bitcast {} addrspace(10)* %99 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !9734, !enzyme_inactive !0
  %101 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %100, i64 0, i64 0, !dbg !9734
  store {} addrspace(10)* %87, {} addrspace(10)* addrspace(10)* %101, align 8, !dbg !9734, !tbaa !311, !alias.scope !315, !noalias !9740
  %102 = addrspacecast {} addrspace(10)* %99 to {} addrspace(12)*, !dbg !9734, !enzyme_inactive !0
  call void @ijl_throw({} addrspace(12)* %102) #76, !dbg !9734
  unreachable, !dbg !9734
}

; Function Attrs: mustprogress
define internal fastcc void @fwddiffejulia_gemm__29410({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="138344148970320" "enzymejl_parmtype_ref"="1" %0, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="138344148970320" "enzymejl_parmtype_ref"="1" %"'", {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %2, {} addrspace(10)* align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %"'1") unnamed_addr #71 !dbg !9761 {
top:
  %3 = bitcast {}*** %9 to {}**
  %4 = getelementptr inbounds {}*, {}** %3, i64 -14
  %5 = bitcast {}** %4 to {}*
  %6 = call {} addrspace(10)* @julia.gc_alloc_obj({}* %5, i64 8, {} addrspace(10)* @ejl_enz_no_shadow_exc)
  %7 = bitcast {} addrspace(10)* %6 to i8* addrspace(10)*
  store i8* getelementptr inbounds ([7762 x i8], [7762 x i8]* @enz_exception.11, i32 0, i32 0), i8* addrspace(10)* %7, align 8
  %8 = addrspacecast {} addrspace(10)* %6 to {} addrspace(12)*
  call void @jl_throw({} addrspace(12)* %8) #72
  %9 = call {}*** @julia.get_pgcstack()
  %10 = call {}*** @julia.get_pgcstack() #73
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i64, align 16
  %14 = alloca i64, align 16
  %15 = alloca i64, align 16
  %"'ipa" = alloca i64, align 16
  store i64 0, i64* %"'ipa", align 16
  %16 = alloca i64, align 16
  %17 = alloca i64, align 16
  %18 = alloca i64, align 16
  %"'ipa38" = alloca i64, align 16
  store i64 0, i64* %"'ipa38", align 16
  %19 = alloca i64, align 16
  %20 = alloca i64, align 16
  %ptls_field97 = getelementptr inbounds {}**, {}*** %10, i64 2
  %21 = bitcast {}*** %ptls_field97 to i64***
  %ptls_load9899 = load i64**, i64*** %21, align 8, !tbaa !187, !alias.scope !9762, !noalias !9765
  %22 = getelementptr inbounds i64*, i64** %ptls_load9899, i64 2
  %safepoint = load i64*, i64** %22, align 8, !tbaa !196, !alias.scope !9767, !noalias !9770
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #74, !dbg !9772
  fence syncscope("singlethread") seq_cst
  %23 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 0, !dbg !9773
  %24 = load i64, i64 addrspace(11)* %23, align 8, !alias.scope !9776, !noalias !9779, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %25 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 1, !dbg !9781
  %26 = load i64, i64 addrspace(11)* %25, align 8, !alias.scope !9776, !noalias !9779, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %27 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !9784
  %28 = addrspacecast i8 addrspace(10)* %27 to i8 addrspace(11)*, !dbg !9784
  %29 = getelementptr inbounds i8, i8 addrspace(11)* %28, i64 16, !dbg !9784
  %.sroa.03.0..sroa_cast = bitcast i8 addrspace(11)* %29 to i64 addrspace(11)*, !dbg !9784
  %.sroa.03.0.copyload = load i64, i64 addrspace(11)* %.sroa.03.0..sroa_cast, align 8, !dbg !9784, !tbaa !284, !alias.scope !9786, !noalias !9789, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(11)* %28, i64 24, !dbg !9784
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx to i64 addrspace(11)*, !dbg !9784
  %.sroa.1.0.copyload2 = load i64, i64 addrspace(11)* %.sroa.2.0..sroa_cast, align 8, !dbg !9791, !tbaa !284, !alias.scope !9786, !noalias !9789, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %30 = icmp eq i64 %26, %.sroa.03.0.copyload, !dbg !9793
  br i1 %30, label %L71, label %L66.L289_crit_edge, !dbg !9795

L66.L289_crit_edge:                               ; preds = %top
  %31 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.phi.trans.insert90 = addrspacecast i8 addrspace(10)* %31 to i8 addrspace(11)*
  %.phi.trans.insert91 = getelementptr inbounds i8, i8 addrspace(11)* %.phi.trans.insert90, i64 16
  %.sroa.079.0..sroa_idx.phi.trans.insert = bitcast i8 addrspace(11)* %.phi.trans.insert91 to i64 addrspace(11)*
  %.sroa.079.0.copyload.pre = load i64, i64 addrspace(11)* %.sroa.079.0..sroa_idx.phi.trans.insert, align 8, !dbg !9796, !tbaa !284, !alias.scope !406, !noalias !9798, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  br label %L289, !dbg !9795

L71:                                              ; preds = %top
  %32 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*, !dbg !9801
  %33 = addrspacecast i8 addrspace(10)* %32 to i8 addrspace(11)*, !dbg !9801
  %34 = getelementptr inbounds i8, i8 addrspace(11)* %33, i64 16, !dbg !9801
  %.sroa.076.0..sroa_idx = bitcast i8 addrspace(11)* %34 to i64 addrspace(11)*, !dbg !9801
  %.sroa.076.0.copyload = load i64, i64 addrspace(11)* %.sroa.076.0..sroa_idx, align 8, !dbg !9801, !tbaa !284, !alias.scope !9802, !noalias !9805, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %35 = icmp eq i64 %24, %.sroa.076.0.copyload, !dbg !9793
  br i1 %35, label %L77, label %L289, !dbg !9795

L77:                                              ; preds = %L71
  %.sroa.277.0..sroa_idx78 = getelementptr inbounds i8, i8 addrspace(11)* %33, i64 24, !dbg !9801
  %36 = bitcast i8 addrspace(11)* %.sroa.277.0..sroa_idx78 to i64 addrspace(11)*, !dbg !9801
  %.sroa.1.0.copyload = load i64, i64 addrspace(11)* %36, align 8, !dbg !9801, !tbaa !284, !alias.scope !9802, !noalias !9805, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %37 = icmp eq i64 %.sroa.1.0.copyload2, %.sroa.1.0.copyload, !dbg !9793
  br i1 %37, label %L103, label %L289, !dbg !9795

L103:                                             ; preds = %L77
  store i8 78, i8* %11, align 1, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  %38 = bitcast i64* %20 to i8*
  %"'ipc" = bitcast i64* %"'ipa38" to i8*
  %39 = bitcast i64* %19 to i8*
  %40 = bitcast i64* %18 to i8*
  %41 = bitcast i64* %17 to i8*
  %"'ipc39" = bitcast i64* %"'ipa" to i8*
  %42 = bitcast i64* %16 to i8*
  %43 = bitcast i64* %15 to i8*
  %44 = bitcast i64* %14 to i8*
  %45 = bitcast i64* %13 to i8*
  store i8 78, i8* %12, align 1, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  store i64 %24, i64* %13, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  store i64 %.sroa.1.0.copyload2, i64* %14, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  store i64 %26, i64* %15, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  %"'ipc40" = bitcast i64* %"'ipa" to double*, !dbg !9807
  %46 = bitcast i64* %16 to double*, !dbg !9807
  store double 0.000000e+00, double* %"'ipc40", align 16, !dbg !9807, !tbaa !424, !alias.scope !9814, !noalias !9817
  store double 1.000000e+00, double* %46, align 16, !dbg !9807, !tbaa !424, !alias.scope !9819, !noalias !9820
  %47 = call i64 @llvm.smax.i64(i64 %24, i64 1) #73, !dbg !9821
  store i64 %47, i64* %17, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  %48 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !9823
  %49 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %48 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9823
  %50 = bitcast {} addrspace(10)* %1 to i8* addrspace(10)*, !dbg !9823
  %51 = addrspacecast i8* addrspace(10)* %50 to i8* addrspace(11)*, !dbg !9823
  %52 = load i8*, i8* addrspace(11)* %51, align 8, !dbg !9823, !tbaa !343, !alias.scope !9824, !noalias !9825, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %53 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %49, i64 0, i32 1, !dbg !9823
  %54 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %53, align 8, !dbg !9823, !tbaa !343, !alias.scope !9824, !noalias !9825, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %55 = call i64 @llvm.smax.i64(i64 %26, i64 1) #73, !dbg !9821
  store i64 %55, i64* %18, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  %"'ipc41" = bitcast i64* %"'ipa38" to double*, !dbg !9807
  %56 = bitcast i64* %19 to double*, !dbg !9807
  store double 0.000000e+00, double* %"'ipc41", align 16, !dbg !9807, !tbaa !424, !alias.scope !9826, !noalias !9829
  store double 1.000000e+00, double* %56, align 16, !dbg !9807, !tbaa !424, !alias.scope !9831, !noalias !9832
  %"'ipc42" = bitcast {} addrspace(10)* %"'1" to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !9823
  %57 = bitcast {} addrspace(10)* %2 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !9823
  %"'ipc43" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc42" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9823
  %58 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %57 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9823
  %"'ipc44" = bitcast {} addrspace(10)* %"'1" to i8* addrspace(10)*, !dbg !9823
  %59 = bitcast {} addrspace(10)* %2 to i8* addrspace(10)*, !dbg !9823
  %"'ipc45" = addrspacecast i8* addrspace(10)* %"'ipc44" to i8* addrspace(11)*, !dbg !9823
  %60 = addrspacecast i8* addrspace(10)* %59 to i8* addrspace(11)*, !dbg !9823
  %"'ipl" = load i8*, i8* addrspace(11)* %"'ipc45", align 8, !dbg !9823, !tbaa !343, !alias.scope !9833, !noalias !9834
  %61 = load i8*, i8* addrspace(11)* %60, align 8, !dbg !9823, !tbaa !343, !alias.scope !9835, !noalias !9836, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %"'ipg" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc43", i64 0, i32 1, !dbg !9823
  %62 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %58, i64 0, i32 1, !dbg !9823
  %"'ipl46" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg", align 8, !dbg !9823, !tbaa !343, !alias.scope !9833, !noalias !9834, !dereferenceable_or_null !615
  %63 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %62, align 8, !dbg !9823, !tbaa !343, !alias.scope !9835, !noalias !9836, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  store i64 %47, i64* %20, align 16, !dbg !9807, !tbaa !424, !alias.scope !315, !noalias !9811
  %"'ipc47" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %"'" to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !9837
  %64 = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !9837
  %"'ipl48" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc47" unordered, align 8, !dbg !9837, !tbaa !196, !alias.scope !9839, !noalias !9840, !nonnull !0, !dereferenceable !234
  %65 = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %64 unordered, align 8, !dbg !9837, !tbaa !196, !alias.scope !9841, !noalias !9842, !nonnull !0, !dereferenceable !234, !align !235, !enzyme_type !217, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0
  %"'ipc49" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl48" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9843
  %66 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %65 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !9843
  %"'ipg50" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc49", i64 0, i32 0, !dbg !9843
  %67 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %66, i64 0, i32 0, !dbg !9843
  %"'ipl51" = load i8*, i8* addrspace(11)* %"'ipg50", align 8, !dbg !9843, !tbaa !343, !alias.scope !9845, !noalias !9848
  %68 = load i8*, i8* addrspace(11)* %67, align 8, !dbg !9843, !tbaa !343, !alias.scope !9850, !noalias !9851, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %69 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 2, !dbg !9852
  %70 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 3, !dbg !9852
  %71 = load i64, i64 addrspace(11)* %70, align 8, !dbg !9855, !tbaa !196, !alias.scope !9841, !noalias !9842, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %72 = load i64, i64 addrspace(11)* %69, align 8, !dbg !9856, !tbaa !196, !alias.scope !9841, !noalias !9842, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %"'ipc52" = ptrtoint i8* %"'ipl" to i64, !dbg !9857
  %73 = ptrtoint i8* %61 to i64, !dbg !9857
  %74 = ptrtoint i8* %52 to i64, !dbg !9857
  %75 = add i64 %72, %71, !dbg !9856
  %76 = shl i64 %75, 3, !dbg !9859
  %77 = add i64 %76, -8, !dbg !9859
  %"'ipg53" = getelementptr i8, i8* %"'ipl51", i64 %77, !dbg !9860
  %78 = getelementptr i8, i8* %68, i64 %77, !dbg !9860
  %"'ipc54" = ptrtoint i8* %"'ipg53" to i64, !dbg !9860
  %79 = ptrtoint i8* %78 to i64, !dbg !9860
  %"'ipiv" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl", 0, !dbg !9823
  %80 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %61, 0, !dbg !9823
  %"'ipiv55" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv", {} addrspace(10)* %"'ipl46", 1, !dbg !9823
  %81 = insertvalue { i8*, {} addrspace(10)* } %80, {} addrspace(10)* %63, 1, !dbg !9823
  %82 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %52, 0, !dbg !9823
  %83 = insertvalue { i8*, {} addrspace(10)* } %82, {} addrspace(10)* %54, 1, !dbg !9823
  %"'ipc56" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl48" to {} addrspace(10)*, !dbg !9810
  %84 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %65 to {} addrspace(10)*, !dbg !9810
  %"'ipiv57" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc56", 0, !dbg !9810
  %85 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %84, 0, !dbg !9810
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !9810
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !9810, !tbaa !196, !alias.scope !9841, !noalias !9842, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %"'ipiv58" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !9810
  %86 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !9810
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !9810
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !9810, !tbaa !196, !alias.scope !9841, !noalias !9842, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %".unpack124.unpack132'ipiv" = insertvalue [2 x i64] %"'ipiv58", i64 %.unpack124.unpack.unpack131, 1, !dbg !9810
  %.unpack124.unpack132 = insertvalue [2 x i64] %86, i64 %.unpack124.unpack.unpack131, 1, !dbg !9810
  %".unpack124129'ipiv" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv", 0, !dbg !9810
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !9810
  %"'ipiv59" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv57", [1 x [2 x i64]] %".unpack124129'ipiv", 1, !dbg !9810
  %87 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %85, [1 x [2 x i64]] %.unpack124129, 1, !dbg !9810
  %"'ipiv60" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv59", i64 %72, 2, !dbg !9810
  %88 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %87, i64 %72, 2, !dbg !9810
  %"'ipiv61" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv60", i64 %71, 3, !dbg !9810
  %89 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %88, i64 %71, 3, !dbg !9810
  %"'ipl62" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !9810, !alias.scope !9862, !noalias !9865
  %90 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__29424_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !9810, !alias.scope !9865, !noalias !9862
  %91 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %90 to i8*, !dbg !9810
  %92 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl62" to i8*, !dbg !9810
  call void @__enzyme_runtimeinactiveerr1(i8* %91, i8* %92, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.12, i32 0, i32 0)), !dbg !9810
  %93 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl62" to void (i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i64, i64)**, !dbg !9810
  %94 = load void (i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i8*, i8*, i8*, i8*, i64, i64, i8*, i8*, i64, i64, i64, i64)** %93, align 8, !dbg !9810
  call void %94(i8* %11, i8* %11, i8* %12, i8* %12, i8* %45, i8* %45, i8* %44, i8* %44, i8* %43, i8* %43, i8* %42, i8* %"'ipc39", i64 %79, i64 %"'ipc54", i8* %41, i8* %41, i64 %74, i64 %74, i8* %40, i8* %40, i8* %39, i8* %"'ipc", i64 %73, i64 %"'ipc52", i8* %38, i8* %38, i64 1, i64 1, i64 1, i64 1) [ "jl_roots"({} addrspace(10)* null, { i8*, {} addrspace(10)* } %81, { i8*, {} addrspace(10)* } %"'ipiv55", {} addrspace(10)* null, {} addrspace(10)* null, { i8*, {} addrspace(10)* } %83, {} addrspace(10)* null, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %89, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv61", {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !9810
  ret void

L289:                                             ; preds = %L77, %L71, %L66.L289_crit_edge
  %.sroa.079.0.copyload = phi i64 [ %.sroa.079.0.copyload.pre, %L66.L289_crit_edge ], [ %24, %L77 ], [ %.sroa.076.0.copyload, %L71 ], !dbg !9796, !enzyme_inactive !0
  %95 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.pre-phi1.pre-phi.pre-phi.pre-phi = addrspacecast i8 addrspace(10)* %95 to i8 addrspace(11)*
  %current_task196 = getelementptr inbounds {}**, {}*** %10, i64 -14
  %96 = bitcast {}*** %current_task196 to {}*
  %.sroa.280.0..sroa_idx81 = getelementptr i8, i8 addrspace(11)* %.pre-phi1.pre-phi.pre-phi.pre-phi, i64 24, !dbg !9796
  %97 = bitcast i8 addrspace(11)* %.sroa.280.0..sroa_idx81 to i64 addrspace(11)*, !dbg !9796
  %.sroa.280.0.copyload = load i64, i64 addrspace(11)* %97, align 8, !dbg !9796, !tbaa !284, !alias.scope !406, !noalias !9798, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %98 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %96, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345797746976 to {}*) to {} addrspace(10)*)) #75, !dbg !9867
  %99 = bitcast {} addrspace(10)* %98 to {} addrspace(10)* addrspace(10)*, !dbg !9867, !enzyme_inactive !0
  %100 = addrspacecast {} addrspace(10)* addrspace(10)* %99 to {} addrspace(10)* addrspace(11)*, !dbg !9867, !enzyme_inactive !0
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %100, align 8, !dbg !9867, !tbaa !424, !alias.scope !315, !noalias !9811
  %101 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %100, i64 1, !dbg !9867
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %101, align 8, !dbg !9867, !tbaa !424, !alias.scope !315, !noalias !9811
  %102 = call noalias nonnull align 8 dereferenceable(88) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Pointer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,60]:Integer, [-1,61]:Integer, [-1,62]:Integer, [-1,63]:Integer, [-1,64]:Pointer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Integer, [-1,81]:Integer, [-1,82]:Integer, [-1,83]:Integer, [-1,84]:Integer, [-1,85]:Integer, [-1,86]:Integer, [-1,87]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %96, i64 noundef 88, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138344087618192 to {}*) to {} addrspace(10)*)) #75, !dbg !9867
  %103 = bitcast {} addrspace(10)* %102 to { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)*, !dbg !9867, !enzyme_inactive !0
  %.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 0, !dbg !9867
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065856 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack103 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 1, !dbg !9867
  store i64 %24, i64 addrspace(10)* %.repack103, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack105 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 2, !dbg !9867
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack105, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack107 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 3, !dbg !9867
  store i64 %26, i64 addrspace(10)* %.repack107, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack109 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 4, !dbg !9867
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065824 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack109, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack111 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 5, !dbg !9867
  store i64 %.sroa.03.0.copyload, i64 addrspace(10)* %.repack111, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack113 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 6, !dbg !9867
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack113, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack115 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 7, !dbg !9867
  store i64 %.sroa.1.0.copyload2, i64 addrspace(10)* %.repack115, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack117 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 8, !dbg !9867
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065792 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack117, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack119.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 9, i64 0, !dbg !9867
  store i64 %.sroa.079.0.copyload, i64 addrspace(10)* %.repack119.repack, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  %.repack119.repack121 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %103, i64 0, i32 9, i64 1, !dbg !9867
  store i64 %.sroa.280.0.copyload, i64 addrspace(10)* %.repack119.repack121, align 8, !dbg !9867, !tbaa !311, !alias.scope !315, !noalias !9811
  store atomic {} addrspace(10)* %102, {} addrspace(10)* addrspace(11)* %100 release, align 8, !dbg !9867, !tbaa !424, !alias.scope !315, !noalias !9811
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* noundef nonnull %98, {} addrspace(10)* nonnull %102) #76, !dbg !9867
  %104 = bitcast {} addrspace(10)* %98 to i8 addrspace(10)*, !dbg !9867, !enzyme_inactive !0
  %105 = addrspacecast i8 addrspace(10)* %104 to i8 addrspace(11)*, !dbg !9867, !enzyme_inactive !0
  %106 = getelementptr inbounds i8, i8 addrspace(11)* %105, i64 8, !dbg !9867
  %107 = load {}*, {}** @jl_nothing, align 8, !dbg !9867, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !enzyme_inactive !0, !enzyme_type !427, !enzymejl_byref_BITS_REF !0, !enzymejl_source_type_Nothing !0
  %108 = addrspacecast {}* %107 to {} addrspace(10)*, !dbg !9867, !enzyme_inactive !0
  %109 = bitcast i8 addrspace(11)* %106 to {} addrspace(10)* addrspace(11)*, !dbg !9867
  store atomic {} addrspace(10)* %108, {} addrspace(10)* addrspace(11)* %109 release, align 8, !dbg !9867, !tbaa !424, !alias.scope !315, !noalias !9811
  %110 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %96, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345802252128 to {}*) to {} addrspace(10)*)) #75, !dbg !9797
  %111 = bitcast {} addrspace(10)* %110 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !9797, !enzyme_inactive !0
  %112 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %111, i64 0, i64 0, !dbg !9797
  store {} addrspace(10)* %98, {} addrspace(10)* addrspace(10)* %112, align 8, !dbg !9797, !tbaa !311, !alias.scope !315, !noalias !9811
  %113 = addrspacecast {} addrspace(10)* %110 to {} addrspace(12)*, !dbg !9797, !enzyme_inactive !0
  call void @ijl_throw({} addrspace(12)* %113) #77, !dbg !9797
  unreachable, !dbg !9797
}

Instruction does not dominate all uses!
  %9 = call {}*** @julia.get_pgcstack()
  %3 = bitcast {}*** %9 to {}**
; Function Attrs: mustprogress willreturn
define internal fastcc void @preprocess_julia_gemm__29410({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="138344148970320" "enzymejl_parmtype_ref"="1" %0, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %2) unnamed_addr #70 !dbg !12155 {
top:
  %3 = call {}*** @julia.get_pgcstack() #72
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i64, align 16
  %7 = alloca i64, align 16
  %8 = alloca i64, align 16
  %9 = alloca i64, align 16
  %10 = alloca i64, align 16
  %11 = alloca i64, align 16
  %12 = alloca i64, align 16
  %13 = alloca i64, align 16
  %ptls_field97 = getelementptr inbounds {}**, {}*** %3, i64 2
  %14 = bitcast {}*** %ptls_field97 to i64***
  %ptls_load9899 = load i64**, i64*** %14, align 8, !tbaa !187
  %15 = getelementptr inbounds i64*, i64** %ptls_load9899, i64 2
  %safepoint = load i64*, i64** %15, align 8, !tbaa !196
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #73, !dbg !12156
  fence syncscope("singlethread") seq_cst
  %16 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 0, !dbg !12157
  %17 = load i64, i64 addrspace(11)* %16, align 8, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %18 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 1, !dbg !12160
  %19 = load i64, i64 addrspace(11)* %18, align 8, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %20 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !12163
  %21 = addrspacecast i8 addrspace(10)* %20 to i8 addrspace(11)*, !dbg !12163
  %22 = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 16, !dbg !12163
  %.sroa.03.0..sroa_cast = bitcast i8 addrspace(11)* %22 to i64 addrspace(11)*, !dbg !12163
  %.sroa.03.0.copyload = load i64, i64 addrspace(11)* %.sroa.03.0..sroa_cast, align 8, !dbg !12163, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(11)* %21, i64 24, !dbg !12163
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx to i64 addrspace(11)*, !dbg !12163
  %.sroa.1.0.copyload2 = load i64, i64 addrspace(11)* %.sroa.2.0..sroa_cast, align 8, !dbg !12168, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %23 = icmp eq i64 %19, %.sroa.03.0.copyload, !dbg !12170
  br i1 %23, label %L71, label %L66.L289_crit_edge, !dbg !12172

L66.L289_crit_edge:                               ; preds = %top
  %24 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.phi.trans.insert90 = addrspacecast i8 addrspace(10)* %24 to i8 addrspace(11)*
  %.phi.trans.insert91 = getelementptr inbounds i8, i8 addrspace(11)* %.phi.trans.insert90, i64 16
  %.sroa.079.0..sroa_idx.phi.trans.insert = bitcast i8 addrspace(11)* %.phi.trans.insert91 to i64 addrspace(11)*
  %.sroa.079.0.copyload.pre = load i64, i64 addrspace(11)* %.sroa.079.0..sroa_idx.phi.trans.insert, align 8, !dbg !12173, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  br label %L289, !dbg !12172

L71:                                              ; preds = %top
  %25 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*, !dbg !12175
  %26 = addrspacecast i8 addrspace(10)* %25 to i8 addrspace(11)*, !dbg !12175
  %27 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 16, !dbg !12175
  %.sroa.076.0..sroa_idx = bitcast i8 addrspace(11)* %27 to i64 addrspace(11)*, !dbg !12175
  %.sroa.076.0.copyload = load i64, i64 addrspace(11)* %.sroa.076.0..sroa_idx, align 8, !dbg !12175, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %28 = icmp eq i64 %17, %.sroa.076.0.copyload, !dbg !12170
  br i1 %28, label %L77, label %L289, !dbg !12172

L77:                                              ; preds = %L71
  %.sroa.277.0..sroa_idx78 = getelementptr inbounds i8, i8 addrspace(11)* %26, i64 24, !dbg !12175
  %29 = bitcast i8 addrspace(11)* %.sroa.277.0..sroa_idx78 to i64 addrspace(11)*, !dbg !12175
  %.sroa.1.0.copyload = load i64, i64 addrspace(11)* %29, align 8, !dbg !12175, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %30 = icmp eq i64 %.sroa.1.0.copyload2, %.sroa.1.0.copyload, !dbg !12170
  br i1 %30, label %L103, label %L289, !dbg !12172

L103:                                             ; preds = %L77
  store i8 78, i8* %4, align 1, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %31 = bitcast i64* %13 to i8*
  %32 = bitcast i64* %12 to i8*
  %33 = bitcast i64* %11 to i8*
  %34 = bitcast i64* %10 to i8*
  %35 = bitcast i64* %9 to i8*
  %36 = bitcast i64* %8 to i8*
  %37 = bitcast i64* %7 to i8*
  %38 = bitcast i64* %6 to i8*
  store i8 78, i8* %5, align 1, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  store i64 %17, i64* %6, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  store i64 %.sroa.1.0.copyload2, i64* %7, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  store i64 %19, i64* %8, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %39 = bitcast i64* %9 to double*, !dbg !12176
  store double 1.000000e+00, double* %39, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %40 = call i64 @llvm.smax.i64(i64 %17, i64 1) #72, !dbg !12183
  store i64 %40, i64* %10, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %41 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12185
  %42 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %41 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12185
  %43 = bitcast {} addrspace(10)* %1 to i8* addrspace(10)*, !dbg !12185
  %44 = addrspacecast i8* addrspace(10)* %43 to i8* addrspace(11)*, !dbg !12185
  %45 = load i8*, i8* addrspace(11)* %44, align 8, !dbg !12185, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %46 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %42, i64 0, i32 1, !dbg !12185
  %47 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, align 8, !dbg !12185, !tbaa !343, !alias.scope !377, !noalias !559, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %48 = call i64 @llvm.smax.i64(i64 %19, i64 1) #72, !dbg !12183
  store i64 %48, i64* %11, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %49 = bitcast i64* %12 to double*, !dbg !12176
  store double 1.000000e+00, double* %49, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %50 = bitcast {} addrspace(10)* %2 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12185
  %51 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %50 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12185
  %52 = bitcast {} addrspace(10)* %2 to i8* addrspace(10)*, !dbg !12185
  %53 = addrspacecast i8* addrspace(10)* %52 to i8* addrspace(11)*, !dbg !12185
  %54 = load i8*, i8* addrspace(11)* %53, align 8, !dbg !12185, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %55 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %51, i64 0, i32 1, !dbg !12185
  %56 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %55, align 8, !dbg !12185, !tbaa !343, !alias.scope !377, !noalias !559, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  store i64 %40, i64* %13, align 16, !dbg !12176, !tbaa !424, !alias.scope !315, !noalias !12180
  %57 = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12186
  %58 = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %57 unordered, align 8, !dbg !12186, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !dereferenceable !234, !align !235, !enzyme_type !217, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0
  %59 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %58 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12188
  %60 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %59, i64 0, i32 0, !dbg !12188
  %61 = load i8*, i8* addrspace(11)* %60, align 8, !dbg !12188, !tbaa !343, !alias.scope !377, !noalias !559, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %62 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 2, !dbg !12190
  %63 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 3, !dbg !12190
  %64 = load i64, i64 addrspace(11)* %63, align 8, !dbg !12193, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %65 = load i64, i64 addrspace(11)* %62, align 8, !dbg !12194, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %66 = ptrtoint i8* %54 to i64, !dbg !12195
  %67 = ptrtoint i8* %45 to i64, !dbg !12195
  %68 = add i64 %65, %64, !dbg !12194
  %69 = shl i64 %68, 3, !dbg !12197
  %70 = add i64 %69, -8, !dbg !12197
  %71 = getelementptr i8, i8* %61, i64 %70, !dbg !12198
  %72 = ptrtoint i8* %71 to i64, !dbg !12198
  %73 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %54, 0, !dbg !12185
  %74 = insertvalue { i8*, {} addrspace(10)* } %73, {} addrspace(10)* %56, 1, !dbg !12185
  %75 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %45, 0, !dbg !12185
  %76 = insertvalue { i8*, {} addrspace(10)* } %75, {} addrspace(10)* %47, 1, !dbg !12185
  %77 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %58 to {} addrspace(10)*, !dbg !12179
  %78 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %77, 0, !dbg !12179
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !12179
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !12179, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %79 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12179
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !12179
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !12179, !tbaa !196, !alias.scope !369, !noalias !483, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.unpack124.unpack132 = insertvalue [2 x i64] %79, i64 %.unpack124.unpack.unpack131, 1, !dbg !12179
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !12179
  %80 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %78, [1 x [2 x i64]] %.unpack124129, 1, !dbg !12179
  %81 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %80, i64 %65, 2, !dbg !12179
  %82 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %81, i64 %64, 3, !dbg !12179
  %83 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__29424_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !12179
  call void %83(i8* nonnull %4, i8* nonnull %5, i8* nonnull %38, i8* nonnull %37, i8* nonnull %36, i8* nonnull %35, i64 %72, i8* nonnull %34, i64 %67, i8* nonnull %33, i8* nonnull %32, i64 %66, i8* nonnull %31, i64 1, i64 1) #72 [ "jl_roots"({} addrspace(10)* null, { i8*, {} addrspace(10)* } %74, {} addrspace(10)* null, {} addrspace(10)* null, { i8*, {} addrspace(10)* } %76, {} addrspace(10)* null, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %82, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !12179
  ret void, !dbg !12179

L289:                                             ; preds = %L77, %L71, %L66.L289_crit_edge
  %.sroa.079.0.copyload = phi i64 [ %.sroa.079.0.copyload.pre, %L66.L289_crit_edge ], [ %17, %L77 ], [ %.sroa.076.0.copyload, %L71 ], !dbg !12173, !enzyme_inactive !0
  %84 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.pre-phi1.pre-phi.pre-phi.pre-phi = addrspacecast i8 addrspace(10)* %84 to i8 addrspace(11)*
  %current_task196 = getelementptr inbounds {}**, {}*** %3, i64 -14
  %85 = bitcast {}*** %current_task196 to {}*
  %.sroa.280.0..sroa_idx81 = getelementptr i8, i8 addrspace(11)* %.pre-phi1.pre-phi.pre-phi.pre-phi, i64 24, !dbg !12173
  %86 = bitcast i8 addrspace(11)* %.sroa.280.0..sroa_idx81 to i64 addrspace(11)*, !dbg !12173
  %.sroa.280.0.copyload = load i64, i64 addrspace(11)* %86, align 8, !dbg !12173, !tbaa !284, !alias.scope !406, !noalias !12165, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %87 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345797746976 to {}*) to {} addrspace(10)*)) #74, !dbg !12200
  %88 = bitcast {} addrspace(10)* %87 to {} addrspace(10)* addrspace(10)*, !dbg !12200, !enzyme_inactive !0
  %89 = addrspacecast {} addrspace(10)* addrspace(10)* %88 to {} addrspace(10)* addrspace(11)*, !dbg !12200, !enzyme_inactive !0
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %89, align 8, !dbg !12200, !tbaa !424, !alias.scope !315, !noalias !12180
  %90 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %89, i64 1, !dbg !12200
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %90, align 8, !dbg !12200, !tbaa !424, !alias.scope !315, !noalias !12180
  %91 = call noalias nonnull align 8 dereferenceable(88) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Pointer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,60]:Integer, [-1,61]:Integer, [-1,62]:Integer, [-1,63]:Integer, [-1,64]:Pointer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Integer, [-1,81]:Integer, [-1,82]:Integer, [-1,83]:Integer, [-1,84]:Integer, [-1,85]:Integer, [-1,86]:Integer, [-1,87]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 88, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138344087618192 to {}*) to {} addrspace(10)*)) #74, !dbg !12200
  %92 = bitcast {} addrspace(10)* %91 to { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)*, !dbg !12200, !enzyme_inactive !0
  %.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 0, !dbg !12200
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065856 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack103 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 1, !dbg !12200
  store i64 %17, i64 addrspace(10)* %.repack103, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack105 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 2, !dbg !12200
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack105, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack107 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 3, !dbg !12200
  store i64 %19, i64 addrspace(10)* %.repack107, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack109 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 4, !dbg !12200
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065824 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack109, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack111 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 5, !dbg !12200
  store i64 %.sroa.03.0.copyload, i64 addrspace(10)* %.repack111, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack113 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 6, !dbg !12200
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack113, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack115 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 7, !dbg !12200
  store i64 %.sroa.1.0.copyload2, i64 addrspace(10)* %.repack115, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack117 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 8, !dbg !12200
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065792 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack117, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack119.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 0, !dbg !12200
  store i64 %.sroa.079.0.copyload, i64 addrspace(10)* %.repack119.repack, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  %.repack119.repack121 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %92, i64 0, i32 9, i64 1, !dbg !12200
  store i64 %.sroa.280.0.copyload, i64 addrspace(10)* %.repack119.repack121, align 8, !dbg !12200, !tbaa !311, !alias.scope !315, !noalias !12180
  store atomic {} addrspace(10)* %91, {} addrspace(10)* addrspace(11)* %89 release, align 8, !dbg !12200, !tbaa !424, !alias.scope !315, !noalias !12180
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* noundef nonnull %87, {} addrspace(10)* nonnull %91) #75, !dbg !12200
  %93 = bitcast {} addrspace(10)* %87 to i8 addrspace(10)*, !dbg !12200, !enzyme_inactive !0
  %94 = addrspacecast i8 addrspace(10)* %93 to i8 addrspace(11)*, !dbg !12200, !enzyme_inactive !0
  %95 = getelementptr inbounds i8, i8 addrspace(11)* %94, i64 8, !dbg !12200
  %96 = load {}*, {}** @jl_nothing, align 8, !dbg !12200, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !enzyme_inactive !0, !enzyme_type !427, !enzymejl_byref_BITS_REF !0, !enzymejl_source_type_Nothing !0
  %97 = addrspacecast {}* %96 to {} addrspace(10)*, !dbg !12200, !enzyme_inactive !0
  %98 = bitcast i8 addrspace(11)* %95 to {} addrspace(10)* addrspace(11)*, !dbg !12200
  store atomic {} addrspace(10)* %97, {} addrspace(10)* addrspace(11)* %98 release, align 8, !dbg !12200, !tbaa !424, !alias.scope !315, !noalias !12180
  %99 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %85, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345802252128 to {}*) to {} addrspace(10)*)) #74, !dbg !12174
  %100 = bitcast {} addrspace(10)* %99 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !12174, !enzyme_inactive !0
  %101 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %100, i64 0, i64 0, !dbg !12174
  store {} addrspace(10)* %87, {} addrspace(10)* addrspace(10)* %101, align 8, !dbg !12174, !tbaa !311, !alias.scope !315, !noalias !12180
  %102 = addrspacecast {} addrspace(10)* %99 to {} addrspace(12)*, !dbg !12174, !enzyme_inactive !0
  call void @ijl_throw({} addrspace(12)* %102) #76, !dbg !12174
  unreachable, !dbg !12174
}

; Function Attrs: mustprogress
define internal fastcc void @fwddiffe11julia_gemm__29410({ { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(112) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Integer, [-1,49]:Integer, [-1,50]:Integer, [-1,51]:Integer, [-1,52]:Integer, [-1,53]:Integer, [-1,54]:Integer, [-1,55]:Integer}" "enzymejl_parmtype"="138344148970320" "enzymejl_parmtype_ref"="1" %0, [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* noundef nonnull readonly align 8 dereferenceable(32) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer}" "enzymejl_parmtype"="138345996135184" "enzymejl_parmtype_ref"="2" %2, [11 x {} addrspace(10)*] %"'1") unnamed_addr #71 !dbg !12201 {
top:
  %3 = bitcast {}*** %9 to {}**
  %4 = getelementptr inbounds {}*, {}** %3, i64 -14
  %5 = bitcast {}** %4 to {}*
  %6 = call {} addrspace(10)* @julia.gc_alloc_obj({}* %5, i64 8, {} addrspace(10)* @ejl_enz_no_shadow_exc)
  %7 = bitcast {} addrspace(10)* %6 to i8* addrspace(10)*
  store i8* getelementptr inbounds ([7777 x i8], [7777 x i8]* @enz_exception.11, i32 0, i32 0), i8* addrspace(10)* %7, align 8
  %8 = addrspacecast {} addrspace(10)* %6 to {} addrspace(12)*
  call void @jl_throw({} addrspace(12)* %8) #72
  %9 = call {}*** @julia.get_pgcstack()
  %10 = call {}*** @julia.get_pgcstack() #73
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i64, align 16
  %14 = alloca i64, align 16
  %15 = alloca i64, align 16
  %"'ipa" = alloca i64, align 16
  %16 = insertvalue [11 x i64*] undef, i64* %"'ipa", 0
  %"'ipa38" = alloca i64, align 16
  %17 = insertvalue [11 x i64*] %16, i64* %"'ipa38", 1
  %"'ipa39" = alloca i64, align 16
  %18 = insertvalue [11 x i64*] %17, i64* %"'ipa39", 2
  %"'ipa40" = alloca i64, align 16
  %19 = insertvalue [11 x i64*] %18, i64* %"'ipa40", 3
  %"'ipa41" = alloca i64, align 16
  %20 = insertvalue [11 x i64*] %19, i64* %"'ipa41", 4
  %"'ipa42" = alloca i64, align 16
  %21 = insertvalue [11 x i64*] %20, i64* %"'ipa42", 5
  %"'ipa43" = alloca i64, align 16
  %22 = insertvalue [11 x i64*] %21, i64* %"'ipa43", 6
  %"'ipa44" = alloca i64, align 16
  %23 = insertvalue [11 x i64*] %22, i64* %"'ipa44", 7
  %"'ipa45" = alloca i64, align 16
  %24 = insertvalue [11 x i64*] %23, i64* %"'ipa45", 8
  %"'ipa46" = alloca i64, align 16
  %25 = insertvalue [11 x i64*] %24, i64* %"'ipa46", 9
  %"'ipa47" = alloca i64, align 16
  %26 = insertvalue [11 x i64*] %25, i64* %"'ipa47", 10
  store i64 0, i64* %"'ipa", align 16
  store i64 0, i64* %"'ipa38", align 16
  store i64 0, i64* %"'ipa39", align 16
  store i64 0, i64* %"'ipa40", align 16
  store i64 0, i64* %"'ipa41", align 16
  store i64 0, i64* %"'ipa42", align 16
  store i64 0, i64* %"'ipa43", align 16
  store i64 0, i64* %"'ipa44", align 16
  store i64 0, i64* %"'ipa45", align 16
  store i64 0, i64* %"'ipa46", align 16
  store i64 0, i64* %"'ipa47", align 16
  %27 = alloca i64, align 16
  %28 = alloca i64, align 16
  %29 = alloca i64, align 16
  %"'ipa48" = alloca i64, align 16
  %30 = insertvalue [11 x i64*] undef, i64* %"'ipa48", 0
  %"'ipa49" = alloca i64, align 16
  %31 = insertvalue [11 x i64*] %30, i64* %"'ipa49", 1
  %"'ipa50" = alloca i64, align 16
  %32 = insertvalue [11 x i64*] %31, i64* %"'ipa50", 2
  %"'ipa51" = alloca i64, align 16
  %33 = insertvalue [11 x i64*] %32, i64* %"'ipa51", 3
  %"'ipa52" = alloca i64, align 16
  %34 = insertvalue [11 x i64*] %33, i64* %"'ipa52", 4
  %"'ipa53" = alloca i64, align 16
  %35 = insertvalue [11 x i64*] %34, i64* %"'ipa53", 5
  %"'ipa54" = alloca i64, align 16
  %36 = insertvalue [11 x i64*] %35, i64* %"'ipa54", 6
  %"'ipa55" = alloca i64, align 16
  %37 = insertvalue [11 x i64*] %36, i64* %"'ipa55", 7
  %"'ipa56" = alloca i64, align 16
  %38 = insertvalue [11 x i64*] %37, i64* %"'ipa56", 8
  %"'ipa57" = alloca i64, align 16
  %39 = insertvalue [11 x i64*] %38, i64* %"'ipa57", 9
  %"'ipa58" = alloca i64, align 16
  %40 = insertvalue [11 x i64*] %39, i64* %"'ipa58", 10
  store i64 0, i64* %"'ipa48", align 16
  store i64 0, i64* %"'ipa49", align 16
  store i64 0, i64* %"'ipa50", align 16
  store i64 0, i64* %"'ipa51", align 16
  store i64 0, i64* %"'ipa52", align 16
  store i64 0, i64* %"'ipa53", align 16
  store i64 0, i64* %"'ipa54", align 16
  store i64 0, i64* %"'ipa55", align 16
  store i64 0, i64* %"'ipa56", align 16
  store i64 0, i64* %"'ipa57", align 16
  store i64 0, i64* %"'ipa58", align 16
  %41 = alloca i64, align 16
  %42 = alloca i64, align 16
  %ptls_field97 = getelementptr inbounds {}**, {}*** %10, i64 2
  %43 = bitcast {}*** %ptls_field97 to i64***
  %ptls_load9899 = load i64**, i64*** %43, align 8, !tbaa !187, !alias.scope !12202, !noalias !12205
  %44 = getelementptr inbounds i64*, i64** %ptls_load9899, i64 2
  %safepoint = load i64*, i64** %44, align 8, !tbaa !196, !alias.scope !12217, !noalias !12220
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #74, !dbg !12232
  fence syncscope("singlethread") seq_cst
  %45 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 0, !dbg !12233
  %46 = load i64, i64 addrspace(11)* %45, align 8, !alias.scope !12236, !noalias !12239, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %47 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 1, i64 1, !dbg !12251
  %48 = load i64, i64 addrspace(11)* %47, align 8, !alias.scope !12236, !noalias !12239, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %49 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !12254
  %50 = addrspacecast i8 addrspace(10)* %49 to i8 addrspace(11)*, !dbg !12254
  %51 = getelementptr inbounds i8, i8 addrspace(11)* %50, i64 16, !dbg !12254
  %.sroa.03.0..sroa_cast = bitcast i8 addrspace(11)* %51 to i64 addrspace(11)*, !dbg !12254
  %.sroa.03.0.copyload = load i64, i64 addrspace(11)* %.sroa.03.0..sroa_cast, align 8, !dbg !12254, !tbaa !284, !alias.scope !12256, !noalias !12259, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(11)* %50, i64 24, !dbg !12254
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx to i64 addrspace(11)*, !dbg !12254
  %.sroa.1.0.copyload2 = load i64, i64 addrspace(11)* %.sroa.2.0..sroa_cast, align 8, !dbg !12271, !tbaa !284, !alias.scope !12256, !noalias !12259, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %52 = icmp eq i64 %48, %.sroa.03.0.copyload, !dbg !12273
  br i1 %52, label %L71, label %L66.L289_crit_edge, !dbg !12275

L66.L289_crit_edge:                               ; preds = %top
  %53 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.phi.trans.insert90 = addrspacecast i8 addrspace(10)* %53 to i8 addrspace(11)*
  %.phi.trans.insert91 = getelementptr inbounds i8, i8 addrspace(11)* %.phi.trans.insert90, i64 16
  %.sroa.079.0..sroa_idx.phi.trans.insert = bitcast i8 addrspace(11)* %.phi.trans.insert91 to i64 addrspace(11)*
  %.sroa.079.0.copyload.pre = load i64, i64 addrspace(11)* %.sroa.079.0..sroa_idx.phi.trans.insert, align 8, !dbg !12276, !tbaa !284, !alias.scope !406, !noalias !12278, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  br label %L289, !dbg !12275

L71:                                              ; preds = %top
  %54 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*, !dbg !12281
  %55 = addrspacecast i8 addrspace(10)* %54 to i8 addrspace(11)*, !dbg !12281
  %56 = getelementptr inbounds i8, i8 addrspace(11)* %55, i64 16, !dbg !12281
  %.sroa.076.0..sroa_idx = bitcast i8 addrspace(11)* %56 to i64 addrspace(11)*, !dbg !12281
  %.sroa.076.0.copyload = load i64, i64 addrspace(11)* %.sroa.076.0..sroa_idx, align 8, !dbg !12281, !tbaa !284, !alias.scope !12282, !noalias !12285, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %57 = icmp eq i64 %46, %.sroa.076.0.copyload, !dbg !12273
  br i1 %57, label %L77, label %L289, !dbg !12275

L77:                                              ; preds = %L71
  %.sroa.277.0..sroa_idx78 = getelementptr inbounds i8, i8 addrspace(11)* %55, i64 24, !dbg !12281
  %58 = bitcast i8 addrspace(11)* %.sroa.277.0..sroa_idx78 to i64 addrspace(11)*, !dbg !12281
  %.sroa.1.0.copyload = load i64, i64 addrspace(11)* %58, align 8, !dbg !12281, !tbaa !284, !alias.scope !12282, !noalias !12285, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %59 = icmp eq i64 %.sroa.1.0.copyload2, %.sroa.1.0.copyload, !dbg !12273
  br i1 %59, label %L103, label %L289, !dbg !12275

L103:                                             ; preds = %L77
  store i8 78, i8* %11, align 1, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  %60 = bitcast i64* %42 to i8*
  %"'ipc" = bitcast i64* %"'ipa48" to i8*
  %61 = insertvalue [11 x i8*] undef, i8* %"'ipc", 0
  %"'ipc59" = bitcast i64* %"'ipa49" to i8*
  %62 = insertvalue [11 x i8*] %61, i8* %"'ipc59", 1
  %"'ipc60" = bitcast i64* %"'ipa50" to i8*
  %63 = insertvalue [11 x i8*] %62, i8* %"'ipc60", 2
  %"'ipc61" = bitcast i64* %"'ipa51" to i8*
  %64 = insertvalue [11 x i8*] %63, i8* %"'ipc61", 3
  %"'ipc62" = bitcast i64* %"'ipa52" to i8*
  %65 = insertvalue [11 x i8*] %64, i8* %"'ipc62", 4
  %"'ipc63" = bitcast i64* %"'ipa53" to i8*
  %66 = insertvalue [11 x i8*] %65, i8* %"'ipc63", 5
  %"'ipc64" = bitcast i64* %"'ipa54" to i8*
  %67 = insertvalue [11 x i8*] %66, i8* %"'ipc64", 6
  %"'ipc65" = bitcast i64* %"'ipa55" to i8*
  %68 = insertvalue [11 x i8*] %67, i8* %"'ipc65", 7
  %"'ipc66" = bitcast i64* %"'ipa56" to i8*
  %69 = insertvalue [11 x i8*] %68, i8* %"'ipc66", 8
  %"'ipc67" = bitcast i64* %"'ipa57" to i8*
  %70 = insertvalue [11 x i8*] %69, i8* %"'ipc67", 9
  %"'ipc68" = bitcast i64* %"'ipa58" to i8*
  %71 = insertvalue [11 x i8*] %70, i8* %"'ipc68", 10
  %72 = bitcast i64* %41 to i8*
  %73 = bitcast i64* %29 to i8*
  %74 = bitcast i64* %28 to i8*
  %"'ipc69" = bitcast i64* %"'ipa" to i8*
  %75 = insertvalue [11 x i8*] undef, i8* %"'ipc69", 0
  %"'ipc70" = bitcast i64* %"'ipa38" to i8*
  %76 = insertvalue [11 x i8*] %75, i8* %"'ipc70", 1
  %"'ipc71" = bitcast i64* %"'ipa39" to i8*
  %77 = insertvalue [11 x i8*] %76, i8* %"'ipc71", 2
  %"'ipc72" = bitcast i64* %"'ipa40" to i8*
  %78 = insertvalue [11 x i8*] %77, i8* %"'ipc72", 3
  %"'ipc73" = bitcast i64* %"'ipa41" to i8*
  %79 = insertvalue [11 x i8*] %78, i8* %"'ipc73", 4
  %"'ipc74" = bitcast i64* %"'ipa42" to i8*
  %80 = insertvalue [11 x i8*] %79, i8* %"'ipc74", 5
  %"'ipc75" = bitcast i64* %"'ipa43" to i8*
  %81 = insertvalue [11 x i8*] %80, i8* %"'ipc75", 6
  %"'ipc76" = bitcast i64* %"'ipa44" to i8*
  %82 = insertvalue [11 x i8*] %81, i8* %"'ipc76", 7
  %"'ipc77" = bitcast i64* %"'ipa45" to i8*
  %83 = insertvalue [11 x i8*] %82, i8* %"'ipc77", 8
  %"'ipc78" = bitcast i64* %"'ipa46" to i8*
  %84 = insertvalue [11 x i8*] %83, i8* %"'ipc78", 9
  %"'ipc79" = bitcast i64* %"'ipa47" to i8*
  %85 = insertvalue [11 x i8*] %84, i8* %"'ipc79", 10
  %86 = bitcast i64* %27 to i8*
  %87 = bitcast i64* %15 to i8*
  %88 = bitcast i64* %14 to i8*
  %89 = bitcast i64* %13 to i8*
  store i8 78, i8* %12, align 1, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  store i64 %46, i64* %13, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  store i64 %.sroa.1.0.copyload2, i64* %14, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  store i64 %48, i64* %15, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  %"'ipc80" = bitcast i64* %"'ipa" to double*, !dbg !12297
  %90 = insertvalue [11 x double*] undef, double* %"'ipc80", 0, !dbg !12297
  %"'ipc81" = bitcast i64* %"'ipa38" to double*, !dbg !12297
  %91 = insertvalue [11 x double*] %90, double* %"'ipc81", 1, !dbg !12297
  %"'ipc82" = bitcast i64* %"'ipa39" to double*, !dbg !12297
  %92 = insertvalue [11 x double*] %91, double* %"'ipc82", 2, !dbg !12297
  %"'ipc83" = bitcast i64* %"'ipa40" to double*, !dbg !12297
  %93 = insertvalue [11 x double*] %92, double* %"'ipc83", 3, !dbg !12297
  %"'ipc84" = bitcast i64* %"'ipa41" to double*, !dbg !12297
  %94 = insertvalue [11 x double*] %93, double* %"'ipc84", 4, !dbg !12297
  %"'ipc85" = bitcast i64* %"'ipa42" to double*, !dbg !12297
  %95 = insertvalue [11 x double*] %94, double* %"'ipc85", 5, !dbg !12297
  %"'ipc86" = bitcast i64* %"'ipa43" to double*, !dbg !12297
  %96 = insertvalue [11 x double*] %95, double* %"'ipc86", 6, !dbg !12297
  %"'ipc87" = bitcast i64* %"'ipa44" to double*, !dbg !12297
  %97 = insertvalue [11 x double*] %96, double* %"'ipc87", 7, !dbg !12297
  %"'ipc88" = bitcast i64* %"'ipa45" to double*, !dbg !12297
  %98 = insertvalue [11 x double*] %97, double* %"'ipc88", 8, !dbg !12297
  %"'ipc89" = bitcast i64* %"'ipa46" to double*, !dbg !12297
  %99 = insertvalue [11 x double*] %98, double* %"'ipc89", 9, !dbg !12297
  %"'ipc90" = bitcast i64* %"'ipa47" to double*, !dbg !12297
  %100 = insertvalue [11 x double*] %99, double* %"'ipc90", 10, !dbg !12297
  %101 = bitcast i64* %27 to double*, !dbg !12297
  store double 0.000000e+00, double* %"'ipc80", align 16, !dbg !12297, !tbaa !424, !alias.scope !12304, !noalias !12307
  store double 0.000000e+00, double* %"'ipc81", align 16, !dbg !12297, !tbaa !424, !alias.scope !12319, !noalias !12320
  store double 0.000000e+00, double* %"'ipc82", align 16, !dbg !12297, !tbaa !424, !alias.scope !12321, !noalias !12322
  store double 0.000000e+00, double* %"'ipc83", align 16, !dbg !12297, !tbaa !424, !alias.scope !12323, !noalias !12324
  store double 0.000000e+00, double* %"'ipc84", align 16, !dbg !12297, !tbaa !424, !alias.scope !12325, !noalias !12326
  store double 0.000000e+00, double* %"'ipc85", align 16, !dbg !12297, !tbaa !424, !alias.scope !12327, !noalias !12328
  store double 0.000000e+00, double* %"'ipc86", align 16, !dbg !12297, !tbaa !424, !alias.scope !12329, !noalias !12330
  store double 0.000000e+00, double* %"'ipc87", align 16, !dbg !12297, !tbaa !424, !alias.scope !12331, !noalias !12332
  store double 0.000000e+00, double* %"'ipc88", align 16, !dbg !12297, !tbaa !424, !alias.scope !12333, !noalias !12334
  store double 0.000000e+00, double* %"'ipc89", align 16, !dbg !12297, !tbaa !424, !alias.scope !12335, !noalias !12336
  store double 0.000000e+00, double* %"'ipc90", align 16, !dbg !12297, !tbaa !424, !alias.scope !12337, !noalias !12338
  store double 1.000000e+00, double* %101, align 16, !dbg !12297, !tbaa !424, !alias.scope !12339, !noalias !12340
  %102 = call i64 @llvm.smax.i64(i64 %46, i64 1) #73, !dbg !12341
  store i64 %102, i64* %28, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  %103 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %104 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %103 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %105 = bitcast {} addrspace(10)* %1 to i8* addrspace(10)*, !dbg !12343
  %106 = addrspacecast i8* addrspace(10)* %105 to i8* addrspace(11)*, !dbg !12343
  %107 = load i8*, i8* addrspace(11)* %106, align 8, !dbg !12343, !tbaa !343, !alias.scope !12344, !noalias !12345, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %108 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %104, i64 0, i32 1, !dbg !12343
  %109 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %108, align 8, !dbg !12343, !tbaa !343, !alias.scope !12344, !noalias !12345, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %110 = call i64 @llvm.smax.i64(i64 %48, i64 1) #73, !dbg !12341
  store i64 %110, i64* %29, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  %"'ipc91" = bitcast i64* %"'ipa48" to double*, !dbg !12297
  %111 = insertvalue [11 x double*] undef, double* %"'ipc91", 0, !dbg !12297
  %"'ipc92" = bitcast i64* %"'ipa49" to double*, !dbg !12297
  %112 = insertvalue [11 x double*] %111, double* %"'ipc92", 1, !dbg !12297
  %"'ipc93" = bitcast i64* %"'ipa50" to double*, !dbg !12297
  %113 = insertvalue [11 x double*] %112, double* %"'ipc93", 2, !dbg !12297
  %"'ipc94" = bitcast i64* %"'ipa51" to double*, !dbg !12297
  %114 = insertvalue [11 x double*] %113, double* %"'ipc94", 3, !dbg !12297
  %"'ipc95" = bitcast i64* %"'ipa52" to double*, !dbg !12297
  %115 = insertvalue [11 x double*] %114, double* %"'ipc95", 4, !dbg !12297
  %"'ipc96" = bitcast i64* %"'ipa53" to double*, !dbg !12297
  %116 = insertvalue [11 x double*] %115, double* %"'ipc96", 5, !dbg !12297
  %"'ipc97" = bitcast i64* %"'ipa54" to double*, !dbg !12297
  %117 = insertvalue [11 x double*] %116, double* %"'ipc97", 6, !dbg !12297
  %"'ipc98" = bitcast i64* %"'ipa55" to double*, !dbg !12297
  %118 = insertvalue [11 x double*] %117, double* %"'ipc98", 7, !dbg !12297
  %"'ipc99" = bitcast i64* %"'ipa56" to double*, !dbg !12297
  %119 = insertvalue [11 x double*] %118, double* %"'ipc99", 8, !dbg !12297
  %"'ipc100" = bitcast i64* %"'ipa57" to double*, !dbg !12297
  %120 = insertvalue [11 x double*] %119, double* %"'ipc100", 9, !dbg !12297
  %"'ipc101" = bitcast i64* %"'ipa58" to double*, !dbg !12297
  %121 = insertvalue [11 x double*] %120, double* %"'ipc101", 10, !dbg !12297
  %122 = bitcast i64* %41 to double*, !dbg !12297
  store double 0.000000e+00, double* %"'ipc91", align 16, !dbg !12297, !tbaa !424, !alias.scope !12346, !noalias !12349
  store double 0.000000e+00, double* %"'ipc92", align 16, !dbg !12297, !tbaa !424, !alias.scope !12361, !noalias !12362
  store double 0.000000e+00, double* %"'ipc93", align 16, !dbg !12297, !tbaa !424, !alias.scope !12363, !noalias !12364
  store double 0.000000e+00, double* %"'ipc94", align 16, !dbg !12297, !tbaa !424, !alias.scope !12365, !noalias !12366
  store double 0.000000e+00, double* %"'ipc95", align 16, !dbg !12297, !tbaa !424, !alias.scope !12367, !noalias !12368
  store double 0.000000e+00, double* %"'ipc96", align 16, !dbg !12297, !tbaa !424, !alias.scope !12369, !noalias !12370
  store double 0.000000e+00, double* %"'ipc97", align 16, !dbg !12297, !tbaa !424, !alias.scope !12371, !noalias !12372
  store double 0.000000e+00, double* %"'ipc98", align 16, !dbg !12297, !tbaa !424, !alias.scope !12373, !noalias !12374
  store double 0.000000e+00, double* %"'ipc99", align 16, !dbg !12297, !tbaa !424, !alias.scope !12375, !noalias !12376
  store double 0.000000e+00, double* %"'ipc100", align 16, !dbg !12297, !tbaa !424, !alias.scope !12377, !noalias !12378
  store double 0.000000e+00, double* %"'ipc101", align 16, !dbg !12297, !tbaa !424, !alias.scope !12379, !noalias !12380
  store double 1.000000e+00, double* %122, align 16, !dbg !12297, !tbaa !424, !alias.scope !12381, !noalias !12382
  %123 = extractvalue [11 x {} addrspace(10)*] %"'1", 0, !dbg !12343
  %"'ipc102" = bitcast {} addrspace(10)* %123 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %124 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] undef, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc102", 0, !dbg !12343
  %125 = extractvalue [11 x {} addrspace(10)*] %"'1", 1, !dbg !12343
  %"'ipc103" = bitcast {} addrspace(10)* %125 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %126 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %124, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc103", 1, !dbg !12343
  %127 = extractvalue [11 x {} addrspace(10)*] %"'1", 2, !dbg !12343
  %"'ipc104" = bitcast {} addrspace(10)* %127 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %128 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %126, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc104", 2, !dbg !12343
  %129 = extractvalue [11 x {} addrspace(10)*] %"'1", 3, !dbg !12343
  %"'ipc105" = bitcast {} addrspace(10)* %129 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %130 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %128, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc105", 3, !dbg !12343
  %131 = extractvalue [11 x {} addrspace(10)*] %"'1", 4, !dbg !12343
  %"'ipc106" = bitcast {} addrspace(10)* %131 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %132 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %130, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc106", 4, !dbg !12343
  %133 = extractvalue [11 x {} addrspace(10)*] %"'1", 5, !dbg !12343
  %"'ipc107" = bitcast {} addrspace(10)* %133 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %134 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %132, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc107", 5, !dbg !12343
  %135 = extractvalue [11 x {} addrspace(10)*] %"'1", 6, !dbg !12343
  %"'ipc108" = bitcast {} addrspace(10)* %135 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %136 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %134, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc108", 6, !dbg !12343
  %137 = extractvalue [11 x {} addrspace(10)*] %"'1", 7, !dbg !12343
  %"'ipc109" = bitcast {} addrspace(10)* %137 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %138 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %136, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc109", 7, !dbg !12343
  %139 = extractvalue [11 x {} addrspace(10)*] %"'1", 8, !dbg !12343
  %"'ipc110" = bitcast {} addrspace(10)* %139 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %140 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %138, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc110", 8, !dbg !12343
  %141 = extractvalue [11 x {} addrspace(10)*] %"'1", 9, !dbg !12343
  %"'ipc111" = bitcast {} addrspace(10)* %141 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %142 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %140, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc111", 9, !dbg !12343
  %143 = extractvalue [11 x {} addrspace(10)*] %"'1", 10, !dbg !12343
  %"'ipc112" = bitcast {} addrspace(10)* %143 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %144 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %142, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc112", 10, !dbg !12343
  %145 = bitcast {} addrspace(10)* %2 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !12343
  %"'ipc113" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc102" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %146 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] undef, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc113", 0, !dbg !12343
  %"'ipc114" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc103" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %147 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %146, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc114", 1, !dbg !12343
  %"'ipc115" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc104" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %148 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %147, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc115", 2, !dbg !12343
  %"'ipc116" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc105" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %149 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %148, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc116", 3, !dbg !12343
  %"'ipc117" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc106" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %150 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %149, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc117", 4, !dbg !12343
  %"'ipc118" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc107" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %151 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %150, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc118", 5, !dbg !12343
  %"'ipc119" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc108" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %152 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %151, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc119", 6, !dbg !12343
  %"'ipc120" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc109" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %153 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %152, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc120", 7, !dbg !12343
  %"'ipc121" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc110" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %154 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %153, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc121", 8, !dbg !12343
  %"'ipc122" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc111" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %155 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %154, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc122", 9, !dbg !12343
  %"'ipc123" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc112" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %156 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %155, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc123", 10, !dbg !12343
  %157 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %145 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12343
  %158 = extractvalue [11 x {} addrspace(10)*] %"'1", 0, !dbg !12343
  %"'ipc124" = bitcast {} addrspace(10)* %158 to i8* addrspace(10)*, !dbg !12343
  %159 = insertvalue [11 x i8* addrspace(10)*] undef, i8* addrspace(10)* %"'ipc124", 0, !dbg !12343
  %160 = extractvalue [11 x {} addrspace(10)*] %"'1", 1, !dbg !12343
  %"'ipc125" = bitcast {} addrspace(10)* %160 to i8* addrspace(10)*, !dbg !12343
  %161 = insertvalue [11 x i8* addrspace(10)*] %159, i8* addrspace(10)* %"'ipc125", 1, !dbg !12343
  %162 = extractvalue [11 x {} addrspace(10)*] %"'1", 2, !dbg !12343
  %"'ipc126" = bitcast {} addrspace(10)* %162 to i8* addrspace(10)*, !dbg !12343
  %163 = insertvalue [11 x i8* addrspace(10)*] %161, i8* addrspace(10)* %"'ipc126", 2, !dbg !12343
  %164 = extractvalue [11 x {} addrspace(10)*] %"'1", 3, !dbg !12343
  %"'ipc127" = bitcast {} addrspace(10)* %164 to i8* addrspace(10)*, !dbg !12343
  %165 = insertvalue [11 x i8* addrspace(10)*] %163, i8* addrspace(10)* %"'ipc127", 3, !dbg !12343
  %166 = extractvalue [11 x {} addrspace(10)*] %"'1", 4, !dbg !12343
  %"'ipc128" = bitcast {} addrspace(10)* %166 to i8* addrspace(10)*, !dbg !12343
  %167 = insertvalue [11 x i8* addrspace(10)*] %165, i8* addrspace(10)* %"'ipc128", 4, !dbg !12343
  %168 = extractvalue [11 x {} addrspace(10)*] %"'1", 5, !dbg !12343
  %"'ipc129" = bitcast {} addrspace(10)* %168 to i8* addrspace(10)*, !dbg !12343
  %169 = insertvalue [11 x i8* addrspace(10)*] %167, i8* addrspace(10)* %"'ipc129", 5, !dbg !12343
  %170 = extractvalue [11 x {} addrspace(10)*] %"'1", 6, !dbg !12343
  %"'ipc130" = bitcast {} addrspace(10)* %170 to i8* addrspace(10)*, !dbg !12343
  %171 = insertvalue [11 x i8* addrspace(10)*] %169, i8* addrspace(10)* %"'ipc130", 6, !dbg !12343
  %172 = extractvalue [11 x {} addrspace(10)*] %"'1", 7, !dbg !12343
  %"'ipc131" = bitcast {} addrspace(10)* %172 to i8* addrspace(10)*, !dbg !12343
  %173 = insertvalue [11 x i8* addrspace(10)*] %171, i8* addrspace(10)* %"'ipc131", 7, !dbg !12343
  %174 = extractvalue [11 x {} addrspace(10)*] %"'1", 8, !dbg !12343
  %"'ipc132" = bitcast {} addrspace(10)* %174 to i8* addrspace(10)*, !dbg !12343
  %175 = insertvalue [11 x i8* addrspace(10)*] %173, i8* addrspace(10)* %"'ipc132", 8, !dbg !12343
  %176 = extractvalue [11 x {} addrspace(10)*] %"'1", 9, !dbg !12343
  %"'ipc133" = bitcast {} addrspace(10)* %176 to i8* addrspace(10)*, !dbg !12343
  %177 = insertvalue [11 x i8* addrspace(10)*] %175, i8* addrspace(10)* %"'ipc133", 9, !dbg !12343
  %178 = extractvalue [11 x {} addrspace(10)*] %"'1", 10, !dbg !12343
  %"'ipc134" = bitcast {} addrspace(10)* %178 to i8* addrspace(10)*, !dbg !12343
  %179 = insertvalue [11 x i8* addrspace(10)*] %177, i8* addrspace(10)* %"'ipc134", 10, !dbg !12343
  %180 = bitcast {} addrspace(10)* %2 to i8* addrspace(10)*, !dbg !12343
  %"'ipc135" = addrspacecast i8* addrspace(10)* %"'ipc124" to i8* addrspace(11)*, !dbg !12343
  %181 = insertvalue [11 x i8* addrspace(11)*] undef, i8* addrspace(11)* %"'ipc135", 0, !dbg !12343
  %"'ipc136" = addrspacecast i8* addrspace(10)* %"'ipc125" to i8* addrspace(11)*, !dbg !12343
  %182 = insertvalue [11 x i8* addrspace(11)*] %181, i8* addrspace(11)* %"'ipc136", 1, !dbg !12343
  %"'ipc137" = addrspacecast i8* addrspace(10)* %"'ipc126" to i8* addrspace(11)*, !dbg !12343
  %183 = insertvalue [11 x i8* addrspace(11)*] %182, i8* addrspace(11)* %"'ipc137", 2, !dbg !12343
  %"'ipc138" = addrspacecast i8* addrspace(10)* %"'ipc127" to i8* addrspace(11)*, !dbg !12343
  %184 = insertvalue [11 x i8* addrspace(11)*] %183, i8* addrspace(11)* %"'ipc138", 3, !dbg !12343
  %"'ipc139" = addrspacecast i8* addrspace(10)* %"'ipc128" to i8* addrspace(11)*, !dbg !12343
  %185 = insertvalue [11 x i8* addrspace(11)*] %184, i8* addrspace(11)* %"'ipc139", 4, !dbg !12343
  %"'ipc140" = addrspacecast i8* addrspace(10)* %"'ipc129" to i8* addrspace(11)*, !dbg !12343
  %186 = insertvalue [11 x i8* addrspace(11)*] %185, i8* addrspace(11)* %"'ipc140", 5, !dbg !12343
  %"'ipc141" = addrspacecast i8* addrspace(10)* %"'ipc130" to i8* addrspace(11)*, !dbg !12343
  %187 = insertvalue [11 x i8* addrspace(11)*] %186, i8* addrspace(11)* %"'ipc141", 6, !dbg !12343
  %"'ipc142" = addrspacecast i8* addrspace(10)* %"'ipc131" to i8* addrspace(11)*, !dbg !12343
  %188 = insertvalue [11 x i8* addrspace(11)*] %187, i8* addrspace(11)* %"'ipc142", 7, !dbg !12343
  %"'ipc143" = addrspacecast i8* addrspace(10)* %"'ipc132" to i8* addrspace(11)*, !dbg !12343
  %189 = insertvalue [11 x i8* addrspace(11)*] %188, i8* addrspace(11)* %"'ipc143", 8, !dbg !12343
  %"'ipc144" = addrspacecast i8* addrspace(10)* %"'ipc133" to i8* addrspace(11)*, !dbg !12343
  %190 = insertvalue [11 x i8* addrspace(11)*] %189, i8* addrspace(11)* %"'ipc144", 9, !dbg !12343
  %"'ipc145" = addrspacecast i8* addrspace(10)* %"'ipc134" to i8* addrspace(11)*, !dbg !12343
  %191 = insertvalue [11 x i8* addrspace(11)*] %190, i8* addrspace(11)* %"'ipc145", 10, !dbg !12343
  %192 = addrspacecast i8* addrspace(10)* %180 to i8* addrspace(11)*, !dbg !12343
  %"'ipl" = load i8*, i8* addrspace(11)* %"'ipc135", align 8, !dbg !12343, !tbaa !343, !alias.scope !12383, !noalias !12384
  %193 = insertvalue [11 x i8*] undef, i8* %"'ipl", 0, !dbg !12343
  %"'ipl146" = load i8*, i8* addrspace(11)* %"'ipc136", align 8, !dbg !12343, !tbaa !343, !alias.scope !12385, !noalias !12386
  %194 = insertvalue [11 x i8*] %193, i8* %"'ipl146", 1, !dbg !12343
  %"'ipl147" = load i8*, i8* addrspace(11)* %"'ipc137", align 8, !dbg !12343, !tbaa !343, !alias.scope !12387, !noalias !12388
  %195 = insertvalue [11 x i8*] %194, i8* %"'ipl147", 2, !dbg !12343
  %"'ipl148" = load i8*, i8* addrspace(11)* %"'ipc138", align 8, !dbg !12343, !tbaa !343, !alias.scope !12389, !noalias !12390
  %196 = insertvalue [11 x i8*] %195, i8* %"'ipl148", 3, !dbg !12343
  %"'ipl149" = load i8*, i8* addrspace(11)* %"'ipc139", align 8, !dbg !12343, !tbaa !343, !alias.scope !12391, !noalias !12392
  %197 = insertvalue [11 x i8*] %196, i8* %"'ipl149", 4, !dbg !12343
  %"'ipl150" = load i8*, i8* addrspace(11)* %"'ipc140", align 8, !dbg !12343, !tbaa !343, !alias.scope !12393, !noalias !12394
  %198 = insertvalue [11 x i8*] %197, i8* %"'ipl150", 5, !dbg !12343
  %"'ipl151" = load i8*, i8* addrspace(11)* %"'ipc141", align 8, !dbg !12343, !tbaa !343, !alias.scope !12395, !noalias !12396
  %199 = insertvalue [11 x i8*] %198, i8* %"'ipl151", 6, !dbg !12343
  %"'ipl152" = load i8*, i8* addrspace(11)* %"'ipc142", align 8, !dbg !12343, !tbaa !343, !alias.scope !12397, !noalias !12398
  %200 = insertvalue [11 x i8*] %199, i8* %"'ipl152", 7, !dbg !12343
  %"'ipl153" = load i8*, i8* addrspace(11)* %"'ipc143", align 8, !dbg !12343, !tbaa !343, !alias.scope !12399, !noalias !12400
  %201 = insertvalue [11 x i8*] %200, i8* %"'ipl153", 8, !dbg !12343
  %"'ipl154" = load i8*, i8* addrspace(11)* %"'ipc144", align 8, !dbg !12343, !tbaa !343, !alias.scope !12401, !noalias !12402
  %202 = insertvalue [11 x i8*] %201, i8* %"'ipl154", 9, !dbg !12343
  %"'ipl155" = load i8*, i8* addrspace(11)* %"'ipc145", align 8, !dbg !12343, !tbaa !343, !alias.scope !12403, !noalias !12404
  %203 = insertvalue [11 x i8*] %202, i8* %"'ipl155", 10, !dbg !12343
  %204 = load i8*, i8* addrspace(11)* %192, align 8, !dbg !12343, !tbaa !343, !alias.scope !12405, !noalias !12406, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %"'ipg" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc113", i64 0, i32 1, !dbg !12343
  %205 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] undef, {} addrspace(10)* addrspace(11)* %"'ipg", 0, !dbg !12343
  %"'ipg156" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc114", i64 0, i32 1, !dbg !12343
  %206 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %205, {} addrspace(10)* addrspace(11)* %"'ipg156", 1, !dbg !12343
  %"'ipg157" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc115", i64 0, i32 1, !dbg !12343
  %207 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %206, {} addrspace(10)* addrspace(11)* %"'ipg157", 2, !dbg !12343
  %"'ipg158" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc116", i64 0, i32 1, !dbg !12343
  %208 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %207, {} addrspace(10)* addrspace(11)* %"'ipg158", 3, !dbg !12343
  %"'ipg159" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc117", i64 0, i32 1, !dbg !12343
  %209 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %208, {} addrspace(10)* addrspace(11)* %"'ipg159", 4, !dbg !12343
  %"'ipg160" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc118", i64 0, i32 1, !dbg !12343
  %210 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %209, {} addrspace(10)* addrspace(11)* %"'ipg160", 5, !dbg !12343
  %"'ipg161" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc119", i64 0, i32 1, !dbg !12343
  %211 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %210, {} addrspace(10)* addrspace(11)* %"'ipg161", 6, !dbg !12343
  %"'ipg162" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc120", i64 0, i32 1, !dbg !12343
  %212 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %211, {} addrspace(10)* addrspace(11)* %"'ipg162", 7, !dbg !12343
  %"'ipg163" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc121", i64 0, i32 1, !dbg !12343
  %213 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %212, {} addrspace(10)* addrspace(11)* %"'ipg163", 8, !dbg !12343
  %"'ipg164" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc122", i64 0, i32 1, !dbg !12343
  %214 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %213, {} addrspace(10)* addrspace(11)* %"'ipg164", 9, !dbg !12343
  %"'ipg165" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc123", i64 0, i32 1, !dbg !12343
  %215 = insertvalue [11 x {} addrspace(10)* addrspace(11)*] %214, {} addrspace(10)* addrspace(11)* %"'ipg165", 10, !dbg !12343
  %216 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %157, i64 0, i32 1, !dbg !12343
  %"'ipl166" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg", align 8, !dbg !12343, !tbaa !343, !alias.scope !12383, !noalias !12384, !dereferenceable_or_null !615
  %217 = insertvalue [11 x {} addrspace(10)*] undef, {} addrspace(10)* %"'ipl166", 0, !dbg !12343
  %"'ipl167" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg156", align 8, !dbg !12343, !tbaa !343, !alias.scope !12385, !noalias !12386, !dereferenceable_or_null !615
  %218 = insertvalue [11 x {} addrspace(10)*] %217, {} addrspace(10)* %"'ipl167", 1, !dbg !12343
  %"'ipl168" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg157", align 8, !dbg !12343, !tbaa !343, !alias.scope !12387, !noalias !12388, !dereferenceable_or_null !615
  %219 = insertvalue [11 x {} addrspace(10)*] %218, {} addrspace(10)* %"'ipl168", 2, !dbg !12343
  %"'ipl169" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg158", align 8, !dbg !12343, !tbaa !343, !alias.scope !12389, !noalias !12390, !dereferenceable_or_null !615
  %220 = insertvalue [11 x {} addrspace(10)*] %219, {} addrspace(10)* %"'ipl169", 3, !dbg !12343
  %"'ipl170" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg159", align 8, !dbg !12343, !tbaa !343, !alias.scope !12391, !noalias !12392, !dereferenceable_or_null !615
  %221 = insertvalue [11 x {} addrspace(10)*] %220, {} addrspace(10)* %"'ipl170", 4, !dbg !12343
  %"'ipl171" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg160", align 8, !dbg !12343, !tbaa !343, !alias.scope !12393, !noalias !12394, !dereferenceable_or_null !615
  %222 = insertvalue [11 x {} addrspace(10)*] %221, {} addrspace(10)* %"'ipl171", 5, !dbg !12343
  %"'ipl172" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg161", align 8, !dbg !12343, !tbaa !343, !alias.scope !12395, !noalias !12396, !dereferenceable_or_null !615
  %223 = insertvalue [11 x {} addrspace(10)*] %222, {} addrspace(10)* %"'ipl172", 6, !dbg !12343
  %"'ipl173" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg162", align 8, !dbg !12343, !tbaa !343, !alias.scope !12397, !noalias !12398, !dereferenceable_or_null !615
  %224 = insertvalue [11 x {} addrspace(10)*] %223, {} addrspace(10)* %"'ipl173", 7, !dbg !12343
  %"'ipl174" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg163", align 8, !dbg !12343, !tbaa !343, !alias.scope !12399, !noalias !12400, !dereferenceable_or_null !615
  %225 = insertvalue [11 x {} addrspace(10)*] %224, {} addrspace(10)* %"'ipl174", 8, !dbg !12343
  %"'ipl175" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg164", align 8, !dbg !12343, !tbaa !343, !alias.scope !12401, !noalias !12402, !dereferenceable_or_null !615
  %226 = insertvalue [11 x {} addrspace(10)*] %225, {} addrspace(10)* %"'ipl175", 9, !dbg !12343
  %"'ipl176" = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg165", align 8, !dbg !12343, !tbaa !343, !alias.scope !12403, !noalias !12404, !dereferenceable_or_null !615
  %227 = insertvalue [11 x {} addrspace(10)*] %226, {} addrspace(10)* %"'ipl176", 10, !dbg !12343
  %228 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %216, align 8, !dbg !12343, !tbaa !343, !alias.scope !12405, !noalias !12406, !dereferenceable_or_null !615, !align !235, !enzyme_type !331, !enzymejl_source_type_Memory\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  store i64 %102, i64* %42, align 16, !dbg !12297, !tbaa !424, !alias.scope !315, !noalias !12301
  %229 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 0, !dbg !12407
  %"'ipc177" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %229 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %230 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] undef, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc177", 0, !dbg !12407
  %231 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 1, !dbg !12407
  %"'ipc178" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %231 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %232 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %230, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc178", 1, !dbg !12407
  %233 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 2, !dbg !12407
  %"'ipc179" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %233 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %234 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %232, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc179", 2, !dbg !12407
  %235 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 3, !dbg !12407
  %"'ipc180" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %235 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %236 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %234, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc180", 3, !dbg !12407
  %237 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 4, !dbg !12407
  %"'ipc181" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %237 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %238 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %236, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc181", 4, !dbg !12407
  %239 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 5, !dbg !12407
  %"'ipc182" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %239 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %240 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %238, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc182", 5, !dbg !12407
  %241 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 6, !dbg !12407
  %"'ipc183" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %241 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %242 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %240, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc183", 6, !dbg !12407
  %243 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 7, !dbg !12407
  %"'ipc184" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %243 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %244 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %242, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc184", 7, !dbg !12407
  %245 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 8, !dbg !12407
  %"'ipc185" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %245 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %246 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %244, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc185", 8, !dbg !12407
  %247 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 9, !dbg !12407
  %"'ipc186" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %247 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %248 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %246, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc186", 9, !dbg !12407
  %249 = extractvalue [11 x { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)*] %"'", 10, !dbg !12407
  %"'ipc187" = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %249 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %250 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*] %248, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc187", 10, !dbg !12407
  %251 = bitcast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0 to { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)*, !dbg !12407
  %"'ipl188" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc177" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12409, !noalias !12410, !nonnull !0, !dereferenceable !234
  %252 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] undef, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl188", 0, !dbg !12407
  %"'ipl189" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc178" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12411, !noalias !12412, !nonnull !0, !dereferenceable !234
  %253 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %252, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl189", 1, !dbg !12407
  %"'ipl190" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc179" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12413, !noalias !12414, !nonnull !0, !dereferenceable !234
  %254 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %253, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl190", 2, !dbg !12407
  %"'ipl191" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc180" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12415, !noalias !12416, !nonnull !0, !dereferenceable !234
  %255 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %254, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl191", 3, !dbg !12407
  %"'ipl192" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc181" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12417, !noalias !12418, !nonnull !0, !dereferenceable !234
  %256 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %255, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl192", 4, !dbg !12407
  %"'ipl193" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc182" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12419, !noalias !12420, !nonnull !0, !dereferenceable !234
  %257 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %256, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl193", 5, !dbg !12407
  %"'ipl194" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc183" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12421, !noalias !12422, !nonnull !0, !dereferenceable !234
  %258 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %257, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl194", 6, !dbg !12407
  %"'ipl195" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc184" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12423, !noalias !12424, !nonnull !0, !dereferenceable !234
  %259 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %258, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl195", 7, !dbg !12407
  %"'ipl196" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc185" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12425, !noalias !12426, !nonnull !0, !dereferenceable !234
  %260 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %259, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl196", 8, !dbg !12407
  %"'ipl197" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc186" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12427, !noalias !12428, !nonnull !0, !dereferenceable !234
  %261 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %260, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl197", 9, !dbg !12407
  %"'ipl198" = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %"'ipc187" unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12429, !noalias !12430, !nonnull !0, !dereferenceable !234
  %262 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(10)*] %261, { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl198", 10, !dbg !12407
  %263 = load atomic { i8*, {} addrspace(10)* } addrspace(10)*, { i8*, {} addrspace(10)* } addrspace(10)* addrspace(11)* %251 unordered, align 8, !dbg !12407, !tbaa !196, !alias.scope !12431, !noalias !12432, !nonnull !0, !dereferenceable !234, !align !235, !enzyme_type !217, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Vector\7BFloat64\7D !0
  %"'ipc199" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl188" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %264 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] undef, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc199", 0, !dbg !12433
  %"'ipc200" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl189" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %265 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %264, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc200", 1, !dbg !12433
  %"'ipc201" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl190" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %266 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %265, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc201", 2, !dbg !12433
  %"'ipc202" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl191" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %267 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %266, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc202", 3, !dbg !12433
  %"'ipc203" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl192" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %268 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %267, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc203", 4, !dbg !12433
  %"'ipc204" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl193" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %269 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %268, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc204", 5, !dbg !12433
  %"'ipc205" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl194" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %270 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %269, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc205", 6, !dbg !12433
  %"'ipc206" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl195" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %271 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %270, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc206", 7, !dbg !12433
  %"'ipc207" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl196" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %272 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %271, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc207", 8, !dbg !12433
  %"'ipc208" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl197" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %273 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %272, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc208", 9, !dbg !12433
  %"'ipc209" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl198" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %274 = insertvalue [11 x { i8*, {} addrspace(10)* } addrspace(11)*] %273, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc209", 10, !dbg !12433
  %275 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %263 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !12433
  %"'ipg210" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc199", i64 0, i32 0, !dbg !12433
  %276 = insertvalue [11 x i8* addrspace(11)*] undef, i8* addrspace(11)* %"'ipg210", 0, !dbg !12433
  %"'ipg211" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc200", i64 0, i32 0, !dbg !12433
  %277 = insertvalue [11 x i8* addrspace(11)*] %276, i8* addrspace(11)* %"'ipg211", 1, !dbg !12433
  %"'ipg212" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc201", i64 0, i32 0, !dbg !12433
  %278 = insertvalue [11 x i8* addrspace(11)*] %277, i8* addrspace(11)* %"'ipg212", 2, !dbg !12433
  %"'ipg213" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc202", i64 0, i32 0, !dbg !12433
  %279 = insertvalue [11 x i8* addrspace(11)*] %278, i8* addrspace(11)* %"'ipg213", 3, !dbg !12433
  %"'ipg214" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc203", i64 0, i32 0, !dbg !12433
  %280 = insertvalue [11 x i8* addrspace(11)*] %279, i8* addrspace(11)* %"'ipg214", 4, !dbg !12433
  %"'ipg215" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc204", i64 0, i32 0, !dbg !12433
  %281 = insertvalue [11 x i8* addrspace(11)*] %280, i8* addrspace(11)* %"'ipg215", 5, !dbg !12433
  %"'ipg216" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc205", i64 0, i32 0, !dbg !12433
  %282 = insertvalue [11 x i8* addrspace(11)*] %281, i8* addrspace(11)* %"'ipg216", 6, !dbg !12433
  %"'ipg217" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc206", i64 0, i32 0, !dbg !12433
  %283 = insertvalue [11 x i8* addrspace(11)*] %282, i8* addrspace(11)* %"'ipg217", 7, !dbg !12433
  %"'ipg218" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc207", i64 0, i32 0, !dbg !12433
  %284 = insertvalue [11 x i8* addrspace(11)*] %283, i8* addrspace(11)* %"'ipg218", 8, !dbg !12433
  %"'ipg219" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc208", i64 0, i32 0, !dbg !12433
  %285 = insertvalue [11 x i8* addrspace(11)*] %284, i8* addrspace(11)* %"'ipg219", 9, !dbg !12433
  %"'ipg220" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc209", i64 0, i32 0, !dbg !12433
  %286 = insertvalue [11 x i8* addrspace(11)*] %285, i8* addrspace(11)* %"'ipg220", 10, !dbg !12433
  %287 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %275, i64 0, i32 0, !dbg !12433
  %"'ipl221" = load i8*, i8* addrspace(11)* %"'ipg210", align 8, !dbg !12433, !tbaa !343, !alias.scope !12435, !noalias !12438
  %288 = insertvalue [11 x i8*] undef, i8* %"'ipl221", 0, !dbg !12433
  %"'ipl222" = load i8*, i8* addrspace(11)* %"'ipg211", align 8, !dbg !12433, !tbaa !343, !alias.scope !12450, !noalias !12451
  %289 = insertvalue [11 x i8*] %288, i8* %"'ipl222", 1, !dbg !12433
  %"'ipl223" = load i8*, i8* addrspace(11)* %"'ipg212", align 8, !dbg !12433, !tbaa !343, !alias.scope !12452, !noalias !12453
  %290 = insertvalue [11 x i8*] %289, i8* %"'ipl223", 2, !dbg !12433
  %"'ipl224" = load i8*, i8* addrspace(11)* %"'ipg213", align 8, !dbg !12433, !tbaa !343, !alias.scope !12454, !noalias !12455
  %291 = insertvalue [11 x i8*] %290, i8* %"'ipl224", 3, !dbg !12433
  %"'ipl225" = load i8*, i8* addrspace(11)* %"'ipg214", align 8, !dbg !12433, !tbaa !343, !alias.scope !12456, !noalias !12457
  %292 = insertvalue [11 x i8*] %291, i8* %"'ipl225", 4, !dbg !12433
  %"'ipl226" = load i8*, i8* addrspace(11)* %"'ipg215", align 8, !dbg !12433, !tbaa !343, !alias.scope !12458, !noalias !12459
  %293 = insertvalue [11 x i8*] %292, i8* %"'ipl226", 5, !dbg !12433
  %"'ipl227" = load i8*, i8* addrspace(11)* %"'ipg216", align 8, !dbg !12433, !tbaa !343, !alias.scope !12460, !noalias !12461
  %294 = insertvalue [11 x i8*] %293, i8* %"'ipl227", 6, !dbg !12433
  %"'ipl228" = load i8*, i8* addrspace(11)* %"'ipg217", align 8, !dbg !12433, !tbaa !343, !alias.scope !12462, !noalias !12463
  %295 = insertvalue [11 x i8*] %294, i8* %"'ipl228", 7, !dbg !12433
  %"'ipl229" = load i8*, i8* addrspace(11)* %"'ipg218", align 8, !dbg !12433, !tbaa !343, !alias.scope !12464, !noalias !12465
  %296 = insertvalue [11 x i8*] %295, i8* %"'ipl229", 8, !dbg !12433
  %"'ipl230" = load i8*, i8* addrspace(11)* %"'ipg219", align 8, !dbg !12433, !tbaa !343, !alias.scope !12466, !noalias !12467
  %297 = insertvalue [11 x i8*] %296, i8* %"'ipl230", 9, !dbg !12433
  %"'ipl231" = load i8*, i8* addrspace(11)* %"'ipg220", align 8, !dbg !12433, !tbaa !343, !alias.scope !12468, !noalias !12469
  %298 = insertvalue [11 x i8*] %297, i8* %"'ipl231", 10, !dbg !12433
  %299 = load i8*, i8* addrspace(11)* %287, align 8, !dbg !12433, !tbaa !343, !alias.scope !12470, !noalias !12471, !enzyme_type !333, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0
  %300 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 2, !dbg !12472
  %301 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 3, !dbg !12472
  %302 = load i64, i64 addrspace(11)* %301, align 8, !dbg !12475, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %303 = load i64, i64 addrspace(11)* %300, align 8, !dbg !12476, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %"'ipc232" = ptrtoint i8* %"'ipl" to i64, !dbg !12477
  %304 = insertvalue [11 x i64] undef, i64 %"'ipc232", 0, !dbg !12477
  %"'ipc233" = ptrtoint i8* %"'ipl146" to i64, !dbg !12477
  %305 = insertvalue [11 x i64] %304, i64 %"'ipc233", 1, !dbg !12477
  %"'ipc234" = ptrtoint i8* %"'ipl147" to i64, !dbg !12477
  %306 = insertvalue [11 x i64] %305, i64 %"'ipc234", 2, !dbg !12477
  %"'ipc235" = ptrtoint i8* %"'ipl148" to i64, !dbg !12477
  %307 = insertvalue [11 x i64] %306, i64 %"'ipc235", 3, !dbg !12477
  %"'ipc236" = ptrtoint i8* %"'ipl149" to i64, !dbg !12477
  %308 = insertvalue [11 x i64] %307, i64 %"'ipc236", 4, !dbg !12477
  %"'ipc237" = ptrtoint i8* %"'ipl150" to i64, !dbg !12477
  %309 = insertvalue [11 x i64] %308, i64 %"'ipc237", 5, !dbg !12477
  %"'ipc238" = ptrtoint i8* %"'ipl151" to i64, !dbg !12477
  %310 = insertvalue [11 x i64] %309, i64 %"'ipc238", 6, !dbg !12477
  %"'ipc239" = ptrtoint i8* %"'ipl152" to i64, !dbg !12477
  %311 = insertvalue [11 x i64] %310, i64 %"'ipc239", 7, !dbg !12477
  %"'ipc240" = ptrtoint i8* %"'ipl153" to i64, !dbg !12477
  %312 = insertvalue [11 x i64] %311, i64 %"'ipc240", 8, !dbg !12477
  %"'ipc241" = ptrtoint i8* %"'ipl154" to i64, !dbg !12477
  %313 = insertvalue [11 x i64] %312, i64 %"'ipc241", 9, !dbg !12477
  %"'ipc242" = ptrtoint i8* %"'ipl155" to i64, !dbg !12477
  %314 = insertvalue [11 x i64] %313, i64 %"'ipc242", 10, !dbg !12477
  %315 = ptrtoint i8* %204 to i64, !dbg !12477
  %316 = ptrtoint i8* %107 to i64, !dbg !12477
  %317 = add i64 %303, %302, !dbg !12476
  %318 = shl i64 %317, 3, !dbg !12479
  %319 = add i64 %318, -8, !dbg !12479
  %"'ipg243" = getelementptr i8, i8* %"'ipl221", i64 %319, !dbg !12480
  %320 = insertvalue [11 x i8*] undef, i8* %"'ipg243", 0, !dbg !12480
  %"'ipg244" = getelementptr i8, i8* %"'ipl222", i64 %319, !dbg !12480
  %321 = insertvalue [11 x i8*] %320, i8* %"'ipg244", 1, !dbg !12480
  %"'ipg245" = getelementptr i8, i8* %"'ipl223", i64 %319, !dbg !12480
  %322 = insertvalue [11 x i8*] %321, i8* %"'ipg245", 2, !dbg !12480
  %"'ipg246" = getelementptr i8, i8* %"'ipl224", i64 %319, !dbg !12480
  %323 = insertvalue [11 x i8*] %322, i8* %"'ipg246", 3, !dbg !12480
  %"'ipg247" = getelementptr i8, i8* %"'ipl225", i64 %319, !dbg !12480
  %324 = insertvalue [11 x i8*] %323, i8* %"'ipg247", 4, !dbg !12480
  %"'ipg248" = getelementptr i8, i8* %"'ipl226", i64 %319, !dbg !12480
  %325 = insertvalue [11 x i8*] %324, i8* %"'ipg248", 5, !dbg !12480
  %"'ipg249" = getelementptr i8, i8* %"'ipl227", i64 %319, !dbg !12480
  %326 = insertvalue [11 x i8*] %325, i8* %"'ipg249", 6, !dbg !12480
  %"'ipg250" = getelementptr i8, i8* %"'ipl228", i64 %319, !dbg !12480
  %327 = insertvalue [11 x i8*] %326, i8* %"'ipg250", 7, !dbg !12480
  %"'ipg251" = getelementptr i8, i8* %"'ipl229", i64 %319, !dbg !12480
  %328 = insertvalue [11 x i8*] %327, i8* %"'ipg251", 8, !dbg !12480
  %"'ipg252" = getelementptr i8, i8* %"'ipl230", i64 %319, !dbg !12480
  %329 = insertvalue [11 x i8*] %328, i8* %"'ipg252", 9, !dbg !12480
  %"'ipg253" = getelementptr i8, i8* %"'ipl231", i64 %319, !dbg !12480
  %330 = insertvalue [11 x i8*] %329, i8* %"'ipg253", 10, !dbg !12480
  %331 = getelementptr i8, i8* %299, i64 %319, !dbg !12480
  %"'ipc254" = ptrtoint i8* %"'ipg243" to i64, !dbg !12480
  %332 = insertvalue [11 x i64] undef, i64 %"'ipc254", 0, !dbg !12480
  %"'ipc255" = ptrtoint i8* %"'ipg244" to i64, !dbg !12480
  %333 = insertvalue [11 x i64] %332, i64 %"'ipc255", 1, !dbg !12480
  %"'ipc256" = ptrtoint i8* %"'ipg245" to i64, !dbg !12480
  %334 = insertvalue [11 x i64] %333, i64 %"'ipc256", 2, !dbg !12480
  %"'ipc257" = ptrtoint i8* %"'ipg246" to i64, !dbg !12480
  %335 = insertvalue [11 x i64] %334, i64 %"'ipc257", 3, !dbg !12480
  %"'ipc258" = ptrtoint i8* %"'ipg247" to i64, !dbg !12480
  %336 = insertvalue [11 x i64] %335, i64 %"'ipc258", 4, !dbg !12480
  %"'ipc259" = ptrtoint i8* %"'ipg248" to i64, !dbg !12480
  %337 = insertvalue [11 x i64] %336, i64 %"'ipc259", 5, !dbg !12480
  %"'ipc260" = ptrtoint i8* %"'ipg249" to i64, !dbg !12480
  %338 = insertvalue [11 x i64] %337, i64 %"'ipc260", 6, !dbg !12480
  %"'ipc261" = ptrtoint i8* %"'ipg250" to i64, !dbg !12480
  %339 = insertvalue [11 x i64] %338, i64 %"'ipc261", 7, !dbg !12480
  %"'ipc262" = ptrtoint i8* %"'ipg251" to i64, !dbg !12480
  %340 = insertvalue [11 x i64] %339, i64 %"'ipc262", 8, !dbg !12480
  %"'ipc263" = ptrtoint i8* %"'ipg252" to i64, !dbg !12480
  %341 = insertvalue [11 x i64] %340, i64 %"'ipc263", 9, !dbg !12480
  %"'ipc264" = ptrtoint i8* %"'ipg253" to i64, !dbg !12480
  %342 = insertvalue [11 x i64] %341, i64 %"'ipc264", 10, !dbg !12480
  %343 = ptrtoint i8* %331 to i64, !dbg !12480
  %"'ipiv" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl", 0, !dbg !12343
  %344 = insertvalue [11 x { i8*, {} addrspace(10)* }] undef, { i8*, {} addrspace(10)* } %"'ipiv", 0, !dbg !12343
  %"'ipiv265" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl146", 0, !dbg !12343
  %345 = insertvalue [11 x { i8*, {} addrspace(10)* }] %344, { i8*, {} addrspace(10)* } %"'ipiv265", 1, !dbg !12343
  %"'ipiv266" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl147", 0, !dbg !12343
  %346 = insertvalue [11 x { i8*, {} addrspace(10)* }] %345, { i8*, {} addrspace(10)* } %"'ipiv266", 2, !dbg !12343
  %"'ipiv267" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl148", 0, !dbg !12343
  %347 = insertvalue [11 x { i8*, {} addrspace(10)* }] %346, { i8*, {} addrspace(10)* } %"'ipiv267", 3, !dbg !12343
  %"'ipiv268" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl149", 0, !dbg !12343
  %348 = insertvalue [11 x { i8*, {} addrspace(10)* }] %347, { i8*, {} addrspace(10)* } %"'ipiv268", 4, !dbg !12343
  %"'ipiv269" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl150", 0, !dbg !12343
  %349 = insertvalue [11 x { i8*, {} addrspace(10)* }] %348, { i8*, {} addrspace(10)* } %"'ipiv269", 5, !dbg !12343
  %"'ipiv270" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl151", 0, !dbg !12343
  %350 = insertvalue [11 x { i8*, {} addrspace(10)* }] %349, { i8*, {} addrspace(10)* } %"'ipiv270", 6, !dbg !12343
  %"'ipiv271" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl152", 0, !dbg !12343
  %351 = insertvalue [11 x { i8*, {} addrspace(10)* }] %350, { i8*, {} addrspace(10)* } %"'ipiv271", 7, !dbg !12343
  %"'ipiv272" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl153", 0, !dbg !12343
  %352 = insertvalue [11 x { i8*, {} addrspace(10)* }] %351, { i8*, {} addrspace(10)* } %"'ipiv272", 8, !dbg !12343
  %"'ipiv273" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl154", 0, !dbg !12343
  %353 = insertvalue [11 x { i8*, {} addrspace(10)* }] %352, { i8*, {} addrspace(10)* } %"'ipiv273", 9, !dbg !12343
  %"'ipiv274" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl155", 0, !dbg !12343
  %354 = insertvalue [11 x { i8*, {} addrspace(10)* }] %353, { i8*, {} addrspace(10)* } %"'ipiv274", 10, !dbg !12343
  %355 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %204, 0, !dbg !12343
  %"'ipiv275" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv", {} addrspace(10)* %"'ipl166", 1, !dbg !12343
  %356 = insertvalue [11 x { i8*, {} addrspace(10)* }] undef, { i8*, {} addrspace(10)* } %"'ipiv275", 0, !dbg !12343
  %"'ipiv276" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv265", {} addrspace(10)* %"'ipl167", 1, !dbg !12343
  %357 = insertvalue [11 x { i8*, {} addrspace(10)* }] %356, { i8*, {} addrspace(10)* } %"'ipiv276", 1, !dbg !12343
  %"'ipiv277" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv266", {} addrspace(10)* %"'ipl168", 1, !dbg !12343
  %358 = insertvalue [11 x { i8*, {} addrspace(10)* }] %357, { i8*, {} addrspace(10)* } %"'ipiv277", 2, !dbg !12343
  %"'ipiv278" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv267", {} addrspace(10)* %"'ipl169", 1, !dbg !12343
  %359 = insertvalue [11 x { i8*, {} addrspace(10)* }] %358, { i8*, {} addrspace(10)* } %"'ipiv278", 3, !dbg !12343
  %"'ipiv279" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv268", {} addrspace(10)* %"'ipl170", 1, !dbg !12343
  %360 = insertvalue [11 x { i8*, {} addrspace(10)* }] %359, { i8*, {} addrspace(10)* } %"'ipiv279", 4, !dbg !12343
  %"'ipiv280" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv269", {} addrspace(10)* %"'ipl171", 1, !dbg !12343
  %361 = insertvalue [11 x { i8*, {} addrspace(10)* }] %360, { i8*, {} addrspace(10)* } %"'ipiv280", 5, !dbg !12343
  %"'ipiv281" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv270", {} addrspace(10)* %"'ipl172", 1, !dbg !12343
  %362 = insertvalue [11 x { i8*, {} addrspace(10)* }] %361, { i8*, {} addrspace(10)* } %"'ipiv281", 6, !dbg !12343
  %"'ipiv282" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv271", {} addrspace(10)* %"'ipl173", 1, !dbg !12343
  %363 = insertvalue [11 x { i8*, {} addrspace(10)* }] %362, { i8*, {} addrspace(10)* } %"'ipiv282", 7, !dbg !12343
  %"'ipiv283" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv272", {} addrspace(10)* %"'ipl174", 1, !dbg !12343
  %364 = insertvalue [11 x { i8*, {} addrspace(10)* }] %363, { i8*, {} addrspace(10)* } %"'ipiv283", 8, !dbg !12343
  %"'ipiv284" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv273", {} addrspace(10)* %"'ipl175", 1, !dbg !12343
  %365 = insertvalue [11 x { i8*, {} addrspace(10)* }] %364, { i8*, {} addrspace(10)* } %"'ipiv284", 9, !dbg !12343
  %"'ipiv285" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv274", {} addrspace(10)* %"'ipl176", 1, !dbg !12343
  %366 = insertvalue [11 x { i8*, {} addrspace(10)* }] %365, { i8*, {} addrspace(10)* } %"'ipiv285", 10, !dbg !12343
  %367 = insertvalue { i8*, {} addrspace(10)* } %355, {} addrspace(10)* %228, 1, !dbg !12343
  %368 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %107, 0, !dbg !12343
  %369 = insertvalue { i8*, {} addrspace(10)* } %368, {} addrspace(10)* %109, 1, !dbg !12343
  %"'ipc286" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl188" to {} addrspace(10)*, !dbg !12300
  %370 = insertvalue [11 x {} addrspace(10)*] undef, {} addrspace(10)* %"'ipc286", 0, !dbg !12300
  %"'ipc287" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl189" to {} addrspace(10)*, !dbg !12300
  %371 = insertvalue [11 x {} addrspace(10)*] %370, {} addrspace(10)* %"'ipc287", 1, !dbg !12300
  %"'ipc288" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl190" to {} addrspace(10)*, !dbg !12300
  %372 = insertvalue [11 x {} addrspace(10)*] %371, {} addrspace(10)* %"'ipc288", 2, !dbg !12300
  %"'ipc289" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl191" to {} addrspace(10)*, !dbg !12300
  %373 = insertvalue [11 x {} addrspace(10)*] %372, {} addrspace(10)* %"'ipc289", 3, !dbg !12300
  %"'ipc290" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl192" to {} addrspace(10)*, !dbg !12300
  %374 = insertvalue [11 x {} addrspace(10)*] %373, {} addrspace(10)* %"'ipc290", 4, !dbg !12300
  %"'ipc291" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl193" to {} addrspace(10)*, !dbg !12300
  %375 = insertvalue [11 x {} addrspace(10)*] %374, {} addrspace(10)* %"'ipc291", 5, !dbg !12300
  %"'ipc292" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl194" to {} addrspace(10)*, !dbg !12300
  %376 = insertvalue [11 x {} addrspace(10)*] %375, {} addrspace(10)* %"'ipc292", 6, !dbg !12300
  %"'ipc293" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl195" to {} addrspace(10)*, !dbg !12300
  %377 = insertvalue [11 x {} addrspace(10)*] %376, {} addrspace(10)* %"'ipc293", 7, !dbg !12300
  %"'ipc294" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl196" to {} addrspace(10)*, !dbg !12300
  %378 = insertvalue [11 x {} addrspace(10)*] %377, {} addrspace(10)* %"'ipc294", 8, !dbg !12300
  %"'ipc295" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl197" to {} addrspace(10)*, !dbg !12300
  %379 = insertvalue [11 x {} addrspace(10)*] %378, {} addrspace(10)* %"'ipc295", 9, !dbg !12300
  %"'ipc296" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl198" to {} addrspace(10)*, !dbg !12300
  %380 = insertvalue [11 x {} addrspace(10)*] %379, {} addrspace(10)* %"'ipc296", 10, !dbg !12300
  %381 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %263 to {} addrspace(10)*, !dbg !12300
  %"'ipiv297" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc286", 0, !dbg !12300
  %382 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv297", 0, !dbg !12300
  %"'ipiv298" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc287", 0, !dbg !12300
  %383 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %382, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv298", 1, !dbg !12300
  %"'ipiv299" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc288", 0, !dbg !12300
  %384 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %383, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv299", 2, !dbg !12300
  %"'ipiv300" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc289", 0, !dbg !12300
  %385 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %384, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv300", 3, !dbg !12300
  %"'ipiv301" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc290", 0, !dbg !12300
  %386 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %385, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv301", 4, !dbg !12300
  %"'ipiv302" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc291", 0, !dbg !12300
  %387 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %386, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv302", 5, !dbg !12300
  %"'ipiv303" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc292", 0, !dbg !12300
  %388 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %387, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv303", 6, !dbg !12300
  %"'ipiv304" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc293", 0, !dbg !12300
  %389 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %388, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv304", 7, !dbg !12300
  %"'ipiv305" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc294", 0, !dbg !12300
  %390 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %389, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv305", 8, !dbg !12300
  %"'ipiv306" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc295", 0, !dbg !12300
  %391 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %390, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv306", 9, !dbg !12300
  %"'ipiv307" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc296", 0, !dbg !12300
  %392 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %391, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv307", 10, !dbg !12300
  %393 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %381, 0, !dbg !12300
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !12300
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !12300, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %394 = insertvalue [11 x i64] undef, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %395 = insertvalue [11 x i64] %394, i64 %.unpack124.unpack.unpack, 1, !dbg !12300
  %396 = insertvalue [11 x i64] %395, i64 %.unpack124.unpack.unpack, 2, !dbg !12300
  %397 = insertvalue [11 x i64] %396, i64 %.unpack124.unpack.unpack, 3, !dbg !12300
  %398 = insertvalue [11 x i64] %397, i64 %.unpack124.unpack.unpack, 4, !dbg !12300
  %399 = insertvalue [11 x i64] %398, i64 %.unpack124.unpack.unpack, 5, !dbg !12300
  %400 = insertvalue [11 x i64] %399, i64 %.unpack124.unpack.unpack, 6, !dbg !12300
  %401 = insertvalue [11 x i64] %400, i64 %.unpack124.unpack.unpack, 7, !dbg !12300
  %402 = insertvalue [11 x i64] %401, i64 %.unpack124.unpack.unpack, 8, !dbg !12300
  %403 = insertvalue [11 x i64] %402, i64 %.unpack124.unpack.unpack, 9, !dbg !12300
  %404 = insertvalue [11 x i64] %403, i64 %.unpack124.unpack.unpack, 10, !dbg !12300
  %"'ipiv308" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %405 = insertvalue [11 x [2 x i64]] undef, [2 x i64] %"'ipiv308", 0, !dbg !12300
  %"'ipiv309" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %406 = insertvalue [11 x [2 x i64]] %405, [2 x i64] %"'ipiv309", 1, !dbg !12300
  %"'ipiv310" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %407 = insertvalue [11 x [2 x i64]] %406, [2 x i64] %"'ipiv310", 2, !dbg !12300
  %"'ipiv311" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %408 = insertvalue [11 x [2 x i64]] %407, [2 x i64] %"'ipiv311", 3, !dbg !12300
  %"'ipiv312" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %409 = insertvalue [11 x [2 x i64]] %408, [2 x i64] %"'ipiv312", 4, !dbg !12300
  %"'ipiv313" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %410 = insertvalue [11 x [2 x i64]] %409, [2 x i64] %"'ipiv313", 5, !dbg !12300
  %"'ipiv314" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %411 = insertvalue [11 x [2 x i64]] %410, [2 x i64] %"'ipiv314", 6, !dbg !12300
  %"'ipiv315" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %412 = insertvalue [11 x [2 x i64]] %411, [2 x i64] %"'ipiv315", 7, !dbg !12300
  %"'ipiv316" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %413 = insertvalue [11 x [2 x i64]] %412, [2 x i64] %"'ipiv316", 8, !dbg !12300
  %"'ipiv317" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %414 = insertvalue [11 x [2 x i64]] %413, [2 x i64] %"'ipiv317", 9, !dbg !12300
  %"'ipiv318" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %415 = insertvalue [11 x [2 x i64]] %414, [2 x i64] %"'ipiv318", 10, !dbg !12300
  %416 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !12300
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !12300, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %417 = insertvalue [11 x i64] undef, i64 %.unpack124.unpack.unpack131, 0, !dbg !12300
  %418 = insertvalue [11 x i64] %417, i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %419 = insertvalue [11 x i64] %418, i64 %.unpack124.unpack.unpack131, 2, !dbg !12300
  %420 = insertvalue [11 x i64] %419, i64 %.unpack124.unpack.unpack131, 3, !dbg !12300
  %421 = insertvalue [11 x i64] %420, i64 %.unpack124.unpack.unpack131, 4, !dbg !12300
  %422 = insertvalue [11 x i64] %421, i64 %.unpack124.unpack.unpack131, 5, !dbg !12300
  %423 = insertvalue [11 x i64] %422, i64 %.unpack124.unpack.unpack131, 6, !dbg !12300
  %424 = insertvalue [11 x i64] %423, i64 %.unpack124.unpack.unpack131, 7, !dbg !12300
  %425 = insertvalue [11 x i64] %424, i64 %.unpack124.unpack.unpack131, 8, !dbg !12300
  %426 = insertvalue [11 x i64] %425, i64 %.unpack124.unpack.unpack131, 9, !dbg !12300
  %427 = insertvalue [11 x i64] %426, i64 %.unpack124.unpack.unpack131, 10, !dbg !12300
  %".unpack124.unpack132'ipiv" = insertvalue [2 x i64] %"'ipiv308", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %428 = insertvalue [11 x [2 x i64]] undef, [2 x i64] %".unpack124.unpack132'ipiv", 0, !dbg !12300
  %".unpack124.unpack132'ipiv319" = insertvalue [2 x i64] %"'ipiv309", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %429 = insertvalue [11 x [2 x i64]] %428, [2 x i64] %".unpack124.unpack132'ipiv319", 1, !dbg !12300
  %".unpack124.unpack132'ipiv320" = insertvalue [2 x i64] %"'ipiv310", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %430 = insertvalue [11 x [2 x i64]] %429, [2 x i64] %".unpack124.unpack132'ipiv320", 2, !dbg !12300
  %".unpack124.unpack132'ipiv321" = insertvalue [2 x i64] %"'ipiv311", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %431 = insertvalue [11 x [2 x i64]] %430, [2 x i64] %".unpack124.unpack132'ipiv321", 3, !dbg !12300
  %".unpack124.unpack132'ipiv322" = insertvalue [2 x i64] %"'ipiv312", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %432 = insertvalue [11 x [2 x i64]] %431, [2 x i64] %".unpack124.unpack132'ipiv322", 4, !dbg !12300
  %".unpack124.unpack132'ipiv323" = insertvalue [2 x i64] %"'ipiv313", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %433 = insertvalue [11 x [2 x i64]] %432, [2 x i64] %".unpack124.unpack132'ipiv323", 5, !dbg !12300
  %".unpack124.unpack132'ipiv324" = insertvalue [2 x i64] %"'ipiv314", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %434 = insertvalue [11 x [2 x i64]] %433, [2 x i64] %".unpack124.unpack132'ipiv324", 6, !dbg !12300
  %".unpack124.unpack132'ipiv325" = insertvalue [2 x i64] %"'ipiv315", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %435 = insertvalue [11 x [2 x i64]] %434, [2 x i64] %".unpack124.unpack132'ipiv325", 7, !dbg !12300
  %".unpack124.unpack132'ipiv326" = insertvalue [2 x i64] %"'ipiv316", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %436 = insertvalue [11 x [2 x i64]] %435, [2 x i64] %".unpack124.unpack132'ipiv326", 8, !dbg !12300
  %".unpack124.unpack132'ipiv327" = insertvalue [2 x i64] %"'ipiv317", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %437 = insertvalue [11 x [2 x i64]] %436, [2 x i64] %".unpack124.unpack132'ipiv327", 9, !dbg !12300
  %".unpack124.unpack132'ipiv328" = insertvalue [2 x i64] %"'ipiv318", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %438 = insertvalue [11 x [2 x i64]] %437, [2 x i64] %".unpack124.unpack132'ipiv328", 10, !dbg !12300
  %.unpack124.unpack132 = insertvalue [2 x i64] %416, i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %".unpack124129'ipiv" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv", 0, !dbg !12300
  %439 = insertvalue [11 x [1 x [2 x i64]]] undef, [1 x [2 x i64]] %".unpack124129'ipiv", 0, !dbg !12300
  %".unpack124129'ipiv329" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv319", 0, !dbg !12300
  %440 = insertvalue [11 x [1 x [2 x i64]]] %439, [1 x [2 x i64]] %".unpack124129'ipiv329", 1, !dbg !12300
  %".unpack124129'ipiv330" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv320", 0, !dbg !12300
  %441 = insertvalue [11 x [1 x [2 x i64]]] %440, [1 x [2 x i64]] %".unpack124129'ipiv330", 2, !dbg !12300
  %".unpack124129'ipiv331" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv321", 0, !dbg !12300
  %442 = insertvalue [11 x [1 x [2 x i64]]] %441, [1 x [2 x i64]] %".unpack124129'ipiv331", 3, !dbg !12300
  %".unpack124129'ipiv332" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv322", 0, !dbg !12300
  %443 = insertvalue [11 x [1 x [2 x i64]]] %442, [1 x [2 x i64]] %".unpack124129'ipiv332", 4, !dbg !12300
  %".unpack124129'ipiv333" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv323", 0, !dbg !12300
  %444 = insertvalue [11 x [1 x [2 x i64]]] %443, [1 x [2 x i64]] %".unpack124129'ipiv333", 5, !dbg !12300
  %".unpack124129'ipiv334" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv324", 0, !dbg !12300
  %445 = insertvalue [11 x [1 x [2 x i64]]] %444, [1 x [2 x i64]] %".unpack124129'ipiv334", 6, !dbg !12300
  %".unpack124129'ipiv335" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv325", 0, !dbg !12300
  %446 = insertvalue [11 x [1 x [2 x i64]]] %445, [1 x [2 x i64]] %".unpack124129'ipiv335", 7, !dbg !12300
  %".unpack124129'ipiv336" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv326", 0, !dbg !12300
  %447 = insertvalue [11 x [1 x [2 x i64]]] %446, [1 x [2 x i64]] %".unpack124129'ipiv336", 8, !dbg !12300
  %".unpack124129'ipiv337" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv327", 0, !dbg !12300
  %448 = insertvalue [11 x [1 x [2 x i64]]] %447, [1 x [2 x i64]] %".unpack124129'ipiv337", 9, !dbg !12300
  %".unpack124129'ipiv338" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv328", 0, !dbg !12300
  %449 = insertvalue [11 x [1 x [2 x i64]]] %448, [1 x [2 x i64]] %".unpack124129'ipiv338", 10, !dbg !12300
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !12300
  %"'ipiv339" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv297", [1 x [2 x i64]] %".unpack124129'ipiv", 1, !dbg !12300
  %450 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv339", 0, !dbg !12300
  %"'ipiv340" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv298", [1 x [2 x i64]] %".unpack124129'ipiv329", 1, !dbg !12300
  %451 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %450, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv340", 1, !dbg !12300
  %"'ipiv341" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv299", [1 x [2 x i64]] %".unpack124129'ipiv330", 1, !dbg !12300
  %452 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %451, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv341", 2, !dbg !12300
  %"'ipiv342" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv300", [1 x [2 x i64]] %".unpack124129'ipiv331", 1, !dbg !12300
  %453 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %452, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv342", 3, !dbg !12300
  %"'ipiv343" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv301", [1 x [2 x i64]] %".unpack124129'ipiv332", 1, !dbg !12300
  %454 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %453, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv343", 4, !dbg !12300
  %"'ipiv344" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv302", [1 x [2 x i64]] %".unpack124129'ipiv333", 1, !dbg !12300
  %455 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %454, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv344", 5, !dbg !12300
  %"'ipiv345" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv303", [1 x [2 x i64]] %".unpack124129'ipiv334", 1, !dbg !12300
  %456 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %455, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv345", 6, !dbg !12300
  %"'ipiv346" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv304", [1 x [2 x i64]] %".unpack124129'ipiv335", 1, !dbg !12300
  %457 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %456, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv346", 7, !dbg !12300
  %"'ipiv347" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv305", [1 x [2 x i64]] %".unpack124129'ipiv336", 1, !dbg !12300
  %458 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %457, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv347", 8, !dbg !12300
  %"'ipiv348" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv306", [1 x [2 x i64]] %".unpack124129'ipiv337", 1, !dbg !12300
  %459 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %458, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv348", 9, !dbg !12300
  %"'ipiv349" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv307", [1 x [2 x i64]] %".unpack124129'ipiv338", 1, !dbg !12300
  %460 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %459, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv349", 10, !dbg !12300
  %461 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %393, [1 x [2 x i64]] %.unpack124129, 1, !dbg !12300
  %462 = insertvalue [11 x i64] undef, i64 %303, 0, !dbg !12300
  %463 = insertvalue [11 x i64] %462, i64 %303, 1, !dbg !12300
  %464 = insertvalue [11 x i64] %463, i64 %303, 2, !dbg !12300
  %465 = insertvalue [11 x i64] %464, i64 %303, 3, !dbg !12300
  %466 = insertvalue [11 x i64] %465, i64 %303, 4, !dbg !12300
  %467 = insertvalue [11 x i64] %466, i64 %303, 5, !dbg !12300
  %468 = insertvalue [11 x i64] %467, i64 %303, 6, !dbg !12300
  %469 = insertvalue [11 x i64] %468, i64 %303, 7, !dbg !12300
  %470 = insertvalue [11 x i64] %469, i64 %303, 8, !dbg !12300
  %471 = insertvalue [11 x i64] %470, i64 %303, 9, !dbg !12300
  %472 = insertvalue [11 x i64] %471, i64 %303, 10, !dbg !12300
  %"'ipiv350" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv339", i64 %303, 2, !dbg !12300
  %473 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv350", 0, !dbg !12300
  %"'ipiv351" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv340", i64 %303, 2, !dbg !12300
  %474 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %473, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv351", 1, !dbg !12300
  %"'ipiv352" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv341", i64 %303, 2, !dbg !12300
  %475 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %474, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv352", 2, !dbg !12300
  %"'ipiv353" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv342", i64 %303, 2, !dbg !12300
  %476 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %475, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv353", 3, !dbg !12300
  %"'ipiv354" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv343", i64 %303, 2, !dbg !12300
  %477 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %476, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv354", 4, !dbg !12300
  %"'ipiv355" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv344", i64 %303, 2, !dbg !12300
  %478 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %477, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv355", 5, !dbg !12300
  %"'ipiv356" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv345", i64 %303, 2, !dbg !12300
  %479 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %478, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv356", 6, !dbg !12300
  %"'ipiv357" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv346", i64 %303, 2, !dbg !12300
  %480 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %479, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv357", 7, !dbg !12300
  %"'ipiv358" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv347", i64 %303, 2, !dbg !12300
  %481 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %480, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv358", 8, !dbg !12300
  %"'ipiv359" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv348", i64 %303, 2, !dbg !12300
  %482 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %481, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv359", 9, !dbg !12300
  %"'ipiv360" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv349", i64 %303, 2, !dbg !12300
  %483 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %482, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv360", 10, !dbg !12300
  %484 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %461, i64 %303, 2, !dbg !12300
  %485 = insertvalue [11 x i64] undef, i64 %302, 0, !dbg !12300
  %486 = insertvalue [11 x i64] %485, i64 %302, 1, !dbg !12300
  %487 = insertvalue [11 x i64] %486, i64 %302, 2, !dbg !12300
  %488 = insertvalue [11 x i64] %487, i64 %302, 3, !dbg !12300
  %489 = insertvalue [11 x i64] %488, i64 %302, 4, !dbg !12300
  %490 = insertvalue [11 x i64] %489, i64 %302, 5, !dbg !12300
  %491 = insertvalue [11 x i64] %490, i64 %302, 6, !dbg !12300
  %492 = insertvalue [11 x i64] %491, i64 %302, 7, !dbg !12300
  %493 = insertvalue [11 x i64] %492, i64 %302, 8, !dbg !12300
  %494 = insertvalue [11 x i64] %493, i64 %302, 9, !dbg !12300
  %495 = insertvalue [11 x i64] %494, i64 %302, 10, !dbg !12300
  %"'ipiv361" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv350", i64 %302, 3, !dbg !12300
  %496 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv361", 0, !dbg !12300
  %"'ipiv362" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv351", i64 %302, 3, !dbg !12300
  %497 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %496, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv362", 1, !dbg !12300
  %"'ipiv363" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv352", i64 %302, 3, !dbg !12300
  %498 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %497, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv363", 2, !dbg !12300
  %"'ipiv364" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv353", i64 %302, 3, !dbg !12300
  %499 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %498, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv364", 3, !dbg !12300
  %"'ipiv365" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv354", i64 %302, 3, !dbg !12300
  %500 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %499, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv365", 4, !dbg !12300
  %"'ipiv366" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv355", i64 %302, 3, !dbg !12300
  %501 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %500, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv366", 5, !dbg !12300
  %"'ipiv367" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv356", i64 %302, 3, !dbg !12300
  %502 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %501, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv367", 6, !dbg !12300
  %"'ipiv368" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv357", i64 %302, 3, !dbg !12300
  %503 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %502, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv368", 7, !dbg !12300
  %"'ipiv369" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv358", i64 %302, 3, !dbg !12300
  %504 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %503, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv369", 8, !dbg !12300
  %"'ipiv370" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv359", i64 %302, 3, !dbg !12300
  %505 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %504, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv370", 9, !dbg !12300
  %"'ipiv371" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv360", i64 %302, 3, !dbg !12300
  %506 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %505, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv371", 10, !dbg !12300
  %507 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %484, i64 %302, 3, !dbg !12300
  %"'ipl372" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12482, !noalias !12485
  %508 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] undef, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl372", 0, !dbg !12300
  %"'ipl373" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12497, !noalias !12498
  %509 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %508, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl373", 1, !dbg !12300
  %"'ipl374" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12499, !noalias !12500
  %510 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %509, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl374", 2, !dbg !12300
  %"'ipl375" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12501, !noalias !12502
  %511 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %510, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl375", 3, !dbg !12300
  %"'ipl376" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12503, !noalias !12504
  %512 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %511, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl376", 4, !dbg !12300
  %"'ipl377" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12505, !noalias !12506
  %513 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %512, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl377", 5, !dbg !12300
  %"'ipl378" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12507, !noalias !12508
  %514 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %513, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl378", 6, !dbg !12300
  %"'ipl379" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12509, !noalias !12510
  %515 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %514, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl379", 7, !dbg !12300
  %"'ipl380" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12511, !noalias !12512
  %516 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %515, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl380", 8, !dbg !12300
  %"'ipl381" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12513, !noalias !12514
  %517 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %516, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl381", 9, !dbg !12300
  %"'ipl382" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12515, !noalias !12516
  %518 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %517, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl382", 10, !dbg !12300
  %519 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__29424_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !12300, !alias.scope !12517, !noalias !12518
  %520 = extractvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %518, 0, !dbg !12300
  %521 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %519 to i8*, !dbg !12300
  %522 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %520 to i8*, !dbg !12300
  call void @__enzyme_runtimeinactiveerr3(i8* %521, i8* %522, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.12, i32 0, i32 0)), !dbg !12300

REMOVED BECAUSE OF SPACE CONSTRAINTS

  %"'ipiv" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl", 0, !dbg !12343
  %344 = insertvalue [11 x { i8*, {} addrspace(10)* }] undef, { i8*, {} addrspace(10)* } %"'ipiv", 0, !dbg !12343
  %"'ipiv265" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl146", 0, !dbg !12343
  %345 = insertvalue [11 x { i8*, {} addrspace(10)* }] %344, { i8*, {} addrspace(10)* } %"'ipiv265", 1, !dbg !12343
  %"'ipiv266" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl147", 0, !dbg !12343
  %346 = insertvalue [11 x { i8*, {} addrspace(10)* }] %345, { i8*, {} addrspace(10)* } %"'ipiv266", 2, !dbg !12343
  %"'ipiv267" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl148", 0, !dbg !12343
  %347 = insertvalue [11 x { i8*, {} addrspace(10)* }] %346, { i8*, {} addrspace(10)* } %"'ipiv267", 3, !dbg !12343
  %"'ipiv268" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl149", 0, !dbg !12343
  %348 = insertvalue [11 x { i8*, {} addrspace(10)* }] %347, { i8*, {} addrspace(10)* } %"'ipiv268", 4, !dbg !12343
  %"'ipiv269" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl150", 0, !dbg !12343
  %349 = insertvalue [11 x { i8*, {} addrspace(10)* }] %348, { i8*, {} addrspace(10)* } %"'ipiv269", 5, !dbg !12343
  %"'ipiv270" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl151", 0, !dbg !12343
  %350 = insertvalue [11 x { i8*, {} addrspace(10)* }] %349, { i8*, {} addrspace(10)* } %"'ipiv270", 6, !dbg !12343
  %"'ipiv271" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl152", 0, !dbg !12343
  %351 = insertvalue [11 x { i8*, {} addrspace(10)* }] %350, { i8*, {} addrspace(10)* } %"'ipiv271", 7, !dbg !12343
  %"'ipiv272" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl153", 0, !dbg !12343
  %352 = insertvalue [11 x { i8*, {} addrspace(10)* }] %351, { i8*, {} addrspace(10)* } %"'ipiv272", 8, !dbg !12343
  %"'ipiv273" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl154", 0, !dbg !12343
  %353 = insertvalue [11 x { i8*, {} addrspace(10)* }] %352, { i8*, {} addrspace(10)* } %"'ipiv273", 9, !dbg !12343
  %"'ipiv274" = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %"'ipl155", 0, !dbg !12343
  %354 = insertvalue [11 x { i8*, {} addrspace(10)* }] %353, { i8*, {} addrspace(10)* } %"'ipiv274", 10, !dbg !12343
  %355 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %204, 0, !dbg !12343
  %"'ipiv275" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv", {} addrspace(10)* %"'ipl166", 1, !dbg !12343
  %356 = insertvalue [11 x { i8*, {} addrspace(10)* }] undef, { i8*, {} addrspace(10)* } %"'ipiv275", 0, !dbg !12343
  %"'ipiv276" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv265", {} addrspace(10)* %"'ipl167", 1, !dbg !12343
  %357 = insertvalue [11 x { i8*, {} addrspace(10)* }] %356, { i8*, {} addrspace(10)* } %"'ipiv276", 1, !dbg !12343
  %"'ipiv277" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv266", {} addrspace(10)* %"'ipl168", 1, !dbg !12343
  %358 = insertvalue [11 x { i8*, {} addrspace(10)* }] %357, { i8*, {} addrspace(10)* } %"'ipiv277", 2, !dbg !12343
  %"'ipiv278" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv267", {} addrspace(10)* %"'ipl169", 1, !dbg !12343
  %359 = insertvalue [11 x { i8*, {} addrspace(10)* }] %358, { i8*, {} addrspace(10)* } %"'ipiv278", 3, !dbg !12343
  %"'ipiv279" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv268", {} addrspace(10)* %"'ipl170", 1, !dbg !12343
  %360 = insertvalue [11 x { i8*, {} addrspace(10)* }] %359, { i8*, {} addrspace(10)* } %"'ipiv279", 4, !dbg !12343
  %"'ipiv280" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv269", {} addrspace(10)* %"'ipl171", 1, !dbg !12343
  %361 = insertvalue [11 x { i8*, {} addrspace(10)* }] %360, { i8*, {} addrspace(10)* } %"'ipiv280", 5, !dbg !12343
  %"'ipiv281" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv270", {} addrspace(10)* %"'ipl172", 1, !dbg !12343
  %362 = insertvalue [11 x { i8*, {} addrspace(10)* }] %361, { i8*, {} addrspace(10)* } %"'ipiv281", 6, !dbg !12343
  %"'ipiv282" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv271", {} addrspace(10)* %"'ipl173", 1, !dbg !12343
  %363 = insertvalue [11 x { i8*, {} addrspace(10)* }] %362, { i8*, {} addrspace(10)* } %"'ipiv282", 7, !dbg !12343
  %"'ipiv283" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv272", {} addrspace(10)* %"'ipl174", 1, !dbg !12343
  %364 = insertvalue [11 x { i8*, {} addrspace(10)* }] %363, { i8*, {} addrspace(10)* } %"'ipiv283", 8, !dbg !12343
  %"'ipiv284" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv273", {} addrspace(10)* %"'ipl175", 1, !dbg !12343
  %365 = insertvalue [11 x { i8*, {} addrspace(10)* }] %364, { i8*, {} addrspace(10)* } %"'ipiv284", 9, !dbg !12343
  %"'ipiv285" = insertvalue { i8*, {} addrspace(10)* } %"'ipiv274", {} addrspace(10)* %"'ipl176", 1, !dbg !12343
  %366 = insertvalue [11 x { i8*, {} addrspace(10)* }] %365, { i8*, {} addrspace(10)* } %"'ipiv285", 10, !dbg !12343
  %367 = insertvalue { i8*, {} addrspace(10)* } %355, {} addrspace(10)* %228, 1, !dbg !12343
  %368 = insertvalue { i8*, {} addrspace(10)* } zeroinitializer, i8* %107, 0, !dbg !12343
  %369 = insertvalue { i8*, {} addrspace(10)* } %368, {} addrspace(10)* %109, 1, !dbg !12343
  %"'ipc286" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl188" to {} addrspace(10)*, !dbg !12300
  %370 = insertvalue [11 x {} addrspace(10)*] undef, {} addrspace(10)* %"'ipc286", 0, !dbg !12300
  %"'ipc287" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl189" to {} addrspace(10)*, !dbg !12300
  %371 = insertvalue [11 x {} addrspace(10)*] %370, {} addrspace(10)* %"'ipc287", 1, !dbg !12300
  %"'ipc288" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl190" to {} addrspace(10)*, !dbg !12300
  %372 = insertvalue [11 x {} addrspace(10)*] %371, {} addrspace(10)* %"'ipc288", 2, !dbg !12300
  %"'ipc289" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl191" to {} addrspace(10)*, !dbg !12300
  %373 = insertvalue [11 x {} addrspace(10)*] %372, {} addrspace(10)* %"'ipc289", 3, !dbg !12300
  %"'ipc290" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl192" to {} addrspace(10)*, !dbg !12300
  %374 = insertvalue [11 x {} addrspace(10)*] %373, {} addrspace(10)* %"'ipc290", 4, !dbg !12300
  %"'ipc291" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl193" to {} addrspace(10)*, !dbg !12300
  %375 = insertvalue [11 x {} addrspace(10)*] %374, {} addrspace(10)* %"'ipc291", 5, !dbg !12300
  %"'ipc292" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl194" to {} addrspace(10)*, !dbg !12300
  %376 = insertvalue [11 x {} addrspace(10)*] %375, {} addrspace(10)* %"'ipc292", 6, !dbg !12300
  %"'ipc293" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl195" to {} addrspace(10)*, !dbg !12300
  %377 = insertvalue [11 x {} addrspace(10)*] %376, {} addrspace(10)* %"'ipc293", 7, !dbg !12300
  %"'ipc294" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl196" to {} addrspace(10)*, !dbg !12300
  %378 = insertvalue [11 x {} addrspace(10)*] %377, {} addrspace(10)* %"'ipc294", 8, !dbg !12300
  %"'ipc295" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl197" to {} addrspace(10)*, !dbg !12300
  %379 = insertvalue [11 x {} addrspace(10)*] %378, {} addrspace(10)* %"'ipc295", 9, !dbg !12300
  %"'ipc296" = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipl198" to {} addrspace(10)*, !dbg !12300
  %380 = insertvalue [11 x {} addrspace(10)*] %379, {} addrspace(10)* %"'ipc296", 10, !dbg !12300
  %381 = bitcast { i8*, {} addrspace(10)* } addrspace(10)* %263 to {} addrspace(10)*, !dbg !12300
  %"'ipiv297" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc286", 0, !dbg !12300
  %382 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv297", 0, !dbg !12300
  %"'ipiv298" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc287", 0, !dbg !12300
  %383 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %382, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv298", 1, !dbg !12300
  %"'ipiv299" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc288", 0, !dbg !12300
  %384 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %383, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv299", 2, !dbg !12300
  %"'ipiv300" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc289", 0, !dbg !12300
  %385 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %384, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv300", 3, !dbg !12300
  %"'ipiv301" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc290", 0, !dbg !12300
  %386 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %385, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv301", 4, !dbg !12300
  %"'ipiv302" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc291", 0, !dbg !12300
  %387 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %386, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv302", 5, !dbg !12300
  %"'ipiv303" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc292", 0, !dbg !12300
  %388 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %387, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv303", 6, !dbg !12300
  %"'ipiv304" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc293", 0, !dbg !12300
  %389 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %388, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv304", 7, !dbg !12300
  %"'ipiv305" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc294", 0, !dbg !12300
  %390 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %389, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv305", 8, !dbg !12300
  %"'ipiv306" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc295", 0, !dbg !12300
  %391 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %390, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv306", 9, !dbg !12300
  %"'ipiv307" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } zeroinitializer, {} addrspace(10)* %"'ipc296", 0, !dbg !12300
  %392 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %391, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv307", 10, !dbg !12300
  %393 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } poison, {} addrspace(10)* %381, 0, !dbg !12300
  %.unpack124.unpack.elt = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 0, !dbg !12300
  %.unpack124.unpack.unpack = load i64, i64 addrspace(11)* %.unpack124.unpack.elt, align 8, !dbg !12300, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %394 = insertvalue [11 x i64] undef, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %395 = insertvalue [11 x i64] %394, i64 %.unpack124.unpack.unpack, 1, !dbg !12300
  %396 = insertvalue [11 x i64] %395, i64 %.unpack124.unpack.unpack, 2, !dbg !12300
  %397 = insertvalue [11 x i64] %396, i64 %.unpack124.unpack.unpack, 3, !dbg !12300
  %398 = insertvalue [11 x i64] %397, i64 %.unpack124.unpack.unpack, 4, !dbg !12300
  %399 = insertvalue [11 x i64] %398, i64 %.unpack124.unpack.unpack, 5, !dbg !12300
  %400 = insertvalue [11 x i64] %399, i64 %.unpack124.unpack.unpack, 6, !dbg !12300
  %401 = insertvalue [11 x i64] %400, i64 %.unpack124.unpack.unpack, 7, !dbg !12300
  %402 = insertvalue [11 x i64] %401, i64 %.unpack124.unpack.unpack, 8, !dbg !12300
  %403 = insertvalue [11 x i64] %402, i64 %.unpack124.unpack.unpack, 9, !dbg !12300
  %404 = insertvalue [11 x i64] %403, i64 %.unpack124.unpack.unpack, 10, !dbg !12300
  %"'ipiv308" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %405 = insertvalue [11 x [2 x i64]] undef, [2 x i64] %"'ipiv308", 0, !dbg !12300
  %"'ipiv309" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %406 = insertvalue [11 x [2 x i64]] %405, [2 x i64] %"'ipiv309", 1, !dbg !12300
  %"'ipiv310" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %407 = insertvalue [11 x [2 x i64]] %406, [2 x i64] %"'ipiv310", 2, !dbg !12300
  %"'ipiv311" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %408 = insertvalue [11 x [2 x i64]] %407, [2 x i64] %"'ipiv311", 3, !dbg !12300
  %"'ipiv312" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %409 = insertvalue [11 x [2 x i64]] %408, [2 x i64] %"'ipiv312", 4, !dbg !12300
  %"'ipiv313" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %410 = insertvalue [11 x [2 x i64]] %409, [2 x i64] %"'ipiv313", 5, !dbg !12300
  %"'ipiv314" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %411 = insertvalue [11 x [2 x i64]] %410, [2 x i64] %"'ipiv314", 6, !dbg !12300
  %"'ipiv315" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %412 = insertvalue [11 x [2 x i64]] %411, [2 x i64] %"'ipiv315", 7, !dbg !12300
  %"'ipiv316" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %413 = insertvalue [11 x [2 x i64]] %412, [2 x i64] %"'ipiv316", 8, !dbg !12300
  %"'ipiv317" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %414 = insertvalue [11 x [2 x i64]] %413, [2 x i64] %"'ipiv317", 9, !dbg !12300
  %"'ipiv318" = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %415 = insertvalue [11 x [2 x i64]] %414, [2 x i64] %"'ipiv318", 10, !dbg !12300
  %416 = insertvalue [2 x i64] poison, i64 %.unpack124.unpack.unpack, 0, !dbg !12300
  %.unpack124.unpack.elt130 = getelementptr inbounds { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* %0, i64 0, i32 0, i32 1, i64 0, i64 1, !dbg !12300
  %.unpack124.unpack.unpack131 = load i64, i64 addrspace(11)* %.unpack124.unpack.elt130, align 8, !dbg !12300, !tbaa !196, !alias.scope !12431, !noalias !12432, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %417 = insertvalue [11 x i64] undef, i64 %.unpack124.unpack.unpack131, 0, !dbg !12300
  %418 = insertvalue [11 x i64] %417, i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %419 = insertvalue [11 x i64] %418, i64 %.unpack124.unpack.unpack131, 2, !dbg !12300
  %420 = insertvalue [11 x i64] %419, i64 %.unpack124.unpack.unpack131, 3, !dbg !12300
  %421 = insertvalue [11 x i64] %420, i64 %.unpack124.unpack.unpack131, 4, !dbg !12300
  %422 = insertvalue [11 x i64] %421, i64 %.unpack124.unpack.unpack131, 5, !dbg !12300
  %423 = insertvalue [11 x i64] %422, i64 %.unpack124.unpack.unpack131, 6, !dbg !12300
  %424 = insertvalue [11 x i64] %423, i64 %.unpack124.unpack.unpack131, 7, !dbg !12300
  %425 = insertvalue [11 x i64] %424, i64 %.unpack124.unpack.unpack131, 8, !dbg !12300
  %426 = insertvalue [11 x i64] %425, i64 %.unpack124.unpack.unpack131, 9, !dbg !12300
  %427 = insertvalue [11 x i64] %426, i64 %.unpack124.unpack.unpack131, 10, !dbg !12300
  %".unpack124.unpack132'ipiv" = insertvalue [2 x i64] %"'ipiv308", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %428 = insertvalue [11 x [2 x i64]] undef, [2 x i64] %".unpack124.unpack132'ipiv", 0, !dbg !12300
  %".unpack124.unpack132'ipiv319" = insertvalue [2 x i64] %"'ipiv309", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %429 = insertvalue [11 x [2 x i64]] %428, [2 x i64] %".unpack124.unpack132'ipiv319", 1, !dbg !12300
  %".unpack124.unpack132'ipiv320" = insertvalue [2 x i64] %"'ipiv310", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %430 = insertvalue [11 x [2 x i64]] %429, [2 x i64] %".unpack124.unpack132'ipiv320", 2, !dbg !12300
  %".unpack124.unpack132'ipiv321" = insertvalue [2 x i64] %"'ipiv311", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %431 = insertvalue [11 x [2 x i64]] %430, [2 x i64] %".unpack124.unpack132'ipiv321", 3, !dbg !12300
  %".unpack124.unpack132'ipiv322" = insertvalue [2 x i64] %"'ipiv312", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %432 = insertvalue [11 x [2 x i64]] %431, [2 x i64] %".unpack124.unpack132'ipiv322", 4, !dbg !12300
  %".unpack124.unpack132'ipiv323" = insertvalue [2 x i64] %"'ipiv313", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %433 = insertvalue [11 x [2 x i64]] %432, [2 x i64] %".unpack124.unpack132'ipiv323", 5, !dbg !12300
  %".unpack124.unpack132'ipiv324" = insertvalue [2 x i64] %"'ipiv314", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %434 = insertvalue [11 x [2 x i64]] %433, [2 x i64] %".unpack124.unpack132'ipiv324", 6, !dbg !12300
  %".unpack124.unpack132'ipiv325" = insertvalue [2 x i64] %"'ipiv315", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %435 = insertvalue [11 x [2 x i64]] %434, [2 x i64] %".unpack124.unpack132'ipiv325", 7, !dbg !12300
  %".unpack124.unpack132'ipiv326" = insertvalue [2 x i64] %"'ipiv316", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %436 = insertvalue [11 x [2 x i64]] %435, [2 x i64] %".unpack124.unpack132'ipiv326", 8, !dbg !12300
  %".unpack124.unpack132'ipiv327" = insertvalue [2 x i64] %"'ipiv317", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %437 = insertvalue [11 x [2 x i64]] %436, [2 x i64] %".unpack124.unpack132'ipiv327", 9, !dbg !12300
  %".unpack124.unpack132'ipiv328" = insertvalue [2 x i64] %"'ipiv318", i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %438 = insertvalue [11 x [2 x i64]] %437, [2 x i64] %".unpack124.unpack132'ipiv328", 10, !dbg !12300
  %.unpack124.unpack132 = insertvalue [2 x i64] %416, i64 %.unpack124.unpack.unpack131, 1, !dbg !12300
  %".unpack124129'ipiv" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv", 0, !dbg !12300
  %439 = insertvalue [11 x [1 x [2 x i64]]] undef, [1 x [2 x i64]] %".unpack124129'ipiv", 0, !dbg !12300
  %".unpack124129'ipiv329" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv319", 0, !dbg !12300
  %440 = insertvalue [11 x [1 x [2 x i64]]] %439, [1 x [2 x i64]] %".unpack124129'ipiv329", 1, !dbg !12300
  %".unpack124129'ipiv330" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv320", 0, !dbg !12300
  %441 = insertvalue [11 x [1 x [2 x i64]]] %440, [1 x [2 x i64]] %".unpack124129'ipiv330", 2, !dbg !12300
  %".unpack124129'ipiv331" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv321", 0, !dbg !12300
  %442 = insertvalue [11 x [1 x [2 x i64]]] %441, [1 x [2 x i64]] %".unpack124129'ipiv331", 3, !dbg !12300
  %".unpack124129'ipiv332" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv322", 0, !dbg !12300
  %443 = insertvalue [11 x [1 x [2 x i64]]] %442, [1 x [2 x i64]] %".unpack124129'ipiv332", 4, !dbg !12300
  %".unpack124129'ipiv333" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv323", 0, !dbg !12300
  %444 = insertvalue [11 x [1 x [2 x i64]]] %443, [1 x [2 x i64]] %".unpack124129'ipiv333", 5, !dbg !12300
  %".unpack124129'ipiv334" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv324", 0, !dbg !12300
  %445 = insertvalue [11 x [1 x [2 x i64]]] %444, [1 x [2 x i64]] %".unpack124129'ipiv334", 6, !dbg !12300
  %".unpack124129'ipiv335" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv325", 0, !dbg !12300
  %446 = insertvalue [11 x [1 x [2 x i64]]] %445, [1 x [2 x i64]] %".unpack124129'ipiv335", 7, !dbg !12300
  %".unpack124129'ipiv336" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv326", 0, !dbg !12300
  %447 = insertvalue [11 x [1 x [2 x i64]]] %446, [1 x [2 x i64]] %".unpack124129'ipiv336", 8, !dbg !12300
  %".unpack124129'ipiv337" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv327", 0, !dbg !12300
  %448 = insertvalue [11 x [1 x [2 x i64]]] %447, [1 x [2 x i64]] %".unpack124129'ipiv337", 9, !dbg !12300
  %".unpack124129'ipiv338" = insertvalue [1 x [2 x i64]] poison, [2 x i64] %".unpack124.unpack132'ipiv328", 0, !dbg !12300
  %449 = insertvalue [11 x [1 x [2 x i64]]] %448, [1 x [2 x i64]] %".unpack124129'ipiv338", 10, !dbg !12300
  %.unpack124129 = insertvalue [1 x [2 x i64]] poison, [2 x i64] %.unpack124.unpack132, 0, !dbg !12300
  %"'ipiv339" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv297", [1 x [2 x i64]] %".unpack124129'ipiv", 1, !dbg !12300
  %450 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv339", 0, !dbg !12300
  %"'ipiv340" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv298", [1 x [2 x i64]] %".unpack124129'ipiv329", 1, !dbg !12300
  %451 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %450, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv340", 1, !dbg !12300
  %"'ipiv341" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv299", [1 x [2 x i64]] %".unpack124129'ipiv330", 1, !dbg !12300
  %452 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %451, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv341", 2, !dbg !12300
  %"'ipiv342" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv300", [1 x [2 x i64]] %".unpack124129'ipiv331", 1, !dbg !12300
  %453 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %452, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv342", 3, !dbg !12300
  %"'ipiv343" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv301", [1 x [2 x i64]] %".unpack124129'ipiv332", 1, !dbg !12300
  %454 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %453, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv343", 4, !dbg !12300
  %"'ipiv344" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv302", [1 x [2 x i64]] %".unpack124129'ipiv333", 1, !dbg !12300
  %455 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %454, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv344", 5, !dbg !12300
  %"'ipiv345" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv303", [1 x [2 x i64]] %".unpack124129'ipiv334", 1, !dbg !12300
  %456 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %455, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv345", 6, !dbg !12300
  %"'ipiv346" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv304", [1 x [2 x i64]] %".unpack124129'ipiv335", 1, !dbg !12300
  %457 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %456, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv346", 7, !dbg !12300
  %"'ipiv347" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv305", [1 x [2 x i64]] %".unpack124129'ipiv336", 1, !dbg !12300
  %458 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %457, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv347", 8, !dbg !12300
  %"'ipiv348" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv306", [1 x [2 x i64]] %".unpack124129'ipiv337", 1, !dbg !12300
  %459 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %458, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv348", 9, !dbg !12300
  %"'ipiv349" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv307", [1 x [2 x i64]] %".unpack124129'ipiv338", 1, !dbg !12300
  %460 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %459, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv349", 10, !dbg !12300
  %461 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %393, [1 x [2 x i64]] %.unpack124129, 1, !dbg !12300
  %462 = insertvalue [11 x i64] undef, i64 %303, 0, !dbg !12300
  %463 = insertvalue [11 x i64] %462, i64 %303, 1, !dbg !12300
  %464 = insertvalue [11 x i64] %463, i64 %303, 2, !dbg !12300
  %465 = insertvalue [11 x i64] %464, i64 %303, 3, !dbg !12300
  %466 = insertvalue [11 x i64] %465, i64 %303, 4, !dbg !12300
  %467 = insertvalue [11 x i64] %466, i64 %303, 5, !dbg !12300
  %468 = insertvalue [11 x i64] %467, i64 %303, 6, !dbg !12300
  %469 = insertvalue [11 x i64] %468, i64 %303, 7, !dbg !12300
  %470 = insertvalue [11 x i64] %469, i64 %303, 8, !dbg !12300
  %471 = insertvalue [11 x i64] %470, i64 %303, 9, !dbg !12300
  %472 = insertvalue [11 x i64] %471, i64 %303, 10, !dbg !12300
  %"'ipiv350" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv339", i64 %303, 2, !dbg !12300
  %473 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv350", 0, !dbg !12300
  %"'ipiv351" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv340", i64 %303, 2, !dbg !12300
  %474 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %473, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv351", 1, !dbg !12300
  %"'ipiv352" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv341", i64 %303, 2, !dbg !12300
  %475 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %474, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv352", 2, !dbg !12300
  %"'ipiv353" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv342", i64 %303, 2, !dbg !12300
  %476 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %475, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv353", 3, !dbg !12300
  %"'ipiv354" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv343", i64 %303, 2, !dbg !12300
  %477 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %476, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv354", 4, !dbg !12300
  %"'ipiv355" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv344", i64 %303, 2, !dbg !12300
  %478 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %477, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv355", 5, !dbg !12300
  %"'ipiv356" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv345", i64 %303, 2, !dbg !12300
  %479 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %478, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv356", 6, !dbg !12300
  %"'ipiv357" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv346", i64 %303, 2, !dbg !12300
  %480 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %479, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv357", 7, !dbg !12300
  %"'ipiv358" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv347", i64 %303, 2, !dbg !12300
  %481 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %480, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv358", 8, !dbg !12300
  %"'ipiv359" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv348", i64 %303, 2, !dbg !12300
  %482 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %481, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv359", 9, !dbg !12300
  %"'ipiv360" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv349", i64 %303, 2, !dbg !12300
  %483 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %482, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv360", 10, !dbg !12300
  %484 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %461, i64 %303, 2, !dbg !12300
  %485 = insertvalue [11 x i64] undef, i64 %302, 0, !dbg !12300
  %486 = insertvalue [11 x i64] %485, i64 %302, 1, !dbg !12300
  %487 = insertvalue [11 x i64] %486, i64 %302, 2, !dbg !12300
  %488 = insertvalue [11 x i64] %487, i64 %302, 3, !dbg !12300
  %489 = insertvalue [11 x i64] %488, i64 %302, 4, !dbg !12300
  %490 = insertvalue [11 x i64] %489, i64 %302, 5, !dbg !12300
  %491 = insertvalue [11 x i64] %490, i64 %302, 6, !dbg !12300
  %492 = insertvalue [11 x i64] %491, i64 %302, 7, !dbg !12300
  %493 = insertvalue [11 x i64] %492, i64 %302, 8, !dbg !12300
  %494 = insertvalue [11 x i64] %493, i64 %302, 9, !dbg !12300
  %495 = insertvalue [11 x i64] %494, i64 %302, 10, !dbg !12300
  %"'ipiv361" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv350", i64 %302, 3, !dbg !12300
  %496 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv361", 0, !dbg !12300
  %"'ipiv362" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv351", i64 %302, 3, !dbg !12300
  %497 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %496, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv362", 1, !dbg !12300
  %"'ipiv363" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv352", i64 %302, 3, !dbg !12300
  %498 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %497, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv363", 2, !dbg !12300
  %"'ipiv364" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv353", i64 %302, 3, !dbg !12300
  %499 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %498, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv364", 3, !dbg !12300
  %"'ipiv365" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv354", i64 %302, 3, !dbg !12300
  %500 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %499, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv365", 4, !dbg !12300
  %"'ipiv366" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv355", i64 %302, 3, !dbg !12300
  %501 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %500, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv366", 5, !dbg !12300
  %"'ipiv367" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv356", i64 %302, 3, !dbg !12300
  %502 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %501, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv367", 6, !dbg !12300
  %"'ipiv368" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv357", i64 %302, 3, !dbg !12300
  %503 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %502, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv368", 7, !dbg !12300
  %"'ipiv369" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv358", i64 %302, 3, !dbg !12300
  %504 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %503, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv369", 8, !dbg !12300
  %"'ipiv370" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv359", i64 %302, 3, !dbg !12300
  %505 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %504, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv370", 9, !dbg !12300
  %"'ipiv371" = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv360", i64 %302, 3, !dbg !12300
  %506 = insertvalue [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %505, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %"'ipiv371", 10, !dbg !12300
  %507 = insertvalue { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %484, i64 %302, 3, !dbg !12300
  %"'ipl372" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12482, !noalias !12485
  %508 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] undef, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl372", 0, !dbg !12300
  %"'ipl373" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12497, !noalias !12498
  %509 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %508, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl373", 1, !dbg !12300
  %"'ipl374" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12499, !noalias !12500
  %510 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %509, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl374", 2, !dbg !12300
  %"'ipl375" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12501, !noalias !12502
  %511 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %510, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl375", 3, !dbg !12300
  %"'ipl376" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12503, !noalias !12504
  %512 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %511, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl376", 4, !dbg !12300
  %"'ipl377" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12505, !noalias !12506
  %513 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %512, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl377", 5, !dbg !12300
  %"'ipl378" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12507, !noalias !12508
  %514 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %513, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl378", 6, !dbg !12300
  %"'ipl379" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12509, !noalias !12510
  %515 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %514, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl379", 7, !dbg !12300
  %"'ipl380" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12511, !noalias !12512
  %516 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %515, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl380", 8, !dbg !12300
  %"'ipl381" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12513, !noalias !12514
  %517 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %516, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl381", 9, !dbg !12300
  %"'ipl382" = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** null unordered, align 8, !dbg !12300, !alias.scope !12515, !noalias !12516
  %518 = insertvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %517, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %"'ipl382", 10, !dbg !12300
  %519 = load atomic void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*, void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)** bitcast (void ()** @jlplt_dgemm_64__29424_got to void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)**) unordered, align 8, !dbg !12300, !alias.scope !12517, !noalias !12518
  %520 = extractvalue [11 x void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)*] %518, 0, !dbg !12300
  %521 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %519 to i8*, !dbg !12300
  %522 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %520 to i8*, !dbg !12300
  call void @__enzyme_runtimeinactiveerr7(i8* %521, i8* %522, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.12, i32 0, i32 0)), !dbg !12300
  %523 = bitcast void (i8*, i8*, i8*, i8*, i8*, i8*, i64, i8*, i64, i8*, i8*, i64, i8*, i64, i64)* %520 to void (i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i64, [11 x i64])**, !dbg !12300
  %524 = load void (i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i64, [11 x i64])*, void (i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i8*, [11 x i8*], i64, [11 x i64], i8*, [11 x i8*], i64, [11 x i64], i64, [11 x i64])** %523, align 8, !dbg !12300
  %525 = insertvalue [11 x i8*] undef, i8* %11, 0, !dbg !12300
  %526 = insertvalue [11 x i8*] %525, i8* %11, 1, !dbg !12300
  %527 = insertvalue [11 x i8*] %526, i8* %11, 2, !dbg !12300
  %528 = insertvalue [11 x i8*] %527, i8* %11, 3, !dbg !12300
  %529 = insertvalue [11 x i8*] %528, i8* %11, 4, !dbg !12300
  %530 = insertvalue [11 x i8*] %529, i8* %11, 5, !dbg !12300
  %531 = insertvalue [11 x i8*] %530, i8* %11, 6, !dbg !12300
  %532 = insertvalue [11 x i8*] %531, i8* %11, 7, !dbg !12300
  %533 = insertvalue [11 x i8*] %532, i8* %11, 8, !dbg !12300
  %534 = insertvalue [11 x i8*] %533, i8* %11, 9, !dbg !12300
  %535 = insertvalue [11 x i8*] %534, i8* %11, 10, !dbg !12300
  %536 = insertvalue [11 x i8*] undef, i8* %12, 0, !dbg !12300
  %537 = insertvalue [11 x i8*] %536, i8* %12, 1, !dbg !12300
  %538 = insertvalue [11 x i8*] %537, i8* %12, 2, !dbg !12300
  %539 = insertvalue [11 x i8*] %538, i8* %12, 3, !dbg !12300
  %540 = insertvalue [11 x i8*] %539, i8* %12, 4, !dbg !12300
  %541 = insertvalue [11 x i8*] %540, i8* %12, 5, !dbg !12300
  %542 = insertvalue [11 x i8*] %541, i8* %12, 6, !dbg !12300
  %543 = insertvalue [11 x i8*] %542, i8* %12, 7, !dbg !12300
  %544 = insertvalue [11 x i8*] %543, i8* %12, 8, !dbg !12300
  %545 = insertvalue [11 x i8*] %544, i8* %12, 9, !dbg !12300
  %546 = insertvalue [11 x i8*] %545, i8* %12, 10, !dbg !12300
  %547 = insertvalue [11 x i8*] undef, i8* %89, 0, !dbg !12300
  %548 = insertvalue [11 x i8*] %547, i8* %89, 1, !dbg !12300
  %549 = insertvalue [11 x i8*] %548, i8* %89, 2, !dbg !12300
  %550 = insertvalue [11 x i8*] %549, i8* %89, 3, !dbg !12300
  %551 = insertvalue [11 x i8*] %550, i8* %89, 4, !dbg !12300
  %552 = insertvalue [11 x i8*] %551, i8* %89, 5, !dbg !12300
  %553 = insertvalue [11 x i8*] %552, i8* %89, 6, !dbg !12300
  %554 = insertvalue [11 x i8*] %553, i8* %89, 7, !dbg !12300
  %555 = insertvalue [11 x i8*] %554, i8* %89, 8, !dbg !12300
  %556 = insertvalue [11 x i8*] %555, i8* %89, 9, !dbg !12300
  %557 = insertvalue [11 x i8*] %556, i8* %89, 10, !dbg !12300
  %558 = insertvalue [11 x i8*] undef, i8* %88, 0, !dbg !12300
  %559 = insertvalue [11 x i8*] %558, i8* %88, 1, !dbg !12300
  %560 = insertvalue [11 x i8*] %559, i8* %88, 2, !dbg !12300
  %561 = insertvalue [11 x i8*] %560, i8* %88, 3, !dbg !12300
  %562 = insertvalue [11 x i8*] %561, i8* %88, 4, !dbg !12300
  %563 = insertvalue [11 x i8*] %562, i8* %88, 5, !dbg !12300
  %564 = insertvalue [11 x i8*] %563, i8* %88, 6, !dbg !12300
  %565 = insertvalue [11 x i8*] %564, i8* %88, 7, !dbg !12300
  %566 = insertvalue [11 x i8*] %565, i8* %88, 8, !dbg !12300
  %567 = insertvalue [11 x i8*] %566, i8* %88, 9, !dbg !12300
  %568 = insertvalue [11 x i8*] %567, i8* %88, 10, !dbg !12300
  %569 = insertvalue [11 x i8*] undef, i8* %87, 0, !dbg !12300
  %570 = insertvalue [11 x i8*] %569, i8* %87, 1, !dbg !12300
  %571 = insertvalue [11 x i8*] %570, i8* %87, 2, !dbg !12300
  %572 = insertvalue [11 x i8*] %571, i8* %87, 3, !dbg !12300
  %573 = insertvalue [11 x i8*] %572, i8* %87, 4, !dbg !12300
  %574 = insertvalue [11 x i8*] %573, i8* %87, 5, !dbg !12300
  %575 = insertvalue [11 x i8*] %574, i8* %87, 6, !dbg !12300
  %576 = insertvalue [11 x i8*] %575, i8* %87, 7, !dbg !12300
  %577 = insertvalue [11 x i8*] %576, i8* %87, 8, !dbg !12300
  %578 = insertvalue [11 x i8*] %577, i8* %87, 9, !dbg !12300
  %579 = insertvalue [11 x i8*] %578, i8* %87, 10, !dbg !12300
  %580 = insertvalue [11 x i8*] undef, i8* %74, 0, !dbg !12300
  %581 = insertvalue [11 x i8*] %580, i8* %74, 1, !dbg !12300
  %582 = insertvalue [11 x i8*] %581, i8* %74, 2, !dbg !12300
  %583 = insertvalue [11 x i8*] %582, i8* %74, 3, !dbg !12300
  %584 = insertvalue [11 x i8*] %583, i8* %74, 4, !dbg !12300
  %585 = insertvalue [11 x i8*] %584, i8* %74, 5, !dbg !12300
  %586 = insertvalue [11 x i8*] %585, i8* %74, 6, !dbg !12300
  %587 = insertvalue [11 x i8*] %586, i8* %74, 7, !dbg !12300
  %588 = insertvalue [11 x i8*] %587, i8* %74, 8, !dbg !12300
  %589 = insertvalue [11 x i8*] %588, i8* %74, 9, !dbg !12300
  %590 = insertvalue [11 x i8*] %589, i8* %74, 10, !dbg !12300
  %591 = insertvalue [11 x i64] undef, i64 %316, 0, !dbg !12300
  %592 = insertvalue [11 x i64] %591, i64 %316, 1, !dbg !12300
  %593 = insertvalue [11 x i64] %592, i64 %316, 2, !dbg !12300
  %594 = insertvalue [11 x i64] %593, i64 %316, 3, !dbg !12300
  %595 = insertvalue [11 x i64] %594, i64 %316, 4, !dbg !12300
  %596 = insertvalue [11 x i64] %595, i64 %316, 5, !dbg !12300
  %597 = insertvalue [11 x i64] %596, i64 %316, 6, !dbg !12300
  %598 = insertvalue [11 x i64] %597, i64 %316, 7, !dbg !12300
  %599 = insertvalue [11 x i64] %598, i64 %316, 8, !dbg !12300
  %600 = insertvalue [11 x i64] %599, i64 %316, 9, !dbg !12300
  %601 = insertvalue [11 x i64] %600, i64 %316, 10, !dbg !12300
  %602 = insertvalue [11 x i8*] undef, i8* %73, 0, !dbg !12300
  %603 = insertvalue [11 x i8*] %602, i8* %73, 1, !dbg !12300
  %604 = insertvalue [11 x i8*] %603, i8* %73, 2, !dbg !12300
  %605 = insertvalue [11 x i8*] %604, i8* %73, 3, !dbg !12300
  %606 = insertvalue [11 x i8*] %605, i8* %73, 4, !dbg !12300
  %607 = insertvalue [11 x i8*] %606, i8* %73, 5, !dbg !12300
  %608 = insertvalue [11 x i8*] %607, i8* %73, 6, !dbg !12300
  %609 = insertvalue [11 x i8*] %608, i8* %73, 7, !dbg !12300
  %610 = insertvalue [11 x i8*] %609, i8* %73, 8, !dbg !12300
  %611 = insertvalue [11 x i8*] %610, i8* %73, 9, !dbg !12300
  %612 = insertvalue [11 x i8*] %611, i8* %73, 10, !dbg !12300
  %613 = insertvalue [11 x i8*] undef, i8* %60, 0, !dbg !12300
  %614 = insertvalue [11 x i8*] %613, i8* %60, 1, !dbg !12300
  %615 = insertvalue [11 x i8*] %614, i8* %60, 2, !dbg !12300
  %616 = insertvalue [11 x i8*] %615, i8* %60, 3, !dbg !12300
  %617 = insertvalue [11 x i8*] %616, i8* %60, 4, !dbg !12300
  %618 = insertvalue [11 x i8*] %617, i8* %60, 5, !dbg !12300
  %619 = insertvalue [11 x i8*] %618, i8* %60, 6, !dbg !12300
  %620 = insertvalue [11 x i8*] %619, i8* %60, 7, !dbg !12300
  %621 = insertvalue [11 x i8*] %620, i8* %60, 8, !dbg !12300
  %622 = insertvalue [11 x i8*] %621, i8* %60, 9, !dbg !12300
  %623 = insertvalue [11 x i8*] %622, i8* %60, 10, !dbg !12300
  call void %524(i8* %11, [11 x i8*] %535, i8* %12, [11 x i8*] %546, i8* %89, [11 x i8*] %557, i8* %88, [11 x i8*] %568, i8* %87, [11 x i8*] %579, i8* %86, [11 x i8*] %85, i64 %343, [11 x i64] %342, i8* %74, [11 x i8*] %590, i64 %316, [11 x i64] %601, i8* %73, [11 x i8*] %612, i8* %72, [11 x i8*] %71, i64 %315, [11 x i64] %314, i8* %60, [11 x i8*] %623, i64 1, [11 x i64] [i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1], i64 1, [11 x i64] [i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1]) [ "jl_roots"({} addrspace(10)* null, { i8*, {} addrspace(10)* } %367, [11 x { i8*, {} addrspace(10)* }] %366, {} addrspace(10)* null, {} addrspace(10)* null, { i8*, {} addrspace(10)* } %369, {} addrspace(10)* null, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } %507, [11 x { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }] %506, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !12300
  ret void

L289:                                             ; preds = %L77, %L71, %L66.L289_crit_edge
  %.sroa.079.0.copyload = phi i64 [ %.sroa.079.0.copyload.pre, %L66.L289_crit_edge ], [ %46, %L77 ], [ %.sroa.076.0.copyload, %L71 ], !dbg !12276, !enzyme_inactive !0
  %624 = bitcast {} addrspace(10)* %2 to i8 addrspace(10)*
  %.pre-phi1.pre-phi.pre-phi.pre-phi = addrspacecast i8 addrspace(10)* %624 to i8 addrspace(11)*
  %current_task196 = getelementptr inbounds {}**, {}*** %10, i64 -14
  %625 = bitcast {}*** %current_task196 to {}*
  %.sroa.280.0..sroa_idx81 = getelementptr i8, i8 addrspace(11)* %.pre-phi1.pre-phi.pre-phi.pre-phi, i64 24, !dbg !12276
  %626 = bitcast i8 addrspace(11)* %.sroa.280.0..sroa_idx81 to i64 addrspace(11)*, !dbg !12276
  %.sroa.280.0.copyload = load i64, i64 addrspace(11)* %626, align 8, !dbg !12276, !tbaa !284, !alias.scope !406, !noalias !12278, !enzyme_inactive !0, !enzyme_type !263, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
  %627 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %625, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345797746976 to {}*) to {} addrspace(10)*)) #75, !dbg !12519
  %628 = bitcast {} addrspace(10)* %627 to {} addrspace(10)* addrspace(10)*, !dbg !12519, !enzyme_inactive !0
  %629 = addrspacecast {} addrspace(10)* addrspace(10)* %628 to {} addrspace(10)* addrspace(11)*, !dbg !12519, !enzyme_inactive !0
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %629, align 8, !dbg !12519, !tbaa !424, !alias.scope !315, !noalias !12301
  %630 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %629, i64 1, !dbg !12519
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %630, align 8, !dbg !12519, !tbaa !424, !alias.scope !315, !noalias !12301
  %631 = call noalias nonnull align 8 dereferenceable(88) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Pointer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer, [-1,48]:Pointer, [-1,56]:Integer, [-1,57]:Integer, [-1,58]:Integer, [-1,59]:Integer, [-1,60]:Integer, [-1,61]:Integer, [-1,62]:Integer, [-1,63]:Integer, [-1,64]:Pointer, [-1,72]:Integer, [-1,73]:Integer, [-1,74]:Integer, [-1,75]:Integer, [-1,76]:Integer, [-1,77]:Integer, [-1,78]:Integer, [-1,79]:Integer, [-1,80]:Integer, [-1,81]:Integer, [-1,82]:Integer, [-1,83]:Integer, [-1,84]:Integer, [-1,85]:Integer, [-1,86]:Integer, [-1,87]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %625, i64 noundef 88, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138344087618192 to {}*) to {} addrspace(10)*)) #75, !dbg !12519
  %632 = bitcast {} addrspace(10)* %631 to { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)*, !dbg !12519, !enzyme_inactive !0
  %.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 0, !dbg !12519
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065856 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack103 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 1, !dbg !12519
  store i64 %46, i64 addrspace(10)* %.repack103, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack105 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 2, !dbg !12519
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack105, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack107 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 3, !dbg !12519
  store i64 %48, i64 addrspace(10)* %.repack107, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack109 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 4, !dbg !12519
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065824 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack109, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack111 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 5, !dbg !12519
  store i64 %.sroa.03.0.copyload, i64 addrspace(10)* %.repack111, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack113 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 6, !dbg !12519
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345860629008 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack113, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack115 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 7, !dbg !12519
  store i64 %.sroa.1.0.copyload2, i64 addrspace(10)* %.repack115, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack117 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 8, !dbg !12519
  store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 138345900065792 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %.repack117, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack119.repack = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 9, i64 0, !dbg !12519
  store i64 %.sroa.079.0.copyload, i64 addrspace(10)* %.repack119.repack, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  %.repack119.repack121 = getelementptr inbounds { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] }, { {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, i64, {} addrspace(10)*, [2 x i64] } addrspace(10)* %632, i64 0, i32 9, i64 1, !dbg !12519
  store i64 %.sroa.280.0.copyload, i64 addrspace(10)* %.repack119.repack121, align 8, !dbg !12519, !tbaa !311, !alias.scope !315, !noalias !12301
  store atomic {} addrspace(10)* %631, {} addrspace(10)* addrspace(11)* %629 release, align 8, !dbg !12519, !tbaa !424, !alias.scope !315, !noalias !12301
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* noundef nonnull %627, {} addrspace(10)* nonnull %631) #76, !dbg !12519
  %633 = bitcast {} addrspace(10)* %627 to i8 addrspace(10)*, !dbg !12519, !enzyme_inactive !0
  %634 = addrspacecast i8 addrspace(10)* %633 to i8 addrspace(11)*, !dbg !12519, !enzyme_inactive !0
  %635 = getelementptr inbounds i8, i8 addrspace(11)* %634, i64 8, !dbg !12519
  %636 = load {}*, {}** @jl_nothing, align 8, !dbg !12519, !tbaa !196, !alias.scope !369, !noalias !483, !nonnull !0, !enzyme_inactive !0, !enzyme_type !427, !enzymejl_byref_BITS_REF !0, !enzymejl_source_type_Nothing !0
  %637 = addrspacecast {}* %636 to {} addrspace(10)*, !dbg !12519, !enzyme_inactive !0
  %638 = bitcast i8 addrspace(11)* %635 to {} addrspace(10)* addrspace(11)*, !dbg !12519
  store atomic {} addrspace(10)* %637, {} addrspace(10)* addrspace(11)* %638 release, align 8, !dbg !12519, !tbaa !424, !alias.scope !315, !noalias !12301
  %639 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %625, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 138345802252128 to {}*) to {} addrspace(10)*)) #75, !dbg !12277
  %640 = bitcast {} addrspace(10)* %639 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !12277, !enzyme_inactive !0
  %641 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %640, i64 0, i64 0, !dbg !12277
  store {} addrspace(10)* %627, {} addrspace(10)* addrspace(10)* %641, align 8, !dbg !12277, !tbaa !311, !alias.scope !315, !noalias !12301
  %642 = addrspacecast {} addrspace(10)* %639 to {} addrspace(12)*, !dbg !12277, !enzyme_inactive !0
  call void @ijl_throw({} addrspace(12)* %642) #77, !dbg !12277
  unreachable, !dbg !12277
}

ERROR: LLVM error: function failed verification (4)
Stacktrace:
  [1] handle_error(reason::Cstring)
    @ LLVM ~/.julia/packages/LLVM/b3kFs/src/core/context.jl:194
  [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, runtimeActivity::Bool, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…})
    @ Enzyme.API ~/.julia/packages/Enzyme/QsaeA/src/api.jl:334
  [3] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:1745
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:4550
  [5] codegen
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:3353 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410
  [7] _thunk
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5410 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5462 [inlined]
  [9] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, edges::Vector{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5573
 [10] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/QsaeA/src/compiler.jl:5758
 [11] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:640 [inlined]
 [12] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:544 [inlined]
 [13] autodiff
    @ ~/.julia/packages/Enzyme/QsaeA/src/Enzyme.jl:516 [inlined]
 [14] pushforward(::typeof(DifferentiationInterface.shuffled_gradient), ::DifferentiationInterface.NoPushforwardPrep, ::AutoEnzyme{…}, ::Vector{…}, ::NTuple{…}, ::DifferentiationInterface.FunctionContext{…}, ::DifferentiationInterface.BackendContext{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…})
    @ DifferentiationInterfaceEnzymeExt ~/.julia/packages/DifferentiationInterface/F5K7v/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl:75
 [15] hvp
    @ ~/.julia/packages/DifferentiationInterface/F5K7v/src/second_order/hvp.jl:228 [inlined]
 [16] (::DifferentiationInterface.var"#56#57"{…})(a::Int64)
    @ DifferentiationInterface ~/.julia/packages/DifferentiationInterface/F5K7v/src/second_order/hessian.jl:136
 [17] _mapreduce(f::DifferentiationInterface.var"#56#57"{…}, op::typeof(hcat), ::IndexLinear, A::Base.OneTo{…})
    @ Base ./reduce.jl:437
 [18] _mapreduce_dim
    @ ./reducedim.jl:337 [inlined]
 [19] mapreduce
    @ ./reducedim.jl:329 [inlined]
 [20] hessian(::typeof(di_loss), ::DifferentiationInterface.HVPGradientHessianPrep{…}, ::AutoEnzyme{…}, ::Vector{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…})
    @ DifferentiationInterface ~/.julia/packages/DifferentiationInterface/F5K7v/src/second_order/hessian.jl:135
 [21] hessian(::typeof(di_loss), ::AutoEnzyme{…}, ::Vector{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…}, ::Constant{…})
    @ DifferentiationInterface ~/.julia/packages/DifferentiationInterface/F5K7v/src/fallbacks/no_prep.jl:102
 [22] top-level scope
    @ REPL[23]:1
Some type information was truncated. Use `show(err)` to see complete types.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant