EnzymeAD / Enzyme.jl

Julia bindings for the Enzyme automatic differentiator
https://enzyme.mit.edu
MIT License
428 stars 59 forks source link

ERROR: Enzyme compilation failed due to illegal type analysis. #1410

Open jbrea opened 2 months ago

jbrea commented 2 months ago

The following code worked with Enzyme 0.11.20 (julia 1.10.2) but fails on Enzyme 0.12.9. Apologies for the not so minimal MWE.

Setup ```julia using Pkg Pkg.activate(temp = true) Pkg.add(["Distributions", "ComponentArrays", "ConcreteStructs"]) # Pkg.add(name = "Enzyme", version = "0.11.20") Pkg.add(name = "Enzyme", version = "0.12.9") using Distributions, Enzyme, ComponentArrays, ConcreteStructs struct BiasedCoin end parameters(::BiasedCoin) = ComponentArray(ρ = .5) function logp(data, ::BiasedCoin, parameters) logp = 0. ρ = parameters.ρ for d in data logp += logpdf(Bernoulli(ρ), d) end logp end sigmoid(w) = 1/(1 + exp(-w)) @concrete struct HabituatingBiasedCoin w end HabituatingBiasedCoin() = HabituatingBiasedCoin(Base.RefValue(0.)) function initialize!(m::HabituatingBiasedCoin, parameters) m.w[] = parameters.w₀ end parameters(::HabituatingBiasedCoin) = ComponentArray(w₀ = 0., η = 0.) function logp(data, m::HabituatingBiasedCoin, parameters) initialize!(m, parameters) η = parameters.η logp = 0. for d in data ρ = sigmoid(m.w[]) logp += logpdf(Bernoulli(ρ), d) m.w[] += η * (d - ρ) end logp end @concrete terse struct HessLogP{T} logp dlogp data ddata model::T dmodel parameters dparameters end function HessLogP(data, model, parameters = ComponentArray(parameters(model))) dd = _zero(data) _data = convert(typeof(dd), data) n = length(parameters) vx = ntuple(i -> begin t = _zero(parameters); t[i] = 1; t end, n) ddx = ntuple(_ -> _zero(parameters), n) HessLogP(Const([0.]), Const([1.]), BatchDuplicated(_data, ntuple(_ -> _zero(dd), n)), BatchDuplicated(_zero(dd), ntuple(_ -> _zero(dd), n)), _deep_ismutable(model) ? BatchDuplicated(model, ntuple(_ -> _zero(model), n)) : Const(model), _deep_ismutable(model) ? BatchDuplicated(_zero(model), ntuple(_ -> _zero(model), n)) : Const(model), BatchDuplicated(parameters, vx), BatchDuplicated(_zero(parameters), ddx)) end function logp!(_logp, data, model, parameters) _logp[] = logp(data, model, parameters) nothing end function _grad1(logp, dlogp, data, ddata, model, params, dparams) autodiff_deferred(Reverse, logp!, DuplicatedNoNeed(logp, dlogp), DuplicatedNoNeed(data, ddata), Const(model), Duplicated(params, dparams)) nothing end function _grad2(logp, dlogp, data, ddata, model, dmodel, params, dparams) autodiff_deferred(Reverse, logp!, DuplicatedNoNeed(logp, dlogp), DuplicatedNoNeed(data, ddata), DuplicatedNoNeed(model, dmodel), Duplicated(params, dparams)) nothing end function _hess(h::HessLogP{<:Const}) autodiff(Forward, _grad1, h.logp, h.dlogp, h.data, h.ddata, h.model, h.parameters, h.dparameters) end function _hess(h::HessLogP) autodiff(Forward, _grad2, h.logp, h.dlogp, h.data, h.ddata, h.model, h.dmodel, h.parameters, h.dparameters) end _deep_ismutable(x::T) where T = _deep_ismutable(T) function _deep_ismutable(x::Type) ismutabletype(x) && return true any(_deep_ismutable, fieldtypes(x)) end _zero(x::AbstractArray) = _zero.(x) _zero(x::Number) = zero(x) _zero(x::Base.RefValue) = Ref(_zero(x[])) _zero(x::Tuple) = _zero.(x) _zero(x::NamedTuple{K}) where K = NamedTuple{K}(_zero.(values(x))) function _zero(x::D) where D D.name.wrapper((_zero(getfield(x, f)) for f in fieldnames(D))...) end function (h::HessLogP)(ddx, x) h.parameters.val .= x h.dlogp.val .= 1 _hess(h) for (i, v) in pairs(h.dparameters.dval) ddx[:, i] .= v v .= 0 end end ```

First Error

julia> m = BiasedCoin();

julia> p = parameters(m);

julia> h! = HessLogP(rand(0:1, 10), m);

julia> H = zeros(length(p), length(p));

julia> h!(H, p)

ERROR: Enzyme compilation failed due to illegal type analysis.
Current scope: 
; Function Attrs: mustprogress willreturn
define private fastcc "enzyme_type"="{[-1]:Float@double}" { i64, i64*, double, i64 } @preprocess_augmented_julia_logp_4940({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}" "enzymejl_parmtype"="132511560660096" "enzymejl_parmtype_ref"="2" %0, { {} addrspace(10)* } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-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,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}" "enzymejl_parmtype"="132509096788432" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #4 !dbg !501 {
top:
  %2 = call {}*** @julia.get_pgcstack() #15
  %ptls_field28 = getelementptr inbounds {}**, {}*** %2, i64 2
  %3 = bitcast {}*** %ptls_field28 to i64***
  %ptls_load2930 = load i64**, i64*** %3, align 8, !tbaa !39, !alias.scope !502, !noalias !505
  %4 = getelementptr inbounds i64*, i64** %ptls_load2930, i64 2
  %safepoint = load i64*, i64** %4, align 8, !tbaa !48, !alias.scope !507, !noalias !510
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #15, !dbg !512
  fence syncscope("singlethread") seq_cst
  %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 0, !dbg !513
  %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !513, !tbaa !48, !alias.scope !518, !noalias !521, !nonnull !16, !dereferenceable !146, !align !147
  %5 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !523
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !523
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !523, !tbaa !72, !range !75, !alias.scope !525, !noalias !528
  %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !523
  br i1 %inbounds.not, label %oob, label %idxend, !dbg !523

L19:                                              ; preds = %idxend
  %6 = fcmp ult double %arrayref, 0.000000e+00, !dbg !530
  %7 = fcmp ugt double %arrayref, 1.000000e+00, !dbg !531
  %8 = or i1 %6, %7, !dbg !531
  br i1 %8, label %L32, label %L38.lr.ph, !dbg !531

L38.lr.ph:                                        ; preds = %L19
  %9 = addrspacecast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(11)*, !dbg !536
  %arrayptr532 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %9, align 16, !dbg !536, !alias.scope !540, !noalias !547, !nonnull !16
  %value_phi944 = load i64, i64 addrspace(13)* %arrayptr532, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %exitcond.not49 = icmp eq i64 %arraylen3, 1, !dbg !555
  br i1 %exitcond.not49, label %L68, label %L62.preheader, !dbg !557

L62.preheader:                                    ; preds = %L38.lr.ph
  %10 = shl i64 %arraylen3, 3, !dbg !557
  %11 = add i64 %10, -8, !dbg !557
  %12 = call noalias nonnull i8* @malloc(i64 %11) #15, !dbg !557
  %13 = bitcast i8* %12 to i64*, !dbg !557
  %14 = add nuw i64 %arraylen3, 7, !dbg !557
  %15 = add nsw i64 %arraylen3, -2, !dbg !557
  %xtraiter = and i64 %14, 7, !dbg !557
  %16 = icmp ult i64 %15, 7, !dbg !557
  br i1 %16, label %L68.loopexit.unr-lcssa, label %L62.preheader.new, !dbg !557

L62.preheader.new:                                ; preds = %L62.preheader
  %17 = add nsw i64 %arraylen3, -9, !dbg !557
  %18 = lshr i64 %17, 3, !dbg !557
  %19 = add nuw nsw i64 %18, 1, !dbg !557
  %xtraiter4 = and i64 %19, 7, !dbg !557
  %20 = icmp ult i64 %17, 56, !dbg !557
  br i1 %20, label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, label %L62.preheader.new.new, !dbg !557

L62.preheader.new.new:                            ; preds = %L62.preheader.new
  %unroll_iter12 = and i64 %19, 4611686018427387896, !dbg !557
  br label %L62, !dbg !557

L32:                                              ; preds = %L19
  %current_task127 = getelementptr inbounds {}**, {}*** %2, i64 -14
  %current_task1 = bitcast {}*** %current_task127 to {}**
  %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #16, !dbg !531
  %21 = bitcast {} addrspace(10)* %box to double addrspace(10)*, !dbg !531
  store double %arrayref, double addrspace(10)* %21, align 8, !dbg !531, !tbaa !197, !alias.scope !200, !noalias !559
  %22 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #17, !dbg !531
  %23 = addrspacecast {} addrspace(10)* %22 to {} addrspace(12)*, !dbg !531
  call void @ijl_throw({} addrspace(12)* %23) #18, !dbg !531
  unreachable, !dbg !531

L62:                                              ; preds = %L62, %L62.preheader.new.new
  %iv1 = phi i64 [ %iv.next2, %L62 ], [ 0, %L62.preheader.new.new ]
  %24 = shl i64 %iv1, 3, !dbg !562
  %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !562
  %25 = shl nuw i64 %iv1, 6, !dbg !562
  %iv.next = or i64 %25, 1, !dbg !562
  %26 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next, !dbg !564
  %value_phi9 = load i64, i64 addrspace(13)* %26, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %27 = getelementptr inbounds i64, i64* %13, i64 %25, !dbg !565
  store i64 %value_phi9, i64* %27, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1 = or i64 %25, 2, !dbg !562
  %28 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1, !dbg !564
  %value_phi9.1 = load i64, i64 addrspace(13)* %28, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %29 = getelementptr inbounds i64, i64* %13, i64 %iv.next, !dbg !565
  store i64 %value_phi9.1, i64* %29, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2 = or i64 %25, 3, !dbg !562
  %30 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2, !dbg !564
  %value_phi9.2 = load i64, i64 addrspace(13)* %30, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %31 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1, !dbg !565
  store i64 %value_phi9.2, i64* %31, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3 = or i64 %25, 4, !dbg !562
  %32 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3, !dbg !564
  %value_phi9.3 = load i64, i64 addrspace(13)* %32, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %33 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2, !dbg !565
  store i64 %value_phi9.3, i64* %33, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4 = or i64 %25, 5, !dbg !562
  %34 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4, !dbg !564
  %value_phi9.4 = load i64, i64 addrspace(13)* %34, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %35 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3, !dbg !565
  store i64 %value_phi9.4, i64* %35, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5 = or i64 %25, 6, !dbg !562
  %36 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5, !dbg !564
  %value_phi9.5 = load i64, i64 addrspace(13)* %36, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %37 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4, !dbg !565
  store i64 %value_phi9.5, i64* %37, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6 = or i64 %25, 7, !dbg !562
  %38 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6, !dbg !564
  %value_phi9.6 = load i64, i64 addrspace(13)* %38, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %39 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5, !dbg !565
  store i64 %value_phi9.6, i64* %39, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7 = or i64 %25, 8, !dbg !562
  %40 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7, !dbg !564
  %value_phi9.7 = load i64, i64 addrspace(13)* %40, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %41 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6, !dbg !565
  store i64 %value_phi9.7, i64* %41, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.113 = or i64 %25, 9, !dbg !562
  %42 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.113, !dbg !564
  %value_phi9.114 = load i64, i64 addrspace(13)* %42, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %43 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7, !dbg !565
  store i64 %value_phi9.114, i64* %43, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.1 = or i64 %25, 10, !dbg !562
  %44 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.1, !dbg !564
  %value_phi9.1.1 = load i64, i64 addrspace(13)* %44, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %45 = getelementptr inbounds i64, i64* %13, i64 %iv.next.113, !dbg !565
  store i64 %value_phi9.1.1, i64* %45, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.1 = or i64 %25, 11, !dbg !562
  %46 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.1, !dbg !564
  %value_phi9.2.1 = load i64, i64 addrspace(13)* %46, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %47 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.1, !dbg !565
  store i64 %value_phi9.2.1, i64* %47, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.1 = or i64 %25, 12, !dbg !562
  %48 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.1, !dbg !564
  %value_phi9.3.1 = load i64, i64 addrspace(13)* %48, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %49 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.1, !dbg !565
  store i64 %value_phi9.3.1, i64* %49, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.1 = or i64 %25, 13, !dbg !562
  %50 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.1, !dbg !564
  %value_phi9.4.1 = load i64, i64 addrspace(13)* %50, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %51 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.1, !dbg !565
  store i64 %value_phi9.4.1, i64* %51, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.1 = or i64 %25, 14, !dbg !562
  %52 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.1, !dbg !564
  %value_phi9.5.1 = load i64, i64 addrspace(13)* %52, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %53 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.1, !dbg !565
  store i64 %value_phi9.5.1, i64* %53, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.1 = or i64 %25, 15, !dbg !562
  %54 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.1, !dbg !564
  %value_phi9.6.1 = load i64, i64 addrspace(13)* %54, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %55 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.1, !dbg !565
  store i64 %value_phi9.6.1, i64* %55, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.1 = or i64 %25, 16, !dbg !562
  %56 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.1, !dbg !564
  %value_phi9.7.1 = load i64, i64 addrspace(13)* %56, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %57 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.1, !dbg !565
  store i64 %value_phi9.7.1, i64* %57, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.215 = or i64 %25, 17, !dbg !562
  %58 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.215, !dbg !564
  %value_phi9.216 = load i64, i64 addrspace(13)* %58, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %59 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.1, !dbg !565
  store i64 %value_phi9.216, i64* %59, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.2 = or i64 %25, 18, !dbg !562
  %60 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.2, !dbg !564
  %value_phi9.1.2 = load i64, i64 addrspace(13)* %60, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %61 = getelementptr inbounds i64, i64* %13, i64 %iv.next.215, !dbg !565
  store i64 %value_phi9.1.2, i64* %61, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.2 = or i64 %25, 19, !dbg !562
  %62 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.2, !dbg !564
  %value_phi9.2.2 = load i64, i64 addrspace(13)* %62, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %63 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.2, !dbg !565
  store i64 %value_phi9.2.2, i64* %63, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.2 = or i64 %25, 20, !dbg !562
  %64 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.2, !dbg !564
  %value_phi9.3.2 = load i64, i64 addrspace(13)* %64, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %65 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.2, !dbg !565
  store i64 %value_phi9.3.2, i64* %65, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.2 = or i64 %25, 21, !dbg !562
  %66 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.2, !dbg !564
  %value_phi9.4.2 = load i64, i64 addrspace(13)* %66, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %67 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.2, !dbg !565
  store i64 %value_phi9.4.2, i64* %67, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.2 = or i64 %25, 22, !dbg !562
  %68 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.2, !dbg !564
  %value_phi9.5.2 = load i64, i64 addrspace(13)* %68, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %69 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.2, !dbg !565
  store i64 %value_phi9.5.2, i64* %69, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.2 = or i64 %25, 23, !dbg !562
  %70 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.2, !dbg !564
  %value_phi9.6.2 = load i64, i64 addrspace(13)* %70, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %71 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.2, !dbg !565
  store i64 %value_phi9.6.2, i64* %71, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.2 = or i64 %25, 24, !dbg !562
  %72 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.2, !dbg !564
  %value_phi9.7.2 = load i64, i64 addrspace(13)* %72, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %73 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.2, !dbg !565
  store i64 %value_phi9.7.2, i64* %73, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.317 = or i64 %25, 25, !dbg !562
  %74 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.317, !dbg !564
  %value_phi9.318 = load i64, i64 addrspace(13)* %74, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %75 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.2, !dbg !565
  store i64 %value_phi9.318, i64* %75, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.3 = or i64 %25, 26, !dbg !562
  %76 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.3, !dbg !564
  %value_phi9.1.3 = load i64, i64 addrspace(13)* %76, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %77 = getelementptr inbounds i64, i64* %13, i64 %iv.next.317, !dbg !565
  store i64 %value_phi9.1.3, i64* %77, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.3 = or i64 %25, 27, !dbg !562
  %78 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.3, !dbg !564
  %value_phi9.2.3 = load i64, i64 addrspace(13)* %78, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %79 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.3, !dbg !565
  store i64 %value_phi9.2.3, i64* %79, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.3 = or i64 %25, 28, !dbg !562
  %80 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.3, !dbg !564
  %value_phi9.3.3 = load i64, i64 addrspace(13)* %80, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %81 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.3, !dbg !565
  store i64 %value_phi9.3.3, i64* %81, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.3 = or i64 %25, 29, !dbg !562
  %82 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.3, !dbg !564
  %value_phi9.4.3 = load i64, i64 addrspace(13)* %82, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %83 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.3, !dbg !565
  store i64 %value_phi9.4.3, i64* %83, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.3 = or i64 %25, 30, !dbg !562
  %84 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.3, !dbg !564
  %value_phi9.5.3 = load i64, i64 addrspace(13)* %84, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %85 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.3, !dbg !565
  store i64 %value_phi9.5.3, i64* %85, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.3 = or i64 %25, 31, !dbg !562
  %86 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.3, !dbg !564
  %value_phi9.6.3 = load i64, i64 addrspace(13)* %86, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %87 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.3, !dbg !565
  store i64 %value_phi9.6.3, i64* %87, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.3 = or i64 %25, 32, !dbg !562
  %88 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.3, !dbg !564
  %value_phi9.7.3 = load i64, i64 addrspace(13)* %88, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %89 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.3, !dbg !565
  store i64 %value_phi9.7.3, i64* %89, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.419 = or i64 %25, 33, !dbg !562
  %90 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.419, !dbg !564
  %value_phi9.420 = load i64, i64 addrspace(13)* %90, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %91 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.3, !dbg !565
  store i64 %value_phi9.420, i64* %91, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.4 = or i64 %25, 34, !dbg !562
  %92 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.4, !dbg !564
  %value_phi9.1.4 = load i64, i64 addrspace(13)* %92, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %93 = getelementptr inbounds i64, i64* %13, i64 %iv.next.419, !dbg !565
  store i64 %value_phi9.1.4, i64* %93, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.4 = or i64 %25, 35, !dbg !562
  %94 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.4, !dbg !564
  %value_phi9.2.4 = load i64, i64 addrspace(13)* %94, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %95 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.4, !dbg !565
  store i64 %value_phi9.2.4, i64* %95, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.4 = or i64 %25, 36, !dbg !562
  %96 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.4, !dbg !564
  %value_phi9.3.4 = load i64, i64 addrspace(13)* %96, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %97 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.4, !dbg !565
  store i64 %value_phi9.3.4, i64* %97, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.4 = or i64 %25, 37, !dbg !562
  %98 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.4, !dbg !564
  %value_phi9.4.4 = load i64, i64 addrspace(13)* %98, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %99 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.4, !dbg !565
  store i64 %value_phi9.4.4, i64* %99, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.4 = or i64 %25, 38, !dbg !562
  %100 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.4, !dbg !564
  %value_phi9.5.4 = load i64, i64 addrspace(13)* %100, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %101 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.4, !dbg !565
  store i64 %value_phi9.5.4, i64* %101, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.4 = or i64 %25, 39, !dbg !562
  %102 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.4, !dbg !564
  %value_phi9.6.4 = load i64, i64 addrspace(13)* %102, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %103 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.4, !dbg !565
  store i64 %value_phi9.6.4, i64* %103, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.4 = or i64 %25, 40, !dbg !562
  %104 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.4, !dbg !564
  %value_phi9.7.4 = load i64, i64 addrspace(13)* %104, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %105 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.4, !dbg !565
  store i64 %value_phi9.7.4, i64* %105, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.521 = or i64 %25, 41, !dbg !562
  %106 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.521, !dbg !564
  %value_phi9.522 = load i64, i64 addrspace(13)* %106, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %107 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.4, !dbg !565
  store i64 %value_phi9.522, i64* %107, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.5 = or i64 %25, 42, !dbg !562
  %108 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.5, !dbg !564
  %value_phi9.1.5 = load i64, i64 addrspace(13)* %108, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %109 = getelementptr inbounds i64, i64* %13, i64 %iv.next.521, !dbg !565
  store i64 %value_phi9.1.5, i64* %109, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.5 = or i64 %25, 43, !dbg !562
  %110 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.5, !dbg !564
  %value_phi9.2.5 = load i64, i64 addrspace(13)* %110, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %111 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.5, !dbg !565
  store i64 %value_phi9.2.5, i64* %111, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.5 = or i64 %25, 44, !dbg !562
  %112 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.5, !dbg !564
  %value_phi9.3.5 = load i64, i64 addrspace(13)* %112, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %113 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.5, !dbg !565
  store i64 %value_phi9.3.5, i64* %113, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.5 = or i64 %25, 45, !dbg !562
  %114 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.5, !dbg !564
  %value_phi9.4.5 = load i64, i64 addrspace(13)* %114, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %115 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.5, !dbg !565
  store i64 %value_phi9.4.5, i64* %115, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.5 = or i64 %25, 46, !dbg !562
  %116 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.5, !dbg !564
  %value_phi9.5.5 = load i64, i64 addrspace(13)* %116, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %117 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.5, !dbg !565
  store i64 %value_phi9.5.5, i64* %117, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.5 = or i64 %25, 47, !dbg !562
  %118 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.5, !dbg !564
  %value_phi9.6.5 = load i64, i64 addrspace(13)* %118, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %119 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.5, !dbg !565
  store i64 %value_phi9.6.5, i64* %119, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.5 = or i64 %25, 48, !dbg !562
  %120 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.5, !dbg !564
  %value_phi9.7.5 = load i64, i64 addrspace(13)* %120, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %121 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.5, !dbg !565
  store i64 %value_phi9.7.5, i64* %121, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.623 = or i64 %25, 49, !dbg !562
  %122 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.623, !dbg !564
  %value_phi9.624 = load i64, i64 addrspace(13)* %122, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %123 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.5, !dbg !565
  store i64 %value_phi9.624, i64* %123, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.6 = or i64 %25, 50, !dbg !562
  %124 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.6, !dbg !564
  %value_phi9.1.6 = load i64, i64 addrspace(13)* %124, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %125 = getelementptr inbounds i64, i64* %13, i64 %iv.next.623, !dbg !565
  store i64 %value_phi9.1.6, i64* %125, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.6 = or i64 %25, 51, !dbg !562
  %126 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.6, !dbg !564
  %value_phi9.2.6 = load i64, i64 addrspace(13)* %126, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %127 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.6, !dbg !565
  store i64 %value_phi9.2.6, i64* %127, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.6 = or i64 %25, 52, !dbg !562
  %128 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.6, !dbg !564
  %value_phi9.3.6 = load i64, i64 addrspace(13)* %128, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %129 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.6, !dbg !565
  store i64 %value_phi9.3.6, i64* %129, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.6 = or i64 %25, 53, !dbg !562
  %130 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.6, !dbg !564
  %value_phi9.4.6 = load i64, i64 addrspace(13)* %130, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %131 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.6, !dbg !565
  store i64 %value_phi9.4.6, i64* %131, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.6 = or i64 %25, 54, !dbg !562
  %132 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.6, !dbg !564
  %value_phi9.5.6 = load i64, i64 addrspace(13)* %132, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %133 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.6, !dbg !565
  store i64 %value_phi9.5.6, i64* %133, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.6 = or i64 %25, 55, !dbg !562
  %134 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.6, !dbg !564
  %value_phi9.6.6 = load i64, i64 addrspace(13)* %134, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %135 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.6, !dbg !565
  store i64 %value_phi9.6.6, i64* %135, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.6 = or i64 %25, 56, !dbg !562
  %136 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.6, !dbg !564
  %value_phi9.7.6 = load i64, i64 addrspace(13)* %136, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %137 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.6, !dbg !565
  store i64 %value_phi9.7.6, i64* %137, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.725 = or i64 %25, 57, !dbg !562
  %138 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.725, !dbg !564
  %value_phi9.726 = load i64, i64 addrspace(13)* %138, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %139 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.6, !dbg !565
  store i64 %value_phi9.726, i64* %139, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.7 = or i64 %25, 58, !dbg !562
  %140 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.7, !dbg !564
  %value_phi9.1.7 = load i64, i64 addrspace(13)* %140, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %141 = getelementptr inbounds i64, i64* %13, i64 %iv.next.725, !dbg !565
  store i64 %value_phi9.1.7, i64* %141, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.7 = or i64 %25, 59, !dbg !562
  %142 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.7, !dbg !564
  %value_phi9.2.7 = load i64, i64 addrspace(13)* %142, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %143 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.7, !dbg !565
  store i64 %value_phi9.2.7, i64* %143, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.7 = or i64 %25, 60, !dbg !562
  %144 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.7, !dbg !564
  %value_phi9.3.7 = load i64, i64 addrspace(13)* %144, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %145 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.7, !dbg !565
  store i64 %value_phi9.3.7, i64* %145, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.7 = or i64 %25, 61, !dbg !562
  %146 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.7, !dbg !564
  %value_phi9.4.7 = load i64, i64 addrspace(13)* %146, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %147 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.7, !dbg !565
  store i64 %value_phi9.4.7, i64* %147, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.7 = or i64 %25, 62, !dbg !562
  %148 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.7, !dbg !564
  %value_phi9.5.7 = load i64, i64 addrspace(13)* %148, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %149 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.7, !dbg !565
  store i64 %value_phi9.5.7, i64* %149, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.7 = or i64 %25, 63, !dbg !562
  %150 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.7, !dbg !564
  %value_phi9.6.7 = load i64, i64 addrspace(13)* %150, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %151 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.7, !dbg !565
  store i64 %value_phi9.6.7, i64* %151, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.7 = add nuw i64 %25, 64, !dbg !562
  %152 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.7, !dbg !564
  %value_phi9.7.7 = load i64, i64 addrspace(13)* %152, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %153 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.7, !dbg !565
  store i64 %value_phi9.7.7, i64* %153, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %niter.next.7 = add i64 %24, 8, !dbg !557
  %niter.ncmp.727 = icmp eq i64 %niter.next.7, %unroll_iter12, !dbg !557
  br i1 %niter.ncmp.727, label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit, label %L62, !dbg !557

L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit: ; preds = %L62
  br label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, !dbg !557

L68.loopexit.unr-lcssa.loopexit.unr-lcssa:        ; preds = %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit, %L62.preheader.new
  %iv.next.7.lcssa.ph = phi i64 [ undef, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]
  %iv.unr10 = phi i64 [ 0, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not28 = icmp eq i64 %xtraiter4, 0, !dbg !557
  br i1 %lcmp.mod.not28, label %L68.loopexit.unr-lcssa, label %L62.epil5.preheader, !dbg !557

L62.epil5.preheader:                              ; preds = %L68.loopexit.unr-lcssa.loopexit.unr-lcssa
  br label %L62.epil5, !dbg !557

L62.epil5:                                        ; preds = %L62.epil5.preheader, %L62.epil5
  %iv = phi i64 [ 0, %L62.epil5.preheader ], [ %iv.next3, %L62.epil5 ]
  %154 = shl nuw nsw i64 %iv, 3, !dbg !562
  %iv.next3 = add nuw nsw i64 %iv, 1, !dbg !562
  %155 = add nuw nsw i64 %iv.unr10, %154, !dbg !562
  %iv.next.epil7 = or i64 %155, 1, !dbg !562
  %156 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil7, !dbg !564
  %value_phi9.epil8 = load i64, i64 addrspace(13)* %156, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %157 = getelementptr inbounds i64, i64* %13, i64 %155, !dbg !565
  store i64 %value_phi9.epil8, i64* %157, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.1.epil = or i64 %155, 2, !dbg !562
  %158 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.epil, !dbg !564
  %value_phi9.1.epil = load i64, i64 addrspace(13)* %158, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %159 = getelementptr inbounds i64, i64* %13, i64 %iv.next.epil7, !dbg !565
  store i64 %value_phi9.1.epil, i64* %159, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.2.epil = or i64 %155, 3, !dbg !562
  %160 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.epil, !dbg !564
  %value_phi9.2.epil = load i64, i64 addrspace(13)* %160, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %161 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.epil, !dbg !565
  store i64 %value_phi9.2.epil, i64* %161, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.3.epil = or i64 %155, 4, !dbg !562
  %162 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.epil, !dbg !564
  %value_phi9.3.epil = load i64, i64 addrspace(13)* %162, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %163 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.epil, !dbg !565
  store i64 %value_phi9.3.epil, i64* %163, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.4.epil = or i64 %155, 5, !dbg !562
  %164 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.epil, !dbg !564
  %value_phi9.4.epil = load i64, i64 addrspace(13)* %164, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %165 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.epil, !dbg !565
  store i64 %value_phi9.4.epil, i64* %165, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.5.epil = or i64 %155, 6, !dbg !562
  %166 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.epil, !dbg !564
  %value_phi9.5.epil = load i64, i64 addrspace(13)* %166, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %167 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.epil, !dbg !565
  store i64 %value_phi9.5.epil, i64* %167, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.6.epil = or i64 %155, 7, !dbg !562
  %168 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.epil, !dbg !564
  %value_phi9.6.epil = load i64, i64 addrspace(13)* %168, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %169 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.epil, !dbg !565
  store i64 %value_phi9.6.epil, i64* %169, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %iv.next.7.epil = add nuw nsw i64 %155, 8, !dbg !562
  %170 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.epil, !dbg !564
  %value_phi9.7.epil = load i64, i64 addrspace(13)* %170, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %171 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.epil, !dbg !565
  store i64 %value_phi9.7.epil, i64* %171, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %epil.iter9.cmp.not = icmp eq i64 %iv.next3, %xtraiter4, !dbg !557
  br i1 %epil.iter9.cmp.not, label %L68.loopexit.unr-lcssa.loopexit, label %L62.epil5, !dbg !557, !llvm.loop !570

L68.loopexit.unr-lcssa.loopexit:                  ; preds = %L62.epil5
  br label %L68.loopexit.unr-lcssa, !dbg !557

L68.loopexit.unr-lcssa:                           ; preds = %L68.loopexit.unr-lcssa.loopexit, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, %L62.preheader
  %iv.unr = phi i64 [ 0, %L62.preheader ], [ %iv.next.7.lcssa.ph, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa ], [ %iv.next.7.epil, %L68.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0, !dbg !557
  br i1 %lcmp.mod.not, label %L68, label %L62.epil.preheader, !dbg !557

L62.epil.preheader:                               ; preds = %L68.loopexit.unr-lcssa
  br label %L62.epil, !dbg !557

L62.epil:                                         ; preds = %L62.epil.preheader, %L62.epil
  %iv4 = phi i64 [ 0, %L62.epil.preheader ], [ %iv.next5, %L62.epil ]
  %172 = add nuw nsw i64 %iv.unr, %iv4, !dbg !562
  %iv.next5 = add nuw nsw i64 %iv4, 1, !dbg !562
  %iv.next.epil = add nuw nsw i64 %172, 1, !dbg !562
  %173 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil, !dbg !564
  %value_phi9.epil = load i64, i64 addrspace(13)* %173, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553
  %174 = getelementptr inbounds i64, i64* %13, i64 %172, !dbg !565
  store i64 %value_phi9.epil, i64* %174, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569
  %epil.iter.cmp.not = icmp eq i64 %iv.next5, %xtraiter, !dbg !557
  br i1 %epil.iter.cmp.not, label %L68.loopexit, label %L62.epil, !dbg !557, !llvm.loop !571

L68.loopexit:                                     ; preds = %L62.epil
  br label %L68, !dbg !558

L68:                                              ; preds = %L68.loopexit, %idxend, %L68.loopexit.unr-lcssa, %L38.lr.ph
  %.sroa.0.0 = phi i64 [ undef, %idxend ], [ %value_phi944, %L38.lr.ph ], [ %value_phi944, %L68.loopexit.unr-lcssa ], [ %value_phi944, %L68.loopexit ]
  %.sroa.2.0 = phi i64* [ undef, %idxend ], [ undef, %L38.lr.ph ], [ %13, %L68.loopexit.unr-lcssa ], [ %13, %L68.loopexit ]
  %175 = insertvalue { i64, i64*, double, i64 } undef, i64 %.sroa.0.0, 0, !dbg !558
  %176 = insertvalue { i64, i64*, double, i64 } %175, i64* %.sroa.2.0, 1, !dbg !558
  %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !558
  %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !558
  ret { i64, i64*, double, i64 } %178, !dbg !558

oob:                                              ; preds = %top
  %errorbox = alloca i64, align 8, !dbg !523
  store i64 1, i64* %errorbox, align 8, !dbg !523, !noalias !572
  %179 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !523
  call void @ijl_bounds_error_ints({} addrspace(12)* noundef %179, i64* noundef nonnull align 8 %errorbox, i64 noundef 1) #18, !dbg !523
  unreachable, !dbg !523

idxend:                                           ; preds = %top
  %180 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !523
  %arrayptr31 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %180, align 16, !dbg !523, !tbaa !103, !alias.scope !573, !noalias !528, !nonnull !16
  %arrayref = load double, double addrspace(13)* %arrayptr31, align 8, !dbg !523, !tbaa !107, !alias.scope !576, !noalias !579
  %181 = addrspacecast {} addrspace(10)* %0 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !581
  %arraylen_ptr2 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %181, i64 0, i32 1, !dbg !581
  %arraylen3 = load i64, i64 addrspace(11)* %arraylen_ptr2, align 8, !dbg !581, !tbaa !72, !range !75, !alias.scope !582, !noalias !583
  %.not = icmp eq i64 %arraylen3, 0, !dbg !584
  br i1 %.not, label %L68, label %L19, !dbg !537
}

 Type analysis state: 
<analysis>
  %47 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3.1 = or i64 %25, 12, !dbg !125: {[-1]:Integer}, intvals: {}
  %48 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.1 = load i64, i64 addrspace(13)* %48, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %iv.next.7.lcssa.ph = phi i64 [ undef, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {}
  %iv.next = or i64 %25, 1, !dbg !125: {[-1]:Integer}, intvals: {}
  %26 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9 = load i64, i64 addrspace(13)* %26, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %value_phi9.1 = load i64, i64 addrspace(13)* %28, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %value_phi9.2 = load i64, i64 addrspace(13)* %30, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %115 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.5 = or i64 %25, 46, !dbg !125: {[-1]:Integer}, intvals: {}
  %116 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.5 = load i64, i64 addrspace(13)* %116, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %117 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.5 = or i64 %25, 47, !dbg !125: {[-1]:Integer}, intvals: {}
  %value_phi9.6.5 = load i64, i64 addrspace(13)* %118, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %iv.next.1.1 = or i64 %25, 10, !dbg !125: {[-1]:Integer}, intvals: {}
  %44 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.1 = load i64, i64 addrspace(13)* %44, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %45 = getelementptr inbounds i64, i64* %13, i64 %iv.next.113, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.1 = or i64 %25, 11, !dbg !125: {[-1]:Integer}, intvals: {}
  %46 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.1 = load i64, i64 addrspace(13)* %46, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %33 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4 = or i64 %25, 5, !dbg !125: {[-1]:Integer}, intvals: {}
  %34 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4 = load i64, i64 addrspace(13)* %34, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %35 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5 = or i64 %25, 6, !dbg !125: {[-1]:Integer}, intvals: {}
  %36 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5 = load i64, i64 addrspace(13)* %36, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %37 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6 = or i64 %25, 7, !dbg !125: {[-1]:Integer}, intvals: {}
  %38 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6 = load i64, i64 addrspace(13)* %38, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %39 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7 = or i64 %25, 8, !dbg !125: {[-1]:Integer}, intvals: {}
i64 20: {[-1]:Integer}, intvals: {20,}
i64 21: {[-1]:Integer}, intvals: {21,}
  %iv.next.5.epil = or i64 %155, 6, !dbg !125: {[-1]:Integer}, intvals: {}
  %166 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.epil = load i64, i64 addrspace(13)* %166, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %167 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.epil = or i64 %155, 7, !dbg !125: {[-1]:Integer}, intvals: {}
  %168 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.epil = load i64, i64 addrspace(13)* %168, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64* undef: {[-1]:Anything}, intvals: {}
i64 -9: {[-1]:Integer}, intvals: {-9,}
  %79 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3.3 = or i64 %25, 28, !dbg !125: {[-1]:Integer}, intvals: {}
  %80 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.3 = load i64, i64 addrspace(13)* %80, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %81 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.3 = or i64 %25, 29, !dbg !125: {[-1]:Integer}, intvals: {}
  %82 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %iv.next.1.3 = or i64 %25, 26, !dbg !125: {[-1]:Integer}, intvals: {}
  %76 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.3 = load i64, i64 addrspace(13)* %76, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %77 = getelementptr inbounds i64, i64* %13, i64 %iv.next.317, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.3 = or i64 %25, 27, !dbg !125: {[-1]:Integer}, intvals: {}
  %78 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.3 = load i64, i64 addrspace(13)* %78, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 15: {[-1]:Integer}, intvals: {15,}
  %40 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7 = load i64, i64 addrspace(13)* %40, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %41 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.113 = or i64 %25, 9, !dbg !125: {[-1]:Integer}, intvals: {}
  %42 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.113, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.114 = load i64, i64 addrspace(13)* %42, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %43 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %150 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.7 = load i64, i64 addrspace(13)* %150, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %151 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.7 = add nuw i64 %25, 64, !dbg !125: {[-1]:Integer}, intvals: {64,}
  %152 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.7 = load i64, i64 addrspace(13)* %152, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %153 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
i64 32: {[-1]:Integer}, intvals: {32,}
i64 28: {[-1]:Integer}, intvals: {28,}
i64 29: {[-1]:Integer}, intvals: {29,}
  %3 = bitcast {}*** %ptls_field28 to i64***: {[-1]:Pointer}, intvals: {}
  %ptls_load2930 = load i64**, i64*** %3, align 8, !tbaa !17, !alias.scope !21, !noalias !24: {}, intvals: {}
  %iv.next.3.6 = or i64 %25, 52, !dbg !125: {[-1]:Integer}, intvals: {}
  %128 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.6 = load i64, i64 addrspace(13)* %128, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %129 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.6 = or i64 %25, 53, !dbg !125: {[-1]:Integer}, intvals: {}
  %130 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.6 = load i64, i64 addrspace(13)* %130, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 55: {[-1]:Integer}, intvals: {55,}
  %iv.next.3.4 = or i64 %25, 36, !dbg !125: {[-1]:Integer}, intvals: {}
  %96 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.4 = load i64, i64 addrspace(13)* %96, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %97 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.4 = or i64 %25, 37, !dbg !125: {[-1]:Integer}, intvals: {}
  %98 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.4 = load i64, i64 addrspace(13)* %98, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 50: {[-1]:Integer}, intvals: {50,}
i64 51: {[-1]:Integer}, intvals: {51,}
i64 54: {[-1]:Integer}, intvals: {54,}
i64 undef: {[-1]:Anything}, intvals: {}
  %52 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.1 = load i64, i64 addrspace(13)* %52, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %53 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.1 = or i64 %25, 15, !dbg !125: {[-1]:Integer}, intvals: {}
  %54 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.1 = load i64, i64 addrspace(13)* %54, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %55 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.725 = or i64 %25, 57, !dbg !125: {[-1]:Integer}, intvals: {}
  %138 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.725, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.726 = load i64, i64 addrspace(13)* %138, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %139 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.7 = or i64 %25, 58, !dbg !125: {[-1]:Integer}, intvals: {}
i64 52: {[-1]:Integer}, intvals: {52,}
  %109 = getelementptr inbounds i64, i64* %13, i64 %iv.next.521, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.5 = or i64 %25, 43, !dbg !125: {[-1]:Integer}, intvals: {}
  %110 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.5 = load i64, i64 addrspace(13)* %110, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %111 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3.5 = or i64 %25, 44, !dbg !125: {[-1]:Integer}, intvals: {}
i64 17: {[-1]:Integer}, intvals: {17,}
  %value_phi9.1.4 = load i64, i64 addrspace(13)* %92, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %93 = getelementptr inbounds i64, i64* %13, i64 %iv.next.419, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.4 = or i64 %25, 35, !dbg !125: {[-1]:Integer}, intvals: {}
  %94 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.4 = load i64, i64 addrspace(13)* %94, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %95 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
double 1.000000e+00: {[-1]:Float@double}, intvals: {}
i64 33: {[-1]:Integer}, intvals: {33,}
  %131 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.6 = or i64 %25, 54, !dbg !125: {[-1]:Integer}, intvals: {}
  %132 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.6 = load i64, i64 addrspace(13)* %132, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %133 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.6 = or i64 %25, 55, !dbg !125: {[-1]:Integer}, intvals: {}
i64 25: {[-1]:Integer}, intvals: {25,}
  %5 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !59: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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}, intvals: {}
  %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !34, !tbaa !26, !alias.scope !46, !noalias !51, !nonnull !16, !dereferenceable !57, !align !58: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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}, intvals: {}
  %safepoint = load i64*, i64** %4, align 8, !tbaa !26, !alias.scope !28, !noalias !31: {}, intvals: {}
  %value_phi9.7.2 = load i64, i64 addrspace(13)* %72, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %73 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.317 = or i64 %25, 25, !dbg !125: {[-1]:Integer}, intvals: {}
  %74 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.317, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.318 = load i64, i64 addrspace(13)* %74, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %75 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
i64 9: {[-1]:Integer}, intvals: {9,}
  %iv1 = phi i64 [ %iv.next2, %L62 ], [ 0, %L62.preheader.new.new ]: {[-1]:Integer}, intvals: {0,}
  %iv = phi i64 [ 0, %L62.epil5.preheader ], [ %iv.next3, %L62.epil5 ]: {[-1]:Integer}, intvals: {0,}
  %iv.next.3.7 = or i64 %25, 60, !dbg !125: {[-1]:Integer}, intvals: {}
  %144 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.7 = load i64, i64 addrspace(13)* %144, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %145 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.7 = or i64 %25, 61, !dbg !125: {[-1]:Integer}, intvals: {}
  %146 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.7 = load i64, i64 addrspace(13)* %146, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 47: {[-1]:Integer}, intvals: {47,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 57: {[-1]:Integer}, intvals: {57,}
i64 4: {[-1]:Integer}, intvals: {4,}
i64 13: {[-1]:Integer}, intvals: {13,}
i64 14: {[-1]:Integer}, intvals: {14,}
i64 48: {[-1]:Integer}, intvals: {48,}
i64 56: {[-1]:Integer}, intvals: {56,}
{} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}, intvals: {}
{ {} addrspace(10)* } addrspace(11)* %1: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {}
  %arraylen3 = load i64, i64 addrspace(11)* %arraylen_ptr2, align 8, !dbg !152, !tbaa !65, !range !68, !alias.scope !154, !noalias !155: {[-1]:Integer}, intvals: {}
  %99 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.4 = or i64 %25, 38, !dbg !125: {[-1]:Integer}, intvals: {}
  %100 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.4 = load i64, i64 addrspace(13)* %100, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %101 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.4 = or i64 %25, 39, !dbg !125: {[-1]:Integer}, intvals: {}
  %102 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
i64 2: {[-1]:Integer}, intvals: {2,}
i64 11: {[-1]:Integer}, intvals: {11,}
i64 26: {[-1]:Integer}, intvals: {26,}
i64 27: {[-1]:Integer}, intvals: {27,}
  %value_phi9.4.3 = load i64, i64 addrspace(13)* %82, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %83 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.3 = or i64 %25, 30, !dbg !125: {[-1]:Integer}, intvals: {}
  %84 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.3 = load i64, i64 addrspace(13)* %84, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %85 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %59 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.2 = or i64 %25, 18, !dbg !125: {[-1]:Integer}, intvals: {}
  %60 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.2 = load i64, i64 addrspace(13)* %60, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %61 = getelementptr inbounds i64, i64* %13, i64 %iv.next.215, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.2 = or i64 %25, 19, !dbg !125: {[-1]:Integer}, intvals: {}
  %62 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %180 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !59: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
  %arrayptr31 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %180, align 16, !dbg !59, !tbaa !142, !alias.scope !144, !noalias !72, !nonnull !16: {[-1]:Pointer}, intvals: {}
  %arrayref = load double, double addrspace(13)* %arrayptr31, align 8, !dbg !59, !tbaa !104, !alias.scope !147, !noalias !150: {[-1]:Float@double}, intvals: {}
  %arraylen_ptr2 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %181, i64 0, i32 1, !dbg !152: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %17 = add nsw i64 %arraylen3, -9, !dbg !116: {[-1]:Integer}, intvals: {}
  %18 = lshr i64 %17, 3, !dbg !116: {[-1]:Integer}, intvals: {}
  %19 = add nuw nsw i64 %18, 1, !dbg !116: {[-1]:Integer}, intvals: {}
  %xtraiter4 = and i64 %19, 7, !dbg !116: {[-1]:Integer}, intvals: {}
  %20 = icmp ult i64 %17, 56, !dbg !116: {[-1]:Integer}, intvals: {}
  %unroll_iter12 = and i64 %19, 4611686018427387896, !dbg !116: {[-1]:Integer}, intvals: {}
  %69 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.2 = or i64 %25, 23, !dbg !125: {[-1]:Integer}, intvals: {}
  %70 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.2 = load i64, i64 addrspace(13)* %70, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %71 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.2 = or i64 %25, 24, !dbg !125: {[-1]:Integer}, intvals: {}
  %72 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !59: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !59: {[-1]:Integer}, intvals: {}
  %6 = fcmp ult double %arrayref, 0.000000e+00, !dbg !74: {[-1]:Integer}, intvals: {}
  %7 = fcmp ugt double %arrayref, 1.000000e+00, !dbg !77: {[-1]:Integer}, intvals: {}
  %8 = or i1 %6, %7, !dbg !77: {[-1]:Integer}, intvals: {}
  %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !125: {[-1]:Integer}, intvals: {1,}
  %9 = addrspacecast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(11)*, !dbg !88: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}, intvals: {}
  %arrayptr532 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %9, align 16, !dbg !88, !alias.scope !94, !noalias !101, !nonnull !16: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
{ i64, i64*, double, i64 } undef: {[-1]:Anything}, intvals: {}
  %89 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.419 = or i64 %25, 33, !dbg !125: {[-1]:Integer}, intvals: {}
  %90 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.419, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.420 = load i64, i64 addrspace(13)* %90, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %91 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.4 = or i64 %25, 34, !dbg !125: {[-1]:Integer}, intvals: {}
  %92 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
i64 30: {[-1]:Integer}, intvals: {30,}
i64 31: {[-1]:Integer}, intvals: {31,}
i64 61: {[-1]:Integer}, intvals: {61,}
i64 62: {[-1]:Integer}, intvals: {62,}
  %.sroa.0.0 = phi i64 [ undef, %idxend ], [ %value_phi944, %L38.lr.ph ], [ %value_phi944, %L68.loopexit.unr-lcssa ], [ %value_phi944, %L68.loopexit ]: {[-1]:Integer}, intvals: {}
  %.sroa.2.0 = phi i64* [ undef, %idxend ], [ undef, %L38.lr.ph ], [ %13, %L68.loopexit.unr-lcssa ], [ %13, %L68.loopexit ]: {[-1]:Pointer}, intvals: {}
i64 40: {[-1]:Integer}, intvals: {40,}
i64 34: {[-1]:Integer}, intvals: {34,}
i64 35: {[-1]:Integer}, intvals: {35,}
i64 4611686018427387896: {[-1]:Anything}, intvals: {4611686018427387896,}
i64 53: {[-1]:Integer}, intvals: {53,}
i64 36: {[-1]:Integer}, intvals: {36,}
i64 37: {[-1]:Integer}, intvals: {37,}
  %iv.unr10 = phi i64 [ 0, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {0,}
  %lcmp.mod.not28 = icmp eq i64 %xtraiter4, 0, !dbg !116: {[-1]:Integer}, intvals: {}
  %140 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.7 = load i64, i64 addrspace(13)* %140, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %141 = getelementptr inbounds i64, i64* %13, i64 %iv.next.725, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.7 = or i64 %25, 59, !dbg !125: {[-1]:Integer}, intvals: {}
  %142 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.7 = load i64, i64 addrspace(13)* %142, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %143 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
i64 22: {[-1]:Integer}, intvals: {22,}
i64 23: {[-1]:Integer}, intvals: {23,}
i64 16: {[-1]:Integer}, intvals: {16,}
  %value_phi9.6.4 = load i64, i64 addrspace(13)* %102, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %103 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.4 = or i64 %25, 40, !dbg !125: {[-1]:Integer}, intvals: {}
  %104 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.4 = load i64, i64 addrspace(13)* %104, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %105 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %25 = shl nuw i64 %iv1, 6, !dbg !125: {[-1]:Integer}, intvals: {0,}
  %24 = shl i64 %iv1, 3, !dbg !125: {[-1]:Integer}, intvals: {0,}
  %iv.next3 = add nuw nsw i64 %iv, 1, !dbg !125: {[-1]:Integer}, intvals: {1,}
  %112 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.5 = load i64, i64 addrspace(13)* %112, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %113 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.5 = or i64 %25, 45, !dbg !125: {[-1]:Integer}, intvals: {}
  %114 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.5 = load i64, i64 addrspace(13)* %114, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %169 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.epil = add nuw nsw i64 %155, 8, !dbg !125: {[-1]:Integer}, intvals: {8,}
  %170 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.epil = load i64, i64 addrspace(13)* %170, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %171 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %niter.next.7 = add i64 %24, 8, !dbg !116: {[-1]:Integer}, intvals: {8,}
  %niter.ncmp.727 = icmp eq i64 %niter.next.7, %unroll_iter12, !dbg !116: {[-1]:Integer}, intvals: {}
  %iv4 = phi i64 [ 0, %L62.epil.preheader ], [ %iv.next5, %L62.epil ]: {[-1]:Integer}, intvals: {0,}
  %iv.next.epil7 = or i64 %155, 1, !dbg !125: {[-1]:Integer}, intvals: {}
i64 -2: {[-1]:Integer}, intvals: {-2,}
  %iv.next5 = add nuw nsw i64 %iv4, 1, !dbg !125: {[-1]:Integer}, intvals: {1,}
  %epil.iter9.cmp.not = icmp eq i64 %iv.next3, %xtraiter4, !dbg !116: {[-1]:Integer}, intvals: {}
  %iv.unr = phi i64 [ 0, %L62.preheader ], [ %iv.next.7.lcssa.ph, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa ], [ %iv.next.7.epil, %L68.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {0,8,}
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0, !dbg !116: {[-1]:Integer}, intvals: {}
i64 10: {[-1]:Integer}, intvals: {10,}
  %iv.next.6.3 = or i64 %25, 31, !dbg !125: {[-1]:Integer}, intvals: {}
  %86 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.3 = load i64, i64 addrspace(13)* %86, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %87 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.3, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.3 = or i64 %25, 32, !dbg !125: {[-1]:Integer}, intvals: {}
  %88 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.3 = load i64, i64 addrspace(13)* %88, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %156 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.epil8 = load i64, i64 addrspace(13)* %156, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %157 = getelementptr inbounds i64, i64* %13, i64 %155, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.epil = or i64 %155, 2, !dbg !125: {[-1]:Integer}, intvals: {}
  %158 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.epil = load i64, i64 addrspace(13)* %158, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %159 = getelementptr inbounds i64, i64* %13, i64 %iv.next.epil7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %118 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %119 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.5 = or i64 %25, 48, !dbg !125: {[-1]:Integer}, intvals: {}
  %120 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.5 = load i64, i64 addrspace(13)* %120, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %121 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
i64 7: {[-1]:Integer}, intvals: {7,}
  %exitcond.not49 = icmp eq i64 %arraylen3, 1, !dbg !112: {[-1]:Integer}, intvals: {}
  %4 = getelementptr inbounds i64*, i64** %ptls_load2930, i64 2: {[-1]:Pointer}, intvals: {}
  %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 0, !dbg !34: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {}
  %12 = call noalias nonnull i8* @malloc(i64 %11) #15, !dbg !116: {[-1]:Pointer}, intvals: {}
  %value_phi944 = load i64, i64 addrspace(13)* %arrayptr532, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %value_phi9.2.2 = load i64, i64 addrspace(13)* %62, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %63 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3.2 = or i64 %25, 20, !dbg !125: {[-1]:Integer}, intvals: {}
  %64 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.2 = load i64, i64 addrspace(13)* %64, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %65 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %29 = getelementptr inbounds i64, i64* %13, i64 %iv.next, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2 = or i64 %25, 3, !dbg !125: {[-1]:Integer}, intvals: {}
  %30 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %31 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3 = or i64 %25, 4, !dbg !125: {[-1]:Integer}, intvals: {}
  %32 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3 = load i64, i64 addrspace(13)* %32, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %iv.next.epil = add nuw nsw i64 %172, 1, !dbg !125: {[-1]:Integer}, intvals: {1,9,}
  %173 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.epil = load i64, i64 addrspace(13)* %173, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %174 = getelementptr inbounds i64, i64* %13, i64 %172, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %epil.iter.cmp.not = icmp eq i64 %iv.next5, %xtraiter, !dbg !116: {[-1]:Integer}, intvals: {}
  %2 = call {}*** @julia.get_pgcstack() #15: {}, intvals: {}
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !59, !tbaa !65, !range !68, !alias.scope !69, !noalias !72: {[-1]:Integer}, intvals: {}
  %154 = shl nuw nsw i64 %iv, 3, !dbg !125: {[-1]:Integer}, intvals: {0,}
  %155 = add nuw nsw i64 %iv.unr10, %154, !dbg !125: {[-1]:Integer}, intvals: {0,}
  %172 = add nuw nsw i64 %iv.unr, %iv4, !dbg !125: {[-1]:Integer}, intvals: {0,8,}
  %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #16, !dbg !77: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %175 = insertvalue { i64, i64*, double, i64 } undef, i64 %.sroa.0.0, 0, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
  %176 = insertvalue { i64, i64*, double, i64 } %175, i64* %.sroa.2.0, 1, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
  %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Float@double, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
  %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !117: {[-1]:Float@double}, intvals: {}
  %49 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.1 = or i64 %25, 13, !dbg !125: {[-1]:Integer}, intvals: {}
  %50 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.1 = load i64, i64 addrspace(13)* %50, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %51 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.1 = or i64 %25, 14, !dbg !125: {[-1]:Integer}, intvals: {}
  %iv.next.521 = or i64 %25, 41, !dbg !125: {[-1]:Integer}, intvals: {}
  %106 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.521, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.522 = load i64, i64 addrspace(13)* %106, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %107 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.4, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.5 = or i64 %25, 42, !dbg !125: {[-1]:Integer}, intvals: {}
  %108 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.5 = load i64, i64 addrspace(13)* %108, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 6: {[-1]:Integer}, intvals: {6,}
i64 12: {[-1]:Integer}, intvals: {12,}
i64 5: {[-1]:Integer}, intvals: {5,}
i64 41: {[-1]:Integer}, intvals: {41,}
i64 42: {[-1]:Integer}, intvals: {42,}
  %iv.next.2.epil = or i64 %155, 3, !dbg !125: {[-1]:Integer}, intvals: {}
  %160 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.epil = load i64, i64 addrspace(13)* %160, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %161 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.3.epil = or i64 %155, 4, !dbg !125: {[-1]:Integer}, intvals: {}
  %162 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.3.epil = load i64, i64 addrspace(13)* %162, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %163 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.4.epil = or i64 %155, 5, !dbg !125: {[-1]:Integer}, intvals: {}
  %164 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.epil = load i64, i64 addrspace(13)* %164, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %165 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.epil, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
i64 49: {[-1]:Integer}, intvals: {49,}
  %134 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.6.6 = load i64, i64 addrspace(13)* %134, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %135 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.7.6 = or i64 %25, 56, !dbg !125: {[-1]:Integer}, intvals: {}
  %136 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.6 = load i64, i64 addrspace(13)* %136, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %137 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %27 = getelementptr inbounds i64, i64* %13, i64 %25, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1 = or i64 %25, 2, !dbg !125: {[-1]:Integer}, intvals: {}
  %28 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
i64 3: {[-1]:Integer}, intvals: {3,}
  %iv.next.7.1 = or i64 %25, 16, !dbg !125: {[-1]:Integer}, intvals: {}
  %56 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.7.1 = load i64, i64 addrspace(13)* %56, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %57 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.1, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.215 = or i64 %25, 17, !dbg !125: {[-1]:Integer}, intvals: {}
  %58 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.215, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.216 = load i64, i64 addrspace(13)* %58, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 8: {[-1]:Integer}, intvals: {8,}
i64 63: {[-1]:Integer}, intvals: {63,}
i64 58: {[-1]:Integer}, intvals: {58,}
i64 59: {[-1]:Integer}, intvals: {59,}
i64 60: {[-1]:Integer}, intvals: {60,}
  %124 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.1.6 = load i64, i64 addrspace(13)* %124, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %125 = getelementptr inbounds i64, i64* %13, i64 %iv.next.623, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.2.6 = or i64 %25, 51, !dbg !125: {[-1]:Integer}, intvals: {}
  %126 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.2.6 = load i64, i64 addrspace(13)* %126, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %127 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.6, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.623 = or i64 %25, 49, !dbg !125: {[-1]:Integer}, intvals: {}
  %122 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.623, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.624 = load i64, i64 addrspace(13)* %122, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %123 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.5, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.1.6 = or i64 %25, 50, !dbg !125: {[-1]:Integer}, intvals: {}
  %iv.next.4.2 = or i64 %25, 21, !dbg !125: {[-1]:Integer}, intvals: {}
  %66 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.4.2 = load i64, i64 addrspace(13)* %66, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %67 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.2, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.2 = or i64 %25, 22, !dbg !125: {[-1]:Integer}, intvals: {}
  %68 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.2 = load i64, i64 addrspace(13)* %68, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
i64 43: {[-1]:Integer}, intvals: {43,}
i64 44: {[-1]:Integer}, intvals: {44,}
i64 24: {[-1]:Integer}, intvals: {24,}
i64 45: {[-1]:Integer}, intvals: {45,}
i64 46: {[-1]:Integer}, intvals: {46,}
i64 -8: {[-1]:Integer}, intvals: {-8,}
  %10 = shl i64 %arraylen3, 3, !dbg !116: {[-1]:Integer}, intvals: {}
  %11 = add i64 %10, -8, !dbg !116: {[-1]:Integer}, intvals: {}
  %13 = bitcast i8* %12 to i64*, !dbg !116: {[-1]:Pointer}, intvals: {}
  %14 = add nuw i64 %arraylen3, 7, !dbg !116: {[-1]:Integer}, intvals: {}
  %15 = add nsw i64 %arraylen3, -2, !dbg !116: {[-1]:Integer}, intvals: {}
  %xtraiter = and i64 %14, 7, !dbg !116: {[-1]:Integer}, intvals: {}
  %16 = icmp ult i64 %15, 7, !dbg !116: {[-1]:Integer}, intvals: {}
  %22 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #17, !dbg !77: {[-1]:Pointer}, intvals: {}
  %147 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.5.7 = or i64 %25, 62, !dbg !125: {[-1]:Integer}, intvals: {}
  %148 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi9.5.7 = load i64, i64 addrspace(13)* %148, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {}
  %149 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.7, !dbg !129: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %iv.next.6.7 = or i64 %25, 63, !dbg !125: {[-1]:Integer}, intvals: {}
  %ptls_field28 = getelementptr inbounds {}**, {}*** %2, i64 2: {}, intvals: {}
i64 64: {[-1]:Integer}, intvals: {64,}
i64 1: {[-1]:Integer}, intvals: {1,}
i64 18: {[-1]:Integer}, intvals: {18,}
i64 19: {[-1]:Integer}, intvals: {19,}
i64 38: {[-1]:Integer}, intvals: {38,}
i64 39: {[-1]:Integer}, intvals: {39,}
</analysis>

Illegal updateAnalysis prev:{[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Float@double, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything} new: {[0]:Float@double, [1]:Float@double, [2]:Float@double, [3]:Float@double, [4]:Float@double, [5]:Float@double, [6]:Float@double, [7]:Float@double, [8]:Float@double, [9]:Float@double, [10]:Float@double, [11]:Float@double, [12]:Float@double, [13]:Float@double, [14]:Float@double, [15]:Float@double, [16]:Float@double, [17]:Float@double, [18]:Float@double, [19]:Float@double, [20]:Float@double, [21]:Float@double, [22]:Float@double, [23]:Float@double}
val:   %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !117 origin=  %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !117
MethodInstance for logp(::Vector{Int64}, ::BiasedCoin, ::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(ρ = 1,)}}})

Caused by:
Stacktrace:
 [1] logp
   @ ./REPL[10]:6

Stacktrace:
  [1] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:1711
  [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, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…})
    @ Enzyme.API ~/.julia/packages/Enzyme/F71IJ/src/api.jl:168
  [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{…}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:3304
  [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/F71IJ/src/compiler.jl:5250
  [5] codegen
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:4592 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968
  [7] _thunk
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6006 [inlined]
  [9] (::Enzyme.Compiler.var"#1220#1221"{…})(ctx::LLVM.Context)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6073
 [10] JuliaContext(f::Enzyme.Compiler.var"#1220#1221"{…}; kwargs::@Kwargs{})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52
 [11] JuliaContext(f::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42
 [12] #s1957#1219
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6024 [inlined]
 [13] 
    @ Enzyme.Compiler ./none:0
 [14] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any})
    @ Core ./boot.jl:602
 [15] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:397 [inlined]
 [16] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:315 [inlined]
 [17] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:300 [inlined]
 [18] _hess(h::HessLogP{Const{BiasedCoin}})
    @ Main ./REPL[22]:2
 [19] (::HessLogP{Const{BiasedCoin}})(ddx::Matrix{Float64}, x::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{…}}})
    @ Main ./REPL[32]:4
 [20] top-level scope
    @ REPL[37]:1
Some type information was truncated. Use `show(err)` to see complete types.

Second Error

julia> m = HabituatingBiasedCoin();

julia> p = parameters(m);

julia> h! = HessLogP(rand(0:1, 10), m);

julia> H = zeros(length(p), length(p));

julia> h!(H, p)

ERROR: Enzyme compilation failed due to illegal type analysis.
Current scope: 
; Function Attrs: mustprogress willreturn
define private fastcc "enzyme_type"="{[-1]:Float@double}" { double*, i64*, double*, double, double, i64 } @preprocess_augmented_julia_logp_5535({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}" "enzymejl_parmtype"="132511560660096" "enzymejl_parmtype_ref"="2" %0, [1 x {} addrspace(10)*] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double}" "enzymejl_parmtype"="132509954024144" "enzymejl_parmtype_ref"="1" %1, { {} addrspace(10)* } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-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,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}" "enzymejl_parmtype"="132509965944528" "enzymejl_parmtype_ref"="1" %2) unnamed_addr #4 !dbg !734 {
top:
  %3 = call {}*** @julia.get_pgcstack() #16
  %ptls_field48 = getelementptr inbounds {}**, {}*** %3, i64 2
  %4 = bitcast {}*** %ptls_field48 to i64***
  %ptls_load4950 = load i64**, i64*** %4, align 8, !tbaa !49, !alias.scope !735, !noalias !738
  %5 = getelementptr inbounds i64*, i64** %ptls_load4950, i64 2
  %safepoint = load i64*, i64** %5, align 8, !tbaa !58, !alias.scope !740, !noalias !743
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #16, !dbg !745
  fence syncscope("singlethread") seq_cst
  %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %2, i64 0, i32 0, !dbg !746
  %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !746, !tbaa !58, !alias.scope !752, !noalias !755, !nonnull !17, !dereferenceable !159, !align !160
  %6 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !757
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %6, i64 0, i32 1, !dbg !757
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !757, !tbaa !82, !range !85, !alias.scope !759, !noalias !762
  %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !757
  br i1 %inbounds.not, label %oob, label %idxend, !dbg !757

L23:                                              ; preds = %idxend11
  %7 = fneg double %arrayref, !dbg !764
  %8 = call double @julia_exp_5556(double %7) #17, !dbg !765
  %9 = fadd double %8, 1.000000e+00, !dbg !767
  %10 = fdiv double 1.000000e+00, %9, !dbg !769
  %11 = fcmp ult double %10, 0.000000e+00, !dbg !771
  %12 = fcmp ugt double %10, 1.000000e+00, !dbg !772
  %13 = or i1 %11, %12, !dbg !772
  br i1 %13, label %L42, label %L48.lr.ph, !dbg !772

L48.lr.ph:                                        ; preds = %L23
  %14 = shl nuw i64 %arraylen16, 3, !dbg !772
  %15 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772
  %16 = bitcast i8* %15 to double*, !dbg !772
  %17 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772
  %18 = bitcast i8* %17 to i64*, !dbg !772
  %19 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772
  %20 = bitcast i8* %19 to double*, !dbg !772
  %21 = bitcast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(10)*
  %22 = addrspacecast i64 addrspace(13)* addrspace(10)* %21 to i8 addrspace(13)* addrspace(11)*
  %23 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %22, align 16, !alias.scope !777, !noalias !784
  br label %L48, !dbg !772

L42.loopexit:                                     ; preds = %L80
  br label %L42

L42:                                              ; preds = %L42.loopexit, %L23
  %.lcssa = phi double [ %10, %L23 ], [ %42, %L42.loopexit ], !dbg !769
  %current_task147 = getelementptr inbounds {}**, {}*** %3, i64 -14
  %current_task1 = bitcast {}*** %current_task147 to {}**
  %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #18, !dbg !772
  %24 = bitcast {} addrspace(10)* %box to double addrspace(10)*, !dbg !772
  store double %.lcssa, double addrspace(10)* %24, align 8, !dbg !772, !tbaa !207, !alias.scope !210, !noalias !786
  %25 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #19, !dbg !772
  %26 = addrspacecast {} addrspace(10)* %25 to {} addrspace(12)*, !dbg !772
  call void @ijl_throw({} addrspace(12)* %26) #20, !dbg !772
  unreachable, !dbg !772

L48:                                              ; preds = %L80, %L48.lr.ph
  %iv1 = phi i64 [ %iv.next, %L80 ], [ 0, %L48.lr.ph ]
  %27 = phi double [ %42, %L80 ], [ %10, %L48.lr.ph ]
  %28 = phi double [ %35, %L80 ], [ %arrayref, %L48.lr.ph ]
  %iv.next = add nuw nsw i64 %iv1, 1, !dbg !789
  %29 = shl i64 %iv1, 3, !dbg !789
  %30 = getelementptr i8, i8 addrspace(13)* %23, i64 %29, !dbg !789
  %31 = bitcast i8 addrspace(13)* %30 to i64 addrspace(13)*, !dbg !789
  %value_phi22 = load i64, i64 addrspace(13)* %31, align 8, !dbg !789, !tbaa !117, !alias.scope !790, !noalias !793
  %32 = sitofp i64 %value_phi22 to double, !dbg !795
  %33 = fsub double %32, %27, !dbg !801
  %34 = fmul double %arrayref14, %33, !dbg !802
  %35 = fadd double %28, %34, !dbg !803
  store double %35, double addrspace(11)* %54, align 8, !dbg !804, !tbaa !242, !alias.scope !806, !noalias !809
  %36 = getelementptr inbounds i64, i64* %18, i64 %iv1, !dbg !813
  store i64 %value_phi22, i64* %36, align 8, !dbg !813, !tbaa !117, !noalias !817, !invariant.group !818
  %37 = getelementptr inbounds double, double* %20, i64 %iv1, !dbg !813
  store double %35, double* %37, align 8, !dbg !813, !noalias !817, !invariant.group !819
  %38 = getelementptr inbounds double, double* %16, i64 %iv1, !dbg !813
  store double %27, double* %38, align 8, !dbg !813, !noalias !817, !invariant.group !820
  %exitcond.not = icmp eq i64 %iv.next, %arraylen16, !dbg !813
  br i1 %exitcond.not, label %L86.loopexit, label %L80, !dbg !815

L80:                                              ; preds = %L48
  %39 = fneg double %35, !dbg !764
  %40 = call double @julia_exp_5556(double %39) #21, !dbg !765
  %41 = fadd double %40, 1.000000e+00, !dbg !767
  %42 = fdiv double 1.000000e+00, %41, !dbg !769
  %43 = fcmp ult double %42, 0.000000e+00, !dbg !771
  %44 = fcmp ugt double %42, 1.000000e+00, !dbg !772
  %45 = or i1 %43, %44, !dbg !772
  br i1 %45, label %L42.loopexit, label %L48, !dbg !772

L86.loopexit:                                     ; preds = %L48
  br label %L86, !dbg !816

L86:                                              ; preds = %L86.loopexit, %idxend11
  %.sroa.0.0 = phi double* [ undef, %idxend11 ], [ %16, %L86.loopexit ]
  %.sroa.2.0 = phi i64* [ undef, %idxend11 ], [ %18, %L86.loopexit ]
  %.sroa.4.0 = phi double* [ undef, %idxend11 ], [ %20, %L86.loopexit ]
  %46 = insertvalue { double*, i64*, double*, double, double, i64 } undef, double* %.sroa.0.0, 0, !dbg !816
  %47 = insertvalue { double*, i64*, double*, double, double, i64 } %46, i64* %.sroa.2.0, 1, !dbg !816
  %48 = insertvalue { double*, i64*, double*, double, double, i64 } %47, double* %.sroa.4.0, 2, !dbg !816
  %49 = insertvalue { double*, i64*, double*, double, double, i64 } %48, double %arrayref, 3, !dbg !816
  %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !816
  %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !816
  ret { double*, i64*, double*, double, double, i64 } %51, !dbg !816

oob:                                              ; preds = %top
  %errorbox = alloca i64, align 8, !dbg !757
  store i64 1, i64* %errorbox, align 8, !dbg !757, !noalias !821
  %52 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !757
  call void @ijl_bounds_error_ints({} addrspace(12)* noundef %52, i64* noundef nonnull align 8 %errorbox, i64 noundef 1) #20, !dbg !757
  unreachable, !dbg !757

idxend:                                           ; preds = %top
  %53 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !757
  %arrayptr51 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %53, align 16, !dbg !757, !tbaa !113, !alias.scope !822, !noalias !762, !nonnull !17
  %arrayref = load double, double addrspace(13)* %arrayptr51, align 8, !dbg !757, !tbaa !117, !alias.scope !823, !noalias !826
  %getfield_addr2 = getelementptr inbounds [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(11)* %1, i64 0, i64 0, !dbg !828
  %getfield3 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr2 unordered, align 8, !dbg !828, !tbaa !58, !alias.scope !829, !noalias !832, !nonnull !17, !dereferenceable !276, !align !276
  %54 = addrspacecast {} addrspace(10)* %getfield3 to double addrspace(11)*, !dbg !834
  store double %arrayref, double addrspace(11)* %54, align 8, !dbg !834, !tbaa !242, !alias.scope !806, !noalias !809
  %inbounds8.not = icmp eq i64 %arraylen, 1, !dbg !836
  br i1 %inbounds8.not, label %oob9, label %idxend11, !dbg !836

oob9:                                             ; preds = %idxend
  %errorbox10 = alloca i64, align 8, !dbg !836
  store i64 2, i64* %errorbox10, align 8, !dbg !836, !noalias !821
  %55 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !836
  call void @ijl_bounds_error_ints({} addrspace(12)* noundef %55, i64* noundef nonnull align 8 %errorbox10, i64 noundef 1) #20, !dbg !836
  unreachable, !dbg !836

idxend11:                                         ; preds = %idxend
  %56 = getelementptr inbounds double, double addrspace(13)* %arrayptr51, i64 1, !dbg !836
  %arrayref14 = load double, double addrspace(13)* %56, align 8, !dbg !836, !tbaa !117, !alias.scope !823, !noalias !826
  %57 = addrspacecast {} addrspace(10)* %0 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !842
  %arraylen_ptr15 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %57, i64 0, i32 1, !dbg !842
  %arraylen16 = load i64, i64 addrspace(11)* %arraylen_ptr15, align 8, !dbg !842, !tbaa !82, !range !85, !alias.scope !846, !noalias !849
  %.not = icmp eq i64 %arraylen16, 0, !dbg !851
  br i1 %.not, label %L86, label %L23, !dbg !843
}

 Type analysis state: 
<analysis>
i64 1: {[-1]:Integer}, intvals: {1,}
  %4 = bitcast {}*** %ptls_field48 to i64***: {[-1]:Pointer}, intvals: {}
  %ptls_load4950 = load i64**, i64*** %4, align 8, !tbaa !18, !alias.scope !22, !noalias !25: {}, intvals: {}
  %safepoint = load i64*, i64** %5, align 8, !tbaa !27, !alias.scope !29, !noalias !32: {}, intvals: {}
  %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !35, !tbaa !27, !alias.scope !50, !noalias !55, !nonnull !17, !dereferenceable !61, !align !62: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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}, intvals: {}
  %6 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !63: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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}, intvals: {}
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !63, !tbaa !69, !range !72, !alias.scope !73, !noalias !76: {[-1]:Integer}, intvals: {}
i64 3: {[-1]:Integer}, intvals: {3,}
  %8 = call double @julia_exp_5556(double %7) #17, !dbg !81: {[-1]:Float@double}, intvals: {}
  %25 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #19, !dbg !96: {[-1]:Pointer}, intvals: {}
  %17 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {}
double 1.000000e+00: {[-1]:Float@double}, intvals: {}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
double* undef: {[-1]:Anything}, intvals: {}
{ double*, i64*, double*, double, double, i64 } undef: {[-1]:Anything}, intvals: {}
i64* undef: {[-1]:Anything}, intvals: {}
  %12 = fcmp ugt double %10, 1.000000e+00, !dbg !96: {[-1]:Integer}, intvals: {}
  %13 = or i1 %11, %12, !dbg !96: {[-1]:Integer}, intvals: {}
  %14 = shl nuw i64 %arraylen16, 3, !dbg !96: {[-1]:Integer}, intvals: {}
  %16 = bitcast i8* %15 to double*, !dbg !96: {[-1]:Pointer}, intvals: {}
  %18 = bitcast i8* %17 to i64*, !dbg !96: {[-1]:Pointer}, intvals: {}
  %19 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {}
  %20 = bitcast i8* %19 to double*, !dbg !96: {[-1]:Pointer}, intvals: {}
  %21 = bitcast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(10)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}, intvals: {}
  %22 = addrspacecast i64 addrspace(13)* addrspace(10)* %21 to i8 addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}, intvals: {}
  %23 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %22, align 16, !alias.scope !107, !noalias !114: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %46 = insertvalue { double*, i64*, double*, double, double, i64 } undef, double* %.sroa.0.0, 0, !dbg !170: {[0]:Pointer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {}
  %47 = insertvalue { double*, i64*, double*, double, double, i64 } %46, i64* %.sroa.2.0, 1, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {}
  %27 = phi double [ %42, %L80 ], [ %10, %L48.lr.ph ]: {[-1]:Float@double}, intvals: {}
  %28 = phi double [ %35, %L80 ], [ %arrayref, %L48.lr.ph ]: {[-1]:Float@double}, intvals: {}
  %29 = shl i64 %iv1, 3, !dbg !124: {[-1]:Integer}, intvals: {0,}
  %30 = getelementptr i8, i8 addrspace(13)* %23, i64 %29, !dbg !124: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %31 = bitcast i8 addrspace(13)* %30 to i64 addrspace(13)*, !dbg !124: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi22 = load i64, i64 addrspace(13)* %31, align 8, !dbg !124, !tbaa !125, !alias.scope !127, !noalias !130: {[-1]:Integer}, intvals: {}
  %32 = sitofp i64 %value_phi22 to double, !dbg !132: {[-1]:Float@double}, intvals: {}
  %33 = fsub double %32, %27, !dbg !144: {[-1]:Float@double}, intvals: {}
  %34 = fmul double %arrayref14, %33, !dbg !145: {[-1]:Float@double}, intvals: {}
  %35 = fadd double %28, %34, !dbg !147: {[-1]:Float@double}, intvals: {}
  %36 = getelementptr inbounds i64, i64* %18, i64 %iv1, !dbg !163: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %37 = getelementptr inbounds double, double* %20, i64 %iv1, !dbg !163: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
  %38 = getelementptr inbounds double, double* %16, i64 %iv1, !dbg !163: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
  %exitcond.not = icmp eq i64 %iv.next, %arraylen16, !dbg !163: {[-1]:Integer}, intvals: {}
  %39 = fneg double %35, !dbg !78: {[-1]:Float@double}, intvals: {}
  %40 = call double @julia_exp_5556(double %39) #21, !dbg !81: {[-1]:Float@double}, intvals: {}
  %41 = fadd double %40, 1.000000e+00, !dbg !85: {[-1]:Float@double}, intvals: {}
  %42 = fdiv double 1.000000e+00, %41, !dbg !90: {[-1]:Float@double}, intvals: {}
  %43 = fcmp ult double %42, 0.000000e+00, !dbg !94: {[-1]:Integer}, intvals: {}
  %44 = fcmp ugt double %42, 1.000000e+00, !dbg !96: {[-1]:Integer}, intvals: {}
  %45 = or i1 %43, %44, !dbg !96: {[-1]:Integer}, intvals: {}
  %.sroa.0.0 = phi double* [ undef, %idxend11 ], [ %16, %L86.loopexit ]: {[-1]:Pointer}, intvals: {}
  %.sroa.2.0 = phi i64* [ undef, %idxend11 ], [ %18, %L86.loopexit ]: {[-1]:Pointer}, intvals: {}
  %.sroa.4.0 = phi double* [ undef, %idxend11 ], [ %20, %L86.loopexit ]: {[-1]:Pointer}, intvals: {}
  %48 = insertvalue { double*, i64*, double*, double, double, i64 } %47, double* %.sroa.4.0, 2, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {}
  %49 = insertvalue { double*, i64*, double*, double, double, i64 } %48, double %arrayref, 3, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {}
  %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Float@double, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {}
  %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !170: {[-1]:Float@double}, intvals: {}
  %53 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !63: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
  %arrayptr51 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %53, align 16, !dbg !63, !tbaa !176, !alias.scope !178, !noalias !76, !nonnull !17: {[-1]:Pointer}, intvals: {}
  %arrayref = load double, double addrspace(13)* %arrayptr51, align 8, !dbg !63, !tbaa !125, !alias.scope !179, !noalias !182: {[-1]:Float@double}, intvals: {}
  %54 = addrspacecast {} addrspace(10)* %getfield3 to double addrspace(11)*, !dbg !192: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
  %arrayref14 = load double, double addrspace(13)* %56, align 8, !dbg !194, !tbaa !125, !alias.scope !179, !noalias !182: {[-1]:Float@double}, intvals: {}
  %arraylen_ptr15 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %57, i64 0, i32 1, !dbg !200: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %arraylen16 = load i64, i64 addrspace(11)* %arraylen_ptr15, align 8, !dbg !200, !tbaa !69, !range !72, !alias.scope !205, !noalias !208: {[-1]:Integer}, intvals: {}
  %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %2, i64 0, i32 0, !dbg !35: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {}
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %6, i64 0, i32 1, !dbg !63: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
  %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !63: {[-1]:Integer}, intvals: {}
  %11 = fcmp ult double %10, 0.000000e+00, !dbg !94: {[-1]:Integer}, intvals: {}
  %7 = fneg double %arrayref, !dbg !78: {[-1]:Float@double}, intvals: {}
  %iv.next = add nuw nsw i64 %iv1, 1, !dbg !124: {[-1]:Integer}, intvals: {1,}
  %9 = fadd double %8, 1.000000e+00, !dbg !85: {[-1]:Float@double}, intvals: {}
  %10 = fdiv double 1.000000e+00, %9, !dbg !90: {[-1]:Float@double}, intvals: {}
  %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #18, !dbg !96: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %iv1 = phi i64 [ %iv.next, %L80 ], [ 0, %L48.lr.ph ]: {[-1]:Integer}, intvals: {0,}
{} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]: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}, intvals: {}
[1 x {} addrspace(10)*] addrspace(11)* %1: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,-1]:Float@double}, intvals: {}
{ {} addrspace(10)* } addrspace(11)* %2: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {}
  %ptls_field48 = getelementptr inbounds {}**, {}*** %3, i64 2: {}, intvals: {}
  %15 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {}
  %3 = call {}*** @julia.get_pgcstack() #16: {}, intvals: {}
i64 0: {[-1]:Anything}, intvals: {0,}
  %5 = getelementptr inbounds i64*, i64** %ptls_load4950, i64 2: {[-1]:Pointer}, intvals: {}
</analysis>

Illegal updateAnalysis prev:{[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Float@double, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything} new: {[0]:Float@double, [1]:Float@double, [2]:Float@double, [3]:Float@double, [4]:Float@double, [5]:Float@double, [6]:Float@double, [7]:Float@double, [8]:Float@double, [9]:Float@double, [10]:Float@double, [11]:Float@double, [12]:Float@double, [13]:Float@double, [14]:Float@double, [15]:Float@double, [16]:Float@double, [17]:Float@double, [18]:Float@double, [19]:Float@double, [20]:Float@double, [21]:Float@double, [22]:Float@double, [23]:Float@double, [24]:Float@double, [25]:Float@double, [26]:Float@double, [27]:Float@double, [28]:Float@double, [29]:Float@double, [30]:Float@double, [31]:Float@double, [32]:Float@double, [33]:Float@double, [34]:Float@double, [35]:Float@double, [36]:Float@double, [37]:Float@double, [38]:Float@double, [39]:Float@double}
val:   %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !170 origin=  %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !170
MethodInstance for logp(::Vector{Int64}, ::HabituatingBiasedCoin{Base.RefValue{Float64}}, ::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(w₀ = 1, η = 2)}}})

Caused by:
Stacktrace:
 [1] logp
   @ ./REPL[16]:9

Stacktrace:
  [1] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:1711
  [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, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…})
    @ Enzyme.API ~/.julia/packages/Enzyme/F71IJ/src/api.jl:168
  [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{…}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:3304
  [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/F71IJ/src/compiler.jl:5250
  [5] codegen
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:4592 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968
  [7] _thunk
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6006 [inlined]
  [9] (::Enzyme.Compiler.var"#1220#1221"{…})(ctx::LLVM.Context)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6073
 [10] JuliaContext(f::Enzyme.Compiler.var"#1220#1221"{…}; kwargs::@Kwargs{})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52
 [11] JuliaContext(f::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42
 [12] #s1957#1219
    @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6024 [inlined]
 [13] 
    @ Enzyme.Compiler ./none:0
 [14] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any})
    @ Core ./boot.jl:602
 [15] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:397 [inlined]
 [16] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:315 [inlined]
 [17] autodiff
    @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:300 [inlined]
 [18] _hess(h::HessLogP{BatchDuplicated{HabituatingBiasedCoin{Base.RefValue{Float64}}, 2}})
    @ Main ./REPL[23]:2
 [19] (::HessLogP{BatchDuplicated{…}})(ddx::Matrix{Float64}, x::ComponentVector{Float64, Vector{…}, Tuple{…}})
    @ Main ./REPL[32]:4
 [20] top-level scope
    @ REPL[42]:1
Some type information was truncated. Use `show(err)` to see complete types.