; LLVM IR from romerojosh/zefr :: src/funcs.ll (Z11adjoint_4x4PdS_)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_Z11adjoint_4x4PdS_(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  %21 = load ptr, ptr %3, align 8, !tbaa !5
  %22 = getelementptr inbounds double, ptr %21, i64 0
  %23 = load double, ptr %22, align 8, !tbaa !9
  store double %23, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  %24 = load ptr, ptr %3, align 8, !tbaa !5
  %25 = getelementptr inbounds double, ptr %24, i64 1
  %26 = load double, ptr %25, align 8, !tbaa !9
  store double %26, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = getelementptr inbounds double, ptr %27, i64 2
  %29 = load double, ptr %28, align 8, !tbaa !9
  store double %29, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr inbounds double, ptr %30, i64 3
  %32 = load double, ptr %31, align 8, !tbaa !9
  store double %32, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  %33 = load ptr, ptr %3, align 8, !tbaa !5
  %34 = getelementptr inbounds double, ptr %33, i64 4
  %35 = load double, ptr %34, align 8, !tbaa !9
  store double %35, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  %36 = load ptr, ptr %3, align 8, !tbaa !5
  %37 = getelementptr inbounds double, ptr %36, i64 5
  %38 = load double, ptr %37, align 8, !tbaa !9
  store double %38, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = getelementptr inbounds double, ptr %39, i64 6
  %41 = load double, ptr %40, align 8, !tbaa !9
  store double %41, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  %43 = getelementptr inbounds double, ptr %42, i64 7
  %44 = load double, ptr %43, align 8, !tbaa !9
  store double %44, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  %45 = load ptr, ptr %3, align 8, !tbaa !5
  %46 = getelementptr inbounds double, ptr %45, i64 8
  %47 = load double, ptr %46, align 8, !tbaa !9
  store double %47, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  %48 = load ptr, ptr %3, align 8, !tbaa !5
  %49 = getelementptr inbounds double, ptr %48, i64 9
  %50 = load double, ptr %49, align 8, !tbaa !9
  store double %50, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %51 = load ptr, ptr %3, align 8, !tbaa !5
  %52 = getelementptr inbounds double, ptr %51, i64 10
  %53 = load double, ptr %52, align 8, !tbaa !9
  store double %53, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  %54 = load ptr, ptr %3, align 8, !tbaa !5
  %55 = getelementptr inbounds double, ptr %54, i64 11
  %56 = load double, ptr %55, align 8, !tbaa !9
  store double %56, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  %57 = load ptr, ptr %3, align 8, !tbaa !5
  %58 = getelementptr inbounds double, ptr %57, i64 12
  %59 = load double, ptr %58, align 8, !tbaa !9
  store double %59, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  %60 = load ptr, ptr %3, align 8, !tbaa !5
  %61 = getelementptr inbounds double, ptr %60, i64 13
  %62 = load double, ptr %61, align 8, !tbaa !9
  store double %62, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %63 = load ptr, ptr %3, align 8, !tbaa !5
  %64 = getelementptr inbounds double, ptr %63, i64 14
  %65 = load double, ptr %64, align 8, !tbaa !9
  store double %65, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  %66 = load ptr, ptr %3, align 8, !tbaa !5
  %67 = getelementptr inbounds double, ptr %66, i64 15
  %68 = load double, ptr %67, align 8, !tbaa !9
  store double %68, ptr %20, align 8, !tbaa !9
  %69 = load double, ptr %12, align 8, !tbaa !9
  %70 = fneg double %69
  %71 = load double, ptr %15, align 8, !tbaa !9
  %72 = fmul double %70, %71
  %73 = load double, ptr %18, align 8, !tbaa !9
  %74 = load double, ptr %11, align 8, !tbaa !9
  %75 = load double, ptr %16, align 8, !tbaa !9
  %76 = fmul double %74, %75
  %77 = load double, ptr %18, align 8, !tbaa !9
  %78 = fmul double %76, %77
  %79 = call double @llvm.fmuladd.f64(double %72, double %73, double %78)
  %80 = load double, ptr %12, align 8, !tbaa !9
  %81 = load double, ptr %14, align 8, !tbaa !9
  %82 = fmul double %80, %81
  %83 = load double, ptr %19, align 8, !tbaa !9
  %84 = call double @llvm.fmuladd.f64(double %82, double %83, double %79)
  %85 = load double, ptr %10, align 8, !tbaa !9
  %86 = load double, ptr %16, align 8, !tbaa !9
  %87 = fmul double %85, %86
  %88 = load double, ptr %19, align 8, !tbaa !9
  %89 = fneg double %87
  %90 = call double @llvm.fmuladd.f64(double %89, double %88, double %84)
  %91 = load double, ptr %11, align 8, !tbaa !9
  %92 = load double, ptr %14, align 8, !tbaa !9
  %93 = fmul double %91, %92
  %94 = load double, ptr %20, align 8, !tbaa !9
  %95 = fneg double %93
  %96 = call double @llvm.fmuladd.f64(double %95, double %94, double %90)
  %97 = load double, ptr %10, align 8, !tbaa !9
  %98 = load double, ptr %15, align 8, !tbaa !9
  %99 = fmul double %97, %98
  %100 = load double, ptr %20, align 8, !tbaa !9
  %101 = call double @llvm.fmuladd.f64(double %99, double %100, double %96)
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = getelementptr inbounds double, ptr %102, i64 0
  store double %101, ptr %103, align 8, !tbaa !9
  %104 = load double, ptr %8, align 8, !tbaa !9
  %105 = load double, ptr %15, align 8, !tbaa !9
  %106 = fmul double %104, %105
  %107 = load double, ptr %18, align 8, !tbaa !9
  %108 = load double, ptr %7, align 8, !tbaa !9
  %109 = load double, ptr %16, align 8, !tbaa !9
  %110 = fmul double %108, %109
  %111 = load double, ptr %18, align 8, !tbaa !9
  %112 = fmul double %110, %111
  %113 = fneg double %112
  %114 = call double @llvm.fmuladd.f64(double %106, double %107, double %113)
  %115 = load double, ptr %8, align 8, !tbaa !9
  %116 = load double, ptr %14, align 8, !tbaa !9
  %117 = fmul double %115, %116
  %118 = load double, ptr %19, align 8, !tbaa !9
  %119 = fneg double %117
  %120 = call double @llvm.fmuladd.f64(double %119, double %118, double %114)
  %121 = load double, ptr %6, align 8, !tbaa !9
  %122 = load double, ptr %16, align 8, !tbaa !9
  %123 = fmul double %121, %122
  %124 = load double, ptr %19, align 8, !tbaa !9
  %125 = call double @llvm.fmuladd.f64(double %123, double %124, double %120)
  %126 = load double, ptr %7, align 8, !tbaa !9
  %127 = load double, ptr %14, align 8, !tbaa !9
  %128 = fmul double %126, %127
  %129 = load double, ptr %20, align 8, !tbaa !9
  %130 = call double @llvm.fmuladd.f64(double %128, double %129, double %125)
  %131 = load double, ptr %6, align 8, !tbaa !9
  %132 = load double, ptr %15, align 8, !tbaa !9
  %133 = fmul double %131, %132
  %134 = load double, ptr %20, align 8, !tbaa !9
  %135 = fneg double %133
  %136 = call double @llvm.fmuladd.f64(double %135, double %134, double %130)
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = getelementptr inbounds double, ptr %137, i64 1
  store double %136, ptr %138, align 8, !tbaa !9
  %139 = load double, ptr %8, align 8, !tbaa !9
  %140 = fneg double %139
  %141 = load double, ptr %11, align 8, !tbaa !9
  %142 = fmul double %140, %141
  %143 = load double, ptr %18, align 8, !tbaa !9
  %144 = load double, ptr %7, align 8, !tbaa !9
  %145 = load double, ptr %12, align 8, !tbaa !9
  %146 = fmul double %144, %145
  %147 = load double, ptr %18, align 8, !tbaa !9
  %148 = fmul double %146, %147
  %149 = call double @llvm.fmuladd.f64(double %142, double %143, double %148)
  %150 = load double, ptr %8, align 8, !tbaa !9
  %151 = load double, ptr %10, align 8, !tbaa !9
  %152 = fmul double %150, %151
  %153 = load double, ptr %19, align 8, !tbaa !9
  %154 = call double @llvm.fmuladd.f64(double %152, double %153, double %149)
  %155 = load double, ptr %6, align 8, !tbaa !9
  %156 = load double, ptr %12, align 8, !tbaa !9
  %157 = fmul double %155, %156
  %158 = load double, ptr %19, align 8, !tbaa !9
  %159 = fneg double %157
  %160 = call double @llvm.fmuladd.f64(double %159, double %158, double %154)
  %161 = load double, ptr %7, align 8, !tbaa !9
  %162 = load double, ptr %10, align 8, !tbaa !9
  %163 = fmul double %161, %162
  %164 = load double, ptr %20, align 8, !tbaa !9
  %165 = fneg double %163
  %166 = call double @llvm.fmuladd.f64(double %165, double %164, double %160)
  %167 = load double, ptr %6, align 8, !tbaa !9
  %168 = load double, ptr %11, align 8, !tbaa !9
  %169 = fmul double %167, %168
  %170 = load double, ptr %20, align 8, !tbaa !9
  %171 = call double @llvm.fmuladd.f64(double %169, double %170, double %166)
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds double, ptr %172, i64 2
  store double %171, ptr %173, align 8, !tbaa !9
  %174 = load double, ptr %8, align 8, !tbaa !9
  %175 = load double, ptr %11, align 8, !tbaa !9
  %176 = fmul double %174, %175
  %177 = load double, ptr %14, align 8, !tbaa !9
  %178 = load double, ptr %7, align 8, !tbaa !9
  %179 = load double, ptr %12, align 8, !tbaa !9
  %180 = fmul double %178, %179
  %181 = load double, ptr %14, align 8, !tbaa !9
  %182 = fmul double %180, %181
  %183 = fneg double %182
  %184 = call double @llvm.fmuladd.f64(double %176, double %177, double %183)
  %185 = load double, ptr %8, align 8, !tbaa !9
  %186 = load double, ptr %10, align 8, !tbaa !9
  %187 = fmul double %185, %186
  %188 = load double, ptr %15, align 8, !tbaa !9
  %189 = fneg double %187
  %190 = call double @llvm.fmuladd.f64(double %189, double %188, double %184)
  %191 = load double, ptr %6, align 8, !tbaa !9
  %192 = load double, ptr %12, align 8, !tbaa !9
  %193 = fmul double %191, %192
  %194 = load double, ptr %15, align 8, !tbaa !9
  %195 = call double @llvm.fmuladd.f64(double %193, double %194, double %190)
  %196 = load double, ptr %7, align 8, !tbaa !9
  %197 = load double, ptr %10, align 8, !tbaa !9
  %198 = fmul double %196, %197
  %199 = load double, ptr %16, align 8, !tbaa !9
  %200 = call double @llvm.fmuladd.f64(double %198, double %199, double %195)
  %201 = load double, ptr %6, align 8, !tbaa !9
  %202 = load double, ptr %11, align 8, !tbaa !9
  %203 = fmul double %201, %202
  %204 = load double, ptr %16, align 8, !tbaa !9
  %205 = fneg double %203
  %206 = call double @llvm.fmuladd.f64(double %205, double %204, double %200)
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 3
  store double %206, ptr %208, align 8, !tbaa !9
  %209 = load double, ptr %12, align 8, !tbaa !9
  %210 = load double, ptr %15, align 8, !tbaa !9
  %211 = fmul double %209, %210
  %212 = load double, ptr %17, align 8, !tbaa !9
  %213 = load double, ptr %11, align 8, !tbaa !9
  %214 = load double, ptr %16, align 8, !tbaa !9
  %215 = fmul double %213, %214
  %216 = load double, ptr %17, align 8, !tbaa !9
  %217 = fmul double %215, %216
  %218 = fneg double %217
  %219 = call double @llvm.fmuladd.f64(double %211, double %212, double %218)
  %220 = load double, ptr %12, align 8, !tbaa !9
  %221 = load double, ptr %13, align 8, !tbaa !9
  %222 = fmul double %220, %221
  %223 = load double, ptr %19, align 8, !tbaa !9
  %224 = fneg double %222
  %225 = call double @llvm.fmuladd.f64(double %224, double %223, double %219)
  %226 = load double, ptr %9, align 8, !tbaa !9
  %227 = load double, ptr %16, align 8, !tbaa !9
  %228 = fmul double %226, %227
  %229 = load double, ptr %19, align 8, !tbaa !9
  %230 = call double @llvm.fmuladd.f64(double %228, double %229, double %225)
  %231 = load double, ptr %11, align 8, !tbaa !9
  %232 = load double, ptr %13, align 8, !tbaa !9
  %233 = fmul double %231, %232
  %234 = load double, ptr %20, align 8, !tbaa !9
  %235 = call double @llvm.fmuladd.f64(double %233, double %234, double %230)
  %236 = load double, ptr %9, align 8, !tbaa !9
  %237 = load double, ptr %15, align 8, !tbaa !9
  %238 = fmul double %236, %237
  %239 = load double, ptr %20, align 8, !tbaa !9
  %240 = fneg double %238
  %241 = call double @llvm.fmuladd.f64(double %240, double %239, double %235)
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds double, ptr %242, i64 4
  store double %241, ptr %243, align 8, !tbaa !9
  %244 = load double, ptr %8, align 8, !tbaa !9
  %245 = fneg double %244
  %246 = load double, ptr %15, align 8, !tbaa !9
  %247 = fmul double %245, %246
  %248 = load double, ptr %17, align 8, !tbaa !9
  %249 = load double, ptr %7, align 8, !tbaa !9
  %250 = load double, ptr %16, align 8, !tbaa !9
  %251 = fmul double %249, %250
  %252 = load double, ptr %17, align 8, !tbaa !9
  %253 = fmul double %251, %252
  %254 = call double @llvm.fmuladd.f64(double %247, double %248, double %253)
  %255 = load double, ptr %8, align 8, !tbaa !9
  %256 = load double, ptr %13, align 8, !tbaa !9
  %257 = fmul double %255, %256
  %258 = load double, ptr %19, align 8, !tbaa !9
  %259 = call double @llvm.fmuladd.f64(double %257, double %258, double %254)
  %260 = load double, ptr %5, align 8, !tbaa !9
  %261 = load double, ptr %16, align 8, !tbaa !9
  %262 = fmul double %260, %261
  %263 = load double, ptr %19, align 8, !tbaa !9
  %264 = fneg double %262
  %265 = call double @llvm.fmuladd.f64(double %264, double %263, double %259)
  %266 = load double, ptr %7, align 8, !tbaa !9
  %267 = load double, ptr %13, align 8, !tbaa !9
  %268 = fmul double %266, %267
  %269 = load double, ptr %20, align 8, !tbaa !9
  %270 = fneg double %268
  %271 = call double @llvm.fmuladd.f64(double %270, double %269, double %265)
  %272 = load double, ptr %5, align 8, !tbaa !9
  %273 = load double, ptr %15, align 8, !tbaa !9
  %274 = fmul double %272, %273
  %275 = load double, ptr %20, align 8, !tbaa !9
  %276 = call double @llvm.fmuladd.f64(double %274, double %275, double %271)
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds double, ptr %277, i64 5
  store double %276, ptr %278, align 8, !tbaa !9
  %279 = load double, ptr %8, align 8, !tbaa !9
  %280 = load double, ptr %11, align 8, !tbaa !9
  %281 = fmul double %279, %280
  %282 = load double, ptr %17, align 8, !tbaa !9
  %283 = load double, ptr %7, align 8, !tbaa !9
  %284 = load double, ptr %12, align 8, !tbaa !9
  %285 = fmul double %283, %284
  %286 = load double, ptr %17, align 8, !tbaa !9
  %287 = fmul double %285, %286
  %288 = fneg double %287
  %289 = call double @llvm.fmuladd.f64(double %281, double %282, double %288)
  %290 = load double, ptr %8, align 8, !tbaa !9
  %291 = load double, ptr %9, align 8, !tbaa !9
  %292 = fmul double %290, %291
  %293 = load double, ptr %19, align 8, !tbaa !9
  %294 = fneg double %292
  %295 = call double @llvm.fmuladd.f64(double %294, double %293, double %289)
  %296 = load double, ptr %5, align 8, !tbaa !9
  %297 = load double, ptr %12, align 8, !tbaa !9
  %298 = fmul double %296, %297
  %299 = load double, ptr %19, align 8, !tbaa !9
  %300 = call double @llvm.fmuladd.f64(double %298, double %299, double %295)
  %301 = load double, ptr %7, align 8, !tbaa !9
  %302 = load double, ptr %9, align 8, !tbaa !9
  %303 = fmul double %301, %302
  %304 = load double, ptr %20, align 8, !tbaa !9
  %305 = call double @llvm.fmuladd.f64(double %303, double %304, double %300)
  %306 = load double, ptr %5, align 8, !tbaa !9
  %307 = load double, ptr %11, align 8, !tbaa !9
  %308 = fmul double %306, %307
  %309 = load double, ptr %20, align 8, !tbaa !9
  %310 = fneg double %308
  %311 = call double @llvm.fmuladd.f64(double %310, double %309, double %305)
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds double, ptr %312, i64 6
  store double %311, ptr %313, align 8, !tbaa !9
  %314 = load double, ptr %8, align 8, !tbaa !9
  %315 = fneg double %314
  %316 = load double, ptr %11, align 8, !tbaa !9
  %317 = fmul double %315, %316
  %318 = load double, ptr %13, align 8, !tbaa !9
  %319 = load double, ptr %7, align 8, !tbaa !9
  %320 = load double, ptr %12, align 8, !tbaa !9
  %321 = fmul double %319, %320
  %322 = load double, ptr %13, align 8, !tbaa !9
  %323 = fmul double %321, %322
  %324 = call double @llvm.fmuladd.f64(double %317, double %318, double %323)
  %325 = load double, ptr %8, align 8, !tbaa !9
  %326 = load double, ptr %9, align 8, !tbaa !9
  %327 = fmul double %325, %326
  %328 = load double, ptr %15, align 8, !tbaa !9
  %329 = call double @llvm.fmuladd.f64(double %327, double %328, double %324)
  %330 = load double, ptr %5, align 8, !tbaa !9
  %331 = load double, ptr %12, align 8, !tbaa !9
  %332 = fmul double %330, %331
  %333 = load double, ptr %15, align 8, !tbaa !9
  %334 = fneg double %332
  %335 = call double @llvm.fmuladd.f64(double %334, double %333, double %329)
  %336 = load double, ptr %7, align 8, !tbaa !9
  %337 = load double, ptr %9, align 8, !tbaa !9
  %338 = fmul double %336, %337
  %339 = load double, ptr %16, align 8, !tbaa !9
  %340 = fneg double %338
  %341 = call double @llvm.fmuladd.f64(double %340, double %339, double %335)
  %342 = load double, ptr %5, align 8, !tbaa !9
  %343 = load double, ptr %11, align 8, !tbaa !9
  %344 = fmul double %342, %343
  %345 = load double, ptr %16, align 8, !tbaa !9
  %346 = call double @llvm.fmuladd.f64(double %344, double %345, double %341)
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 7
  store double %346, ptr %348, align 8, !tbaa !9
  %349 = load double, ptr %12, align 8, !tbaa !9
  %350 = fneg double %349
  %351 = load double, ptr %14, align 8, !tbaa !9
  %352 = fmul double %350, %351
  %353 = load double, ptr %17, align 8, !tbaa !9
  %354 = load double, ptr %10, align 8, !tbaa !9
  %355 = load double, ptr %16, align 8, !tbaa !9
  %356 = fmul double %354, %355
  %357 = load double, ptr %17, align 8, !tbaa !9
  %358 = fmul double %356, %357
  %359 = call double @llvm.fmuladd.f64(double %352, double %353, double %358)
  %360 = load double, ptr %12, align 8, !tbaa !9
  %361 = load double, ptr %13, align 8, !tbaa !9
  %362 = fmul double %360, %361
  %363 = load double, ptr %18, align 8, !tbaa !9
  %364 = call double @llvm.fmuladd.f64(double %362, double %363, double %359)
  %365 = load double, ptr %9, align 8, !tbaa !9
  %366 = load double, ptr %16, align 8, !tbaa !9
  %367 = fmul double %365, %366
  %368 = load double, ptr %18, align 8, !tbaa !9
  %369 = fneg double %367
  %370 = call double @llvm.fmuladd.f64(double %369, double %368, double %364)
  %371 = load double, ptr %10, align 8, !tbaa !9
  %372 = load double, ptr %13, align 8, !tbaa !9
  %373 = fmul double %371, %372
  %374 = load double, ptr %20, align 8, !tbaa !9
  %375 = fneg double %373
  %376 = call double @llvm.fmuladd.f64(double %375, double %374, double %370)
  %377 = load double, ptr %9, align 8, !tbaa !9
  %378 = load double, ptr %14, align 8, !tbaa !9
  %379 = fmul double %377, %378
  %380 = load double, ptr %20, align 8, !tbaa !9
  %381 = call double @llvm.fmuladd.f64(double %379, double %380, double %376)
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds double, ptr %382, i64 8
  store double %381, ptr %383, align 8, !tbaa !9
  %384 = load double, ptr %8, align 8, !tbaa !9
  %385 = load double, ptr %14, align 8, !tbaa !9
  %386 = fmul double %384, %385
  %387 = load double, ptr %17, align 8, !tbaa !9
  %388 = load double, ptr %6, align 8, !tbaa !9
  %389 = load double, ptr %16, align 8, !tbaa !9
  %390 = fmul double %388, %389
  %391 = load double, ptr %17, align 8, !tbaa !9
  %392 = fmul double %390, %391
  %393 = fneg double %392
  %394 = call double @llvm.fmuladd.f64(double %386, double %387, double %393)
  %395 = load double, ptr %8, align 8, !tbaa !9
  %396 = load double, ptr %13, align 8, !tbaa !9
  %397 = fmul double %395, %396
  %398 = load double, ptr %18, align 8, !tbaa !9
  %399 = fneg double %397
  %400 = call double @llvm.fmuladd.f64(double %399, double %398, double %394)
  %401 = load double, ptr %5, align 8, !tbaa !9
  %402 = load double, ptr %16, align 8, !tbaa !9
  %403 = fmul double %401, %402
  %404 = load double, ptr %18, align 8, !tbaa !9
  %405 = call double @llvm.fmuladd.f64(double %403, double %404, double %400)
  %406 = load double, ptr %6, align 8, !tbaa !9
  %407 = load double, ptr %13, align 8, !tbaa !9
  %408 = fmul double %406, %407
  %409 = load double, ptr %20, align 8, !tbaa !9
  %410 = call double @llvm.fmuladd.f64(double %408, double %409, double %405)
  %411 = load double, ptr %5, align 8, !tbaa !9
  %412 = load double, ptr %14, align 8, !tbaa !9
  %413 = fmul double %411, %412
  %414 = load double, ptr %20, align 8, !tbaa !9
  %415 = fneg double %413
  %416 = call double @llvm.fmuladd.f64(double %415, double %414, double %410)
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds double, ptr %417, i64 9
  store double %416, ptr %418, align 8, !tbaa !9
  %419 = load double, ptr %8, align 8, !tbaa !9
  %420 = fneg double %419
  %421 = load double, ptr %10, align 8, !tbaa !9
  %422 = fmul double %420, %421
  %423 = load double, ptr %17, align 8, !tbaa !9
  %424 = load double, ptr %6, align 8, !tbaa !9
  %425 = load double, ptr %12, align 8, !tbaa !9
  %426 = fmul double %424, %425
  %427 = load double, ptr %17, align 8, !tbaa !9
  %428 = fmul double %426, %427
  %429 = call double @llvm.fmuladd.f64(double %422, double %423, double %428)
  %430 = load double, ptr %8, align 8, !tbaa !9
  %431 = load double, ptr %9, align 8, !tbaa !9
  %432 = fmul double %430, %431
  %433 = load double, ptr %18, align 8, !tbaa !9
  %434 = call double @llvm.fmuladd.f64(double %432, double %433, double %429)
  %435 = load double, ptr %5, align 8, !tbaa !9
  %436 = load double, ptr %12, align 8, !tbaa !9
  %437 = fmul double %435, %436
  %438 = load double, ptr %18, align 8, !tbaa !9
  %439 = fneg double %437
  %440 = call double @llvm.fmuladd.f64(double %439, double %438, double %434)
  %441 = load double, ptr %6, align 8, !tbaa !9
  %442 = load double, ptr %9, align 8, !tbaa !9
  %443 = fmul double %441, %442
  %444 = load double, ptr %20, align 8, !tbaa !9
  %445 = fneg double %443
  %446 = call double @llvm.fmuladd.f64(double %445, double %444, double %440)
  %447 = load double, ptr %5, align 8, !tbaa !9
  %448 = load double, ptr %10, align 8, !tbaa !9
  %449 = fmul double %447, %448
  %450 = load double, ptr %20, align 8, !tbaa !9
  %451 = call double @llvm.fmuladd.f64(double %449, double %450, double %446)
  %452 = load ptr, ptr %4, align 8, !tbaa !5
  %453 = getelementptr inbounds double, ptr %452, i64 10
  store double %451, ptr %453, align 8, !tbaa !9
  %454 = load double, ptr %8, align 8, !tbaa !9
  %455 = load double, ptr %10, align 8, !tbaa !9
  %456 = fmul double %454, %455
  %457 = load double, ptr %13, align 8, !tbaa !9
  %458 = load double, ptr %6, align 8, !tbaa !9
  %459 = load double, ptr %12, align 8, !tbaa !9
  %460 = fmul double %458, %459
  %461 = load double, ptr %13, align 8, !tbaa !9
  %462 = fmul double %460, %461
  %463 = fneg double %462
  %464 = call double @llvm.fmuladd.f64(double %456, double %457, double %463)
  %465 = load double, ptr %8, align 8, !tbaa !9
  %466 = load double, ptr %9, align 8, !tbaa !9
  %467 = fmul double %465, %466
  %468 = load double, ptr %14, align 8, !tbaa !9
  %469 = fneg double %467
  %470 = call double @llvm.fmuladd.f64(double %469, double %468, double %464)
  %471 = load double, ptr %5, align 8, !tbaa !9
  %472 = load double, ptr %12, align 8, !tbaa !9
  %473 = fmul double %471, %472
  %474 = load double, ptr %14, align 8, !tbaa !9
  %475 = call double @llvm.fmuladd.f64(double %473, double %474, double %470)
  %476 = load double, ptr %6, align 8, !tbaa !9
  %477 = load double, ptr %9, align 8, !tbaa !9
  %478 = fmul double %476, %477
  %479 = load double, ptr %16, align 8, !tbaa !9
  %480 = call double @llvm.fmuladd.f64(double %478, double %479, double %475)
  %481 = load double, ptr %5, align 8, !tbaa !9
  %482 = load double, ptr %10, align 8, !tbaa !9
  %483 = fmul double %481, %482
  %484 = load double, ptr %16, align 8, !tbaa !9
  %485 = fneg double %483
  %486 = call double @llvm.fmuladd.f64(double %485, double %484, double %480)
  %487 = load ptr, ptr %4, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %487, i64 11
  store double %486, ptr %488, align 8, !tbaa !9
  %489 = load double, ptr %11, align 8, !tbaa !9
  %490 = load double, ptr %14, align 8, !tbaa !9
  %491 = fmul double %489, %490
  %492 = load double, ptr %17, align 8, !tbaa !9
  %493 = load double, ptr %10, align 8, !tbaa !9
  %494 = load double, ptr %15, align 8, !tbaa !9
  %495 = fmul double %493, %494
  %496 = load double, ptr %17, align 8, !tbaa !9
  %497 = fmul double %495, %496
  %498 = fneg double %497
  %499 = call double @llvm.fmuladd.f64(double %491, double %492, double %498)
  %500 = load double, ptr %11, align 8, !tbaa !9
  %501 = load double, ptr %13, align 8, !tbaa !9
  %502 = fmul double %500, %501
  %503 = load double, ptr %18, align 8, !tbaa !9
  %504 = fneg double %502
  %505 = call double @llvm.fmuladd.f64(double %504, double %503, double %499)
  %506 = load double, ptr %9, align 8, !tbaa !9
  %507 = load double, ptr %15, align 8, !tbaa !9
  %508 = fmul double %506, %507
  %509 = load double, ptr %18, align 8, !tbaa !9
  %510 = call double @llvm.fmuladd.f64(double %508, double %509, double %505)
  %511 = load double, ptr %10, align 8, !tbaa !9
  %512 = load double, ptr %13, align 8, !tbaa !9
  %513 = fmul double %511, %512
  %514 = load double, ptr %19, align 8, !tbaa !9
  %515 = call double @llvm.fmuladd.f64(double %513, double %514, double %510)
  %516 = load double, ptr %9, align 8, !tbaa !9
  %517 = load double, ptr %14, align 8, !tbaa !9
  %518 = fmul double %516, %517
  %519 = load double, ptr %19, align 8, !tbaa !9
  %520 = fneg double %518
  %521 = call double @llvm.fmuladd.f64(double %520, double %519, double %515)
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = getelementptr inbounds double, ptr %522, i64 12
  store double %521, ptr %523, align 8, !tbaa !9
  %524 = load double, ptr %7, align 8, !tbaa !9
  %525 = fneg double %524
  %526 = load double, ptr %14, align 8, !tbaa !9
  %527 = fmul double %525, %526
  %528 = load double, ptr %17, align 8, !tbaa !9
  %529 = load double, ptr %6, align 8, !tbaa !9
  %530 = load double, ptr %15, align 8, !tbaa !9
  %531 = fmul double %529, %530
  %532 = load double, ptr %17, align 8, !tbaa !9
  %533 = fmul double %531, %532
  %534 = call double @llvm.fmuladd.f64(double %527, double %528, double %533)
  %535 = load double, ptr %7, align 8, !tbaa !9
  %536 = load double, ptr %13, align 8, !tbaa !9
  %537 = fmul double %535, %536
  %538 = load double, ptr %18, align 8, !tbaa !9
  %539 = call double @llvm.fmuladd.f64(double %537, double %538, double %534)
  %540 = load double, ptr %5, align 8, !tbaa !9
  %541 = load double, ptr %15, align 8, !tbaa !9
  %542 = fmul double %540, %541
  %543 = load double, ptr %18, align 8, !tbaa !9
  %544 = fneg double %542
  %545 = call double @llvm.fmuladd.f64(double %544, double %543, double %539)
  %546 = load double, ptr %6, align 8, !tbaa !9
  %547 = load double, ptr %13, align 8, !tbaa !9
  %548 = fmul double %546, %547
  %549 = load double, ptr %19, align 8, !tbaa !9
  %550 = fneg double %548
  %551 = call double @llvm.fmuladd.f64(double %550, double %549, double %545)
  %552 = load double, ptr %5, align 8, !tbaa !9
  %553 = load double, ptr %14, align 8, !tbaa !9
  %554 = fmul double %552, %553
  %555 = load double, ptr %19, align 8, !tbaa !9
  %556 = call double @llvm.fmuladd.f64(double %554, double %555, double %551)
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = getelementptr inbounds double, ptr %557, i64 13
  store double %556, ptr %558, align 8, !tbaa !9
  %559 = load double, ptr %7, align 8, !tbaa !9
  %560 = load double, ptr %10, align 8, !tbaa !9
  %561 = fmul double %559, %560
  %562 = load double, ptr %17, align 8, !tbaa !9
  %563 = load double, ptr %6, align 8, !tbaa !9
  %564 = load double, ptr %11, align 8, !tbaa !9
  %565 = fmul double %563, %564
  %566 = load double, ptr %17, align 8, !tbaa !9
  %567 = fmul double %565, %566
  %568 = fneg double %567
  %569 = call double @llvm.fmuladd.f64(double %561, double %562, double %568)
  %570 = load double, ptr %7, align 8, !tbaa !9
  %571 = load double, ptr %9, align 8, !tbaa !9
  %572 = fmul double %570, %571
  %573 = load double, ptr %18, align 8, !tbaa !9
  %574 = fneg double %572
  %575 = call double @llvm.fmuladd.f64(double %574, double %573, double %569)
  %576 = load double, ptr %5, align 8, !tbaa !9
  %577 = load double, ptr %11, align 8, !tbaa !9
  %578 = fmul double %576, %577
  %579 = load double, ptr %18, align 8, !tbaa !9
  %580 = call double @llvm.fmuladd.f64(double %578, double %579, double %575)
  %581 = load double, ptr %6, align 8, !tbaa !9
  %582 = load double, ptr %9, align 8, !tbaa !9
  %583 = fmul double %581, %582
  %584 = load double, ptr %19, align 8, !tbaa !9
  %585 = call double @llvm.fmuladd.f64(double %583, double %584, double %580)
  %586 = load double, ptr %5, align 8, !tbaa !9
  %587 = load double, ptr %10, align 8, !tbaa !9
  %588 = fmul double %586, %587
  %589 = load double, ptr %19, align 8, !tbaa !9
  %590 = fneg double %588
  %591 = call double @llvm.fmuladd.f64(double %590, double %589, double %585)
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds double, ptr %592, i64 14
  store double %591, ptr %593, align 8, !tbaa !9
  %594 = load double, ptr %7, align 8, !tbaa !9
  %595 = fneg double %594
  %596 = load double, ptr %10, align 8, !tbaa !9
  %597 = fmul double %595, %596
  %598 = load double, ptr %13, align 8, !tbaa !9
  %599 = load double, ptr %6, align 8, !tbaa !9
  %600 = load double, ptr %11, align 8, !tbaa !9
  %601 = fmul double %599, %600
  %602 = load double, ptr %13, align 8, !tbaa !9
  %603 = fmul double %601, %602
  %604 = call double @llvm.fmuladd.f64(double %597, double %598, double %603)
  %605 = load double, ptr %7, align 8, !tbaa !9
  %606 = load double, ptr %9, align 8, !tbaa !9
  %607 = fmul double %605, %606
  %608 = load double, ptr %14, align 8, !tbaa !9
  %609 = call double @llvm.fmuladd.f64(double %607, double %608, double %604)
  %610 = load double, ptr %5, align 8, !tbaa !9
  %611 = load double, ptr %11, align 8, !tbaa !9
  %612 = fmul double %610, %611
  %613 = load double, ptr %14, align 8, !tbaa !9
  %614 = fneg double %612
  %615 = call double @llvm.fmuladd.f64(double %614, double %613, double %609)
  %616 = load double, ptr %6, align 8, !tbaa !9
  %617 = load double, ptr %9, align 8, !tbaa !9
  %618 = fmul double %616, %617
  %619 = load double, ptr %15, align 8, !tbaa !9
  %620 = fneg double %618
  %621 = call double @llvm.fmuladd.f64(double %620, double %619, double %615)
  %622 = load double, ptr %5, align 8, !tbaa !9
  %623 = load double, ptr %10, align 8, !tbaa !9
  %624 = fmul double %622, %623
  %625 = load double, ptr %15, align 8, !tbaa !9
  %626 = call double @llvm.fmuladd.f64(double %624, double %625, double %621)
  %627 = load ptr, ptr %4, align 8, !tbaa !5
  %628 = getelementptr inbounds double, ptr %627, i64 15
  store double %626, ptr %628, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  ret void
}

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

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

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


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

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable
define dso_local void @_Z11adjoint_4x4PdS_(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1) local_unnamed_addr #0 {
  %3 = load double, ptr %0, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 8
  %5 = load double, ptr %4, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  %7 = load double, ptr %6, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %0, i64 24
  %9 = load double, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %0, i64 32
  %11 = load double, ptr %10, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %0, i64 40
  %13 = load double, ptr %12, align 8, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  %15 = load double, ptr %14, align 8, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %0, i64 56
  %17 = load <2 x double>, ptr %16, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %0, i64 72
  %19 = load double, ptr %18, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %0, i64 80
  %21 = load double, ptr %20, align 8, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %0, i64 88
  %23 = load double, ptr %22, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %0, i64 96
  %25 = load double, ptr %24, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %0, i64 104
  %27 = load double, ptr %26, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %0, i64 112
  %29 = load double, ptr %28, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %0, i64 120
  %31 = load double, ptr %30, align 8, !tbaa !5
  %32 = extractelement <2 x double> %17, i64 0
  %33 = fneg double %32
  %34 = fmul double %15, %23
  %35 = fmul double %32, %19
  %36 = fmul double %13, %23
  %37 = fneg double %36
  %38 = fmul double %13, %21
  %39 = fmul double %7, %23
  %40 = fneg double %39
  %41 = fmul double %5, %23
  %42 = fmul double %7, %19
  %43 = fmul double %5, %21
  %44 = fneg double %43
  %45 = insertelement <2 x double> poison, double %21, i64 0
  %46 = insertelement <2 x double> %45, double %9, i64 1
  %47 = insertelement <2 x double> poison, double %33, i64 0
  %48 = insertelement <2 x double> %47, double %21, i64 1
  %49 = fmul <2 x double> %46, %48
  %50 = insertelement <2 x double> poison, double %34, i64 0
  %51 = insertelement <2 x double> %50, double %40, i64 1
  %52 = insertelement <2 x double> poison, double %27, i64 0
  %53 = shufflevector <2 x double> %52, <2 x double> poison, <2 x i32> zeroinitializer
  %54 = fmul <2 x double> %51, %53
  %55 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %49, <2 x double> %53, <2 x double> %54)
  %56 = insertelement <2 x double> poison, double %29, i64 0
  %57 = shufflevector <2 x double> %56, <2 x double> poison, <2 x i32> zeroinitializer
  %58 = insertelement <2 x double> poison, double %37, i64 0
  %59 = insertelement <2 x double> %58, double %41, i64 1
  %60 = insertelement <2 x double> poison, double %31, i64 0
  %61 = shufflevector <2 x double> %60, <2 x double> poison, <2 x i32> zeroinitializer
  %62 = insertelement <2 x double> poison, double %38, i64 0
  %63 = insertelement <2 x double> %62, double %44, i64 1
  %64 = fneg double %9
  %65 = fmul double %7, %32
  %66 = fmul double %5, %32
  %67 = fneg double %66
  %68 = fmul double %5, %15
  %69 = getelementptr inbounds i8, ptr %1, i64 16
  %70 = fneg double %65
  %71 = fneg double %68
  %72 = insertelement <2 x double> poison, double %15, i64 0
  %73 = insertelement <2 x double> %72, double %9, i64 1
  %74 = insertelement <2 x double> poison, double %64, i64 0
  %75 = insertelement <2 x double> %74, double %15, i64 1
  %76 = fmul <2 x double> %73, %75
  %77 = insertelement <2 x double> poison, double %65, i64 0
  %78 = insertelement <2 x double> %77, double %70, i64 1
  %79 = insertelement <2 x double> %52, double %19, i64 1
  %80 = fmul <2 x double> %78, %79
  %81 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %76, <2 x double> %79, <2 x double> %80)
  %82 = insertelement <2 x double> %56, double %21, i64 1
  %83 = insertelement <2 x double> poison, double %67, i64 0
  %84 = insertelement <2 x double> %83, double %66, i64 1
  %85 = insertelement <2 x double> %60, double %23, i64 1
  %86 = insertelement <2 x double> poison, double %68, i64 0
  %87 = insertelement <2 x double> %86, double %71, i64 1
  %88 = fneg double %34
  %89 = extractelement <2 x double> %17, i64 1
  %90 = fmul double %32, %89
  %91 = fneg double %90
  %92 = fmul double %11, %23
  %93 = fmul double %15, %89
  %94 = fmul double %11, %21
  %95 = fneg double %94
  %96 = getelementptr inbounds i8, ptr %1, i64 32
  %97 = fmul double %9, %89
  %98 = fmul double %3, %23
  %99 = fneg double %98
  %100 = fmul double %7, %89
  %101 = fneg double %100
  %102 = fmul double %3, %21
  %103 = insertelement <2 x double> %17, double %21, i64 1
  %104 = insertelement <2 x double> poison, double %21, i64 0
  %105 = insertelement <2 x double> %104, double %64, i64 1
  %106 = fmul <2 x double> %103, %105
  %107 = insertelement <2 x double> poison, double %25, i64 0
  %108 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> zeroinitializer
  %109 = insertelement <2 x double> poison, double %88, i64 0
  %110 = insertelement <2 x double> %109, double %39, i64 1
  %111 = fmul <2 x double> %108, %110
  %112 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %106, <2 x double> %108, <2 x double> %111)
  %113 = insertelement <2 x double> poison, double %91, i64 0
  %114 = insertelement <2 x double> %113, double %97, i64 1
  %115 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %114, <2 x double> %57, <2 x double> %112)
  %116 = insertelement <2 x double> poison, double %92, i64 0
  %117 = insertelement <2 x double> %116, double %99, i64 1
  %118 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %117, <2 x double> %57, <2 x double> %115)
  %119 = insertelement <2 x double> poison, double %93, i64 0
  %120 = insertelement <2 x double> %119, double %101, i64 1
  %121 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %120, <2 x double> %61, <2 x double> %118)
  %122 = insertelement <2 x double> poison, double %95, i64 0
  %123 = insertelement <2 x double> %122, double %102, i64 1
  %124 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %123, <2 x double> %61, <2 x double> %121)
  store <2 x double> %124, ptr %96, align 8, !tbaa !5
  %125 = shufflevector <2 x double> %76, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %126 = fmul double %9, %11
  %127 = fneg double %126
  %128 = fmul double %3, %32
  %129 = fmul double %7, %11
  %130 = fmul double %3, %15
  %131 = fneg double %130
  %132 = getelementptr inbounds i8, ptr %1, i64 48
  %133 = fneg double %128
  %134 = fneg double %129
  %135 = insertelement <2 x double> %17, double %25, i64 0
  %136 = insertelement <2 x double> poison, double %70, i64 0
  %137 = insertelement <2 x double> %136, double %65, i64 1
  %138 = fmul <2 x double> %135, %137
  %139 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %125, <2 x double> %135, <2 x double> %138)
  %140 = insertelement <2 x double> poison, double %127, i64 0
  %141 = insertelement <2 x double> %140, double %126, i64 1
  %142 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %141, <2 x double> %82, <2 x double> %139)
  %143 = insertelement <2 x double> poison, double %128, i64 0
  %144 = insertelement <2 x double> %143, double %133, i64 1
  %145 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %144, <2 x double> %82, <2 x double> %142)
  %146 = insertelement <2 x double> poison, double %129, i64 0
  %147 = insertelement <2 x double> %146, double %134, i64 1
  %148 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %147, <2 x double> %85, <2 x double> %145)
  %149 = insertelement <2 x double> poison, double %131, i64 0
  %150 = insertelement <2 x double> %149, double %130, i64 1
  %151 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %150, <2 x double> %85, <2 x double> %148)
  store <2 x double> %151, ptr %132, align 8, !tbaa !5
  %152 = fneg double %92
  %153 = fmul double %13, %89
  %154 = fneg double %153
  %155 = fmul double %11, %19
  %156 = getelementptr inbounds i8, ptr %1, i64 64
  %157 = fneg double %41
  %158 = fneg double %97
  %159 = fmul double %5, %89
  %160 = fmul double %3, %19
  %161 = fneg double %160
  %162 = insertelement <2 x double> poison, double %19, i64 0
  %163 = insertelement <2 x double> %162, double %9, i64 1
  %164 = insertelement <2 x double> poison, double %33, i64 0
  %165 = insertelement <2 x double> %164, double %19, i64 1
  %166 = fmul <2 x double> %163, %165
  %167 = fneg <2 x double> %166
  %168 = insertelement <2 x double> %167, double %35, i64 0
  %169 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %168, <2 x double> %57, <2 x double> %55)
  %170 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %59, <2 x double> %57, <2 x double> %169)
  %171 = insertelement <2 x double> poison, double %36, i64 0
  %172 = insertelement <2 x double> %171, double %157, i64 1
  %173 = fmul <2 x double> %172, %108
  %174 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %166, <2 x double> %108, <2 x double> %173)
  %175 = insertelement <2 x double> poison, double %90, i64 0
  %176 = insertelement <2 x double> %175, double %158, i64 1
  %177 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %176, <2 x double> %53, <2 x double> %174)
  %178 = insertelement <2 x double> poison, double %152, i64 0
  %179 = insertelement <2 x double> %178, double %98, i64 1
  %180 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %179, <2 x double> %53, <2 x double> %177)
  %181 = insertelement <2 x double> poison, double %154, i64 0
  %182 = insertelement <2 x double> %181, double %159, i64 1
  %183 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %182, <2 x double> %61, <2 x double> %180)
  %184 = insertelement <2 x double> poison, double %155, i64 0
  %185 = insertelement <2 x double> %184, double %161, i64 1
  %186 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %185, <2 x double> %61, <2 x double> %183)
  store <2 x double> %186, ptr %156, align 8, !tbaa !5
  %187 = fmul double %5, %11
  %188 = fneg double %187
  %189 = fmul double %3, %13
  %190 = getelementptr inbounds i8, ptr %1, i64 80
  %191 = fneg double %189
  %192 = insertelement <2 x double> poison, double %13, i64 0
  %193 = insertelement <2 x double> %192, double %9, i64 1
  %194 = insertelement <2 x double> poison, double %64, i64 0
  %195 = insertelement <2 x double> %194, double %13, i64 1
  %196 = fmul <2 x double> %193, %195
  %197 = shufflevector <2 x double> %196, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %198 = fneg <2 x double> %196
  %199 = shufflevector <2 x double> %197, <2 x double> %198, <2 x i32> <i32 0, i32 3>
  %200 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %199, <2 x double> %82, <2 x double> %81)
  %201 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %84, <2 x double> %82, <2 x double> %200)
  %202 = insertelement <2 x double> poison, double %66, i64 0
  %203 = insertelement <2 x double> %202, double %67, i64 1
  %204 = fmul <2 x double> %203, %135
  %205 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %196, <2 x double> %135, <2 x double> %204)
  %206 = insertelement <2 x double> poison, double %126, i64 0
  %207 = insertelement <2 x double> %206, double %127, i64 1
  %208 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %207, <2 x double> %79, <2 x double> %205)
  %209 = insertelement <2 x double> poison, double %133, i64 0
  %210 = insertelement <2 x double> %209, double %128, i64 1
  %211 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %210, <2 x double> %79, <2 x double> %208)
  %212 = insertelement <2 x double> poison, double %188, i64 0
  %213 = insertelement <2 x double> %212, double %187, i64 1
  %214 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %213, <2 x double> %85, <2 x double> %211)
  %215 = insertelement <2 x double> poison, double %189, i64 0
  %216 = insertelement <2 x double> %215, double %191, i64 1
  %217 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %216, <2 x double> %85, <2 x double> %214)
  store <2 x double> %217, ptr %190, align 8, !tbaa !5
  %218 = fneg double %38
  %219 = fneg double %93
  %220 = fneg double %155
  %221 = getelementptr inbounds i8, ptr %1, i64 96
  %222 = fneg double %7
  %223 = fneg double %102
  %224 = fneg double %159
  %225 = insertelement <2 x double> %72, double %19, i64 1
  %226 = insertelement <2 x double> poison, double %19, i64 0
  %227 = insertelement <2 x double> %226, double %222, i64 1
  %228 = fmul <2 x double> %225, %227
  %229 = extractelement <2 x double> %228, i64 0
  %230 = fneg double %229
  %231 = insertelement <2 x double> poison, double %230, i64 0
  %232 = insertelement <2 x double> %231, double %42, i64 1
  %233 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %232, <2 x double> %61, <2 x double> %170)
  %234 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %63, <2 x double> %61, <2 x double> %233)
  store <2 x double> %234, ptr %1, align 8, !tbaa !5
  %235 = insertelement <2 x double> poison, double %218, i64 0
  %236 = insertelement <2 x double> %235, double %43, i64 1
  %237 = fmul <2 x double> %108, %236
  %238 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %228, <2 x double> %108, <2 x double> %237)
  %239 = insertelement <2 x double> poison, double %219, i64 0
  %240 = insertelement <2 x double> %239, double %100, i64 1
  %241 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %240, <2 x double> %53, <2 x double> %238)
  %242 = insertelement <2 x double> poison, double %94, i64 0
  %243 = insertelement <2 x double> %242, double %223, i64 1
  %244 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %243, <2 x double> %53, <2 x double> %241)
  %245 = insertelement <2 x double> poison, double %153, i64 0
  %246 = insertelement <2 x double> %245, double %224, i64 1
  %247 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %246, <2 x double> %57, <2 x double> %244)
  %248 = insertelement <2 x double> poison, double %220, i64 0
  %249 = insertelement <2 x double> %248, double %160, i64 1
  %250 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %249, <2 x double> %57, <2 x double> %247)
  store <2 x double> %250, ptr %221, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %1, i64 112
  %252 = insertelement <2 x double> poison, double %7, i64 0
  %253 = insertelement <2 x double> %252, double %13, i64 1
  %254 = insertelement <2 x double> poison, double %13, i64 0
  %255 = insertelement <2 x double> %254, double %222, i64 1
  %256 = fmul <2 x double> %253, %255
  %257 = extractelement <2 x double> %256, i64 0
  %258 = fneg double %257
  %259 = insertelement <2 x double> poison, double %258, i64 0
  %260 = shufflevector <2 x double> %259, <2 x double> %256, <2 x i32> <i32 0, i32 2>
  %261 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %260, <2 x double> %85, <2 x double> %201)
  %262 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %87, <2 x double> %85, <2 x double> %261)
  store <2 x double> %262, ptr %69, align 8, !tbaa !5
  %263 = insertelement <2 x double> poison, double %71, i64 0
  %264 = insertelement <2 x double> %263, double %68, i64 1
  %265 = fmul <2 x double> %135, %264
  %266 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %256, <2 x double> %135, <2 x double> %265)
  %267 = insertelement <2 x double> poison, double %134, i64 0
  %268 = insertelement <2 x double> %267, double %129, i64 1
  %269 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %268, <2 x double> %79, <2 x double> %266)
  %270 = insertelement <2 x double> poison, double %130, i64 0
  %271 = insertelement <2 x double> %270, double %131, i64 1
  %272 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %271, <2 x double> %79, <2 x double> %269)
  %273 = insertelement <2 x double> poison, double %187, i64 0
  %274 = insertelement <2 x double> %273, double %188, i64 1
  %275 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %274, <2 x double> %82, <2 x double> %272)
  %276 = insertelement <2 x double> poison, double %191, i64 0
  %277 = insertelement <2 x double> %276, double %189, i64 1
  %278 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %277, <2 x double> %82, <2 x double> %275)
  store <2 x double> %278, ptr %251, align 8, !tbaa !5
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #1

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

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

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


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