; LLVM IR from ravireddy07/cpp-book :: src/Code-Chef/Feb2021-Long/SUMXOR2.ll (Z6getMulRSt6vectorIxSaIxEES2_x)

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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl" }
%"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl" = type { %"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl_data" }
%"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.base = type { double, double }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::allocator.2" = type { i8 }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; 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
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8checkXORx(i64 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zml4baseS_(double, double, double, double) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zmi4baseS_(double, double, double, double) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zpl4baseS_(double, double, double, double) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_Z6getMulRSt6vectorIxSaIxEES2_x(ptr dead_on_unwind noalias writable sret(%"class.std::vector.0") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %struct.base, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %struct.base, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca %struct.base, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %36 = alloca %struct.base, align 8
  %37 = alloca double, align 8
  %38 = alloca %struct.base, align 8
  %39 = alloca %struct.base, align 8
  %40 = alloca %struct.base, align 8
  %41 = alloca %struct.base, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca %struct.base, align 8
  %45 = alloca %struct.base, align 8
  %46 = alloca %struct.base, align 8
  %47 = alloca %struct.base, align 8
  %48 = alloca %struct.base, align 8
  %49 = alloca %struct.base, align 8
  %50 = alloca %struct.base, align 8
  %51 = alloca %struct.base, align 8
  %52 = alloca %struct.base, align 8
  %53 = alloca %struct.base, align 8
  %54 = alloca %struct.base, align 8
  %55 = alloca %struct.base, align 8
  %56 = alloca %struct.base, align 8
  %57 = alloca %struct.base, align 8
  %58 = alloca %struct.base, align 8
  %59 = alloca %struct.base, align 8
  %60 = alloca %struct.base, align 8
  %61 = alloca %struct.base, align 8
  %62 = alloca %struct.base, align 8
  %63 = alloca %struct.base, align 8
  %64 = alloca %struct.base, align 8
  %65 = alloca %struct.base, align 8
  %66 = alloca %struct.base, align 8
  %67 = alloca %struct.base, align 8
  %68 = alloca %struct.base, align 8
  %69 = alloca %struct.base, align 8
  %70 = alloca %struct.base, align 8
  %71 = alloca %struct.base, align 8
  %72 = alloca %struct.base, align 8
  %73 = alloca %struct.base, align 8
  %74 = alloca %struct.base, align 8
  %75 = alloca %struct.base, align 8
  %76 = alloca %struct.base, align 8
  %77 = alloca %struct.base, align 8
  %78 = alloca %struct.base, align 8
  %79 = alloca %struct.base, align 8
  %80 = alloca %struct.base, align 8
  %81 = alloca %struct.base, align 8
  %82 = alloca %struct.base, align 8
  %83 = alloca %struct.base, align 8
  %84 = alloca %struct.base, align 8
  %85 = alloca %struct.base, align 8
  %86 = alloca %struct.base, align 8
  %87 = alloca %struct.base, align 8
  %88 = alloca %struct.base, align 8
  %89 = alloca %struct.base, align 8
  %90 = alloca %struct.base, align 8
  %91 = alloca %struct.base, align 8
  %92 = alloca %struct.base, align 8
  %93 = alloca %struct.base, align 8
  %94 = alloca %struct.base, align 8
  %95 = alloca %struct.base, align 8
  %96 = alloca %struct.base, align 8
  %97 = alloca %struct.base, align 8
  %98 = alloca %struct.base, align 8
  %99 = alloca %struct.base, align 8
  %100 = alloca %struct.base, align 8
  %101 = alloca %struct.base, align 8
  %102 = alloca %struct.base, align 8
  %103 = alloca %struct.base, align 8
  %104 = alloca %struct.base, align 8
  %105 = alloca %struct.base, align 8
  %106 = alloca %struct.base, align 8
  %107 = alloca %struct.base, align 8
  %108 = alloca %struct.base, align 8
  %109 = alloca %struct.base, align 8
  %110 = alloca %struct.base, align 8
  %111 = alloca %struct.base, align 8
  %112 = alloca %struct.base, align 8
  %113 = alloca %struct.base, align 8
  %114 = alloca %struct.base, align 8
  %115 = alloca %struct.base, align 8
  %116 = alloca %struct.base, align 8
  %117 = alloca %struct.base, align 8
  %118 = alloca %struct.base, align 8
  %119 = alloca %struct.base, align 8
  %120 = alloca i1, align 1
  %121 = alloca %"class.std::allocator.2", align 1
  %122 = alloca i64, align 8
  %123 = alloca i64, align 8
  %124 = alloca i64, align 8
  %125 = alloca i64, align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i64 %3, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #5
  %128 = load ptr, ptr %7, align 8, !tbaa !5
  %129 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %128) #5
  %130 = add i64 %127, %129
  %131 = sub i64 %130, 1
  store i64 %131, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  store i64 0, ptr %10, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %139, %4
  %133 = load i64, ptr %10, align 8, !tbaa !9
  %134 = trunc i64 %133 to i32
  %135 = shl i32 1, %134
  %136 = sext i32 %135 to i64
  %137 = load i64, ptr %9, align 8, !tbaa !9
  %138 = icmp slt i64 %136, %137
  br i1 %138, label %139, label %142

139:                                              ; preds = %132
  %140 = load i64, ptr %10, align 8, !tbaa !9
  %141 = add nsw i64 %140, 1
  store i64 %141, ptr %10, align 8, !tbaa !9
  br label %132, !llvm.loop !11

142:                                              ; preds = %132
  %143 = load i64, ptr %10, align 8, !tbaa !9
  call void @_Z8checkXORx(i64 noundef %143)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  %144 = load i64, ptr %10, align 8, !tbaa !9
  %145 = trunc i64 %144 to i32
  %146 = shl i32 1, %145
  %147 = sext i32 %146 to i64
  store i64 %147, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #5
  call void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #5
  call void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %148 = load i64, ptr %11, align 8, !tbaa !9
  %149 = call noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %150 = icmp sgt i64 %148, %149
  br i1 %150, label %151, label %158

151:                                              ; preds = %142
  %152 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %152)
          to label %153 unwind label %154

153:                                              ; preds = %151
  br label %158

154:                                              ; preds = %293, %212, %206, %151
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %14, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %15, align 4
  br label %974

158:                                              ; preds = %153, %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %182, %158
  %160 = load i64, ptr %16, align 8, !tbaa !9
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #5
  %163 = icmp slt i64 %160, %162
  br i1 %163, label %165, label %164

164:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %189

165:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = load i64, ptr %16, align 8, !tbaa !9
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %167) #5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = srem i64 %169, 998244353
  %171 = add nsw i64 %170, 998244353
  %172 = srem i64 %171, 998244353
  store i64 %172, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #5
  %173 = load i64, ptr %17, align 8, !tbaa !9
  %174 = and i64 %173, 32767
  %175 = sitofp i64 %174 to double
  %176 = load i64, ptr %17, align 8, !tbaa !9
  %177 = ashr i64 %176, 15
  %178 = sitofp i64 %177 to double
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %18, double noundef %175, double noundef %178)
          to label %179 unwind label %185

179:                                              ; preds = %165
  %180 = load i64, ptr %16, align 8, !tbaa !9
  %181 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %180) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %181, ptr align 8 %18, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %182

182:                                              ; preds = %179
  %183 = load i64, ptr %16, align 8, !tbaa !9
  %184 = add nsw i64 %183, 1
  store i64 %184, ptr %16, align 8, !tbaa !9
  br label %159, !llvm.loop !16

185:                                              ; preds = %165
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %14, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %974

189:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %190 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %191 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %20, i32 0, i32 0
  store ptr %190, ptr %191, align 8
  %192 = load ptr, ptr %6, align 8, !tbaa !5
  %193 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %192) #5
  %194 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %20, i64 noundef %193) #5
  %195 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %194, ptr %195, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %196 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %197 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %196, ptr %197, align 8
  %198 = load i64, ptr %11, align 8, !tbaa !9
  %199 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %22, i64 noundef %198) #5
  %200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  store ptr %199, ptr %200, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %23, double noundef 0.000000e+00, double noundef 0.000000e+00)
          to label %201 unwind label %215

201:                                              ; preds = %189
  %202 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8
  %204 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %203, ptr %205, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %206 unwind label %215

206:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %207 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %207)
          to label %208 unwind label %154

208:                                              ; preds = %206
  %209 = load i64, ptr %11, align 8, !tbaa !9
  %210 = call noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %211 = icmp sgt i64 %209, %210
  br i1 %211, label %212, label %219

212:                                              ; preds = %208
  %213 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %213)
          to label %214 unwind label %154

214:                                              ; preds = %212
  br label %219

215:                                              ; preds = %201, %189
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %14, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %974

219:                                              ; preds = %214, %208
  %220 = load i64, ptr %8, align 8, !tbaa !9
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %222, label %245

222:                                              ; preds = %219
  %223 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %224 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %223, ptr %224, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %225 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  %226 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %225, ptr %226, align 8
  %227 = load i64, ptr %11, align 8, !tbaa !9
  %228 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %26, i64 noundef %227) #5
  %229 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %228, ptr %229, align 8
  %230 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %231 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %230, ptr %231, align 8
  %232 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8
  %234 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  %235 = load ptr, ptr %234, align 8
  %236 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  %237 = load ptr, ptr %236, align 8
  %238 = invoke ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_(ptr %233, ptr %235, ptr %237)
          to label %239 unwind label %241

239:                                              ; preds = %222
  %240 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %238, ptr %240, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %300

241:                                              ; preds = %222
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %14, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  br label %974

245:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %246

246:                                              ; preds = %269, %245
  %247 = load i64, ptr %29, align 8, !tbaa !9
  %248 = load ptr, ptr %7, align 8, !tbaa !5
  %249 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %248) #5
  %250 = icmp slt i64 %247, %249
  br i1 %250, label %252, label %251

251:                                              ; preds = %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br label %276

252:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %253 = load ptr, ptr %7, align 8, !tbaa !5
  %254 = load i64, ptr %29, align 8, !tbaa !9
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %254) #5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = srem i64 %256, 998244353
  %258 = add nsw i64 %257, 998244353
  %259 = srem i64 %258, 998244353
  store i64 %259, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  %260 = load i64, ptr %30, align 8, !tbaa !9
  %261 = and i64 %260, 32767
  %262 = sitofp i64 %261 to double
  %263 = load i64, ptr %30, align 8, !tbaa !9
  %264 = ashr i64 %263, 15
  %265 = sitofp i64 %264 to double
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %31, double noundef %262, double noundef %265)
          to label %266 unwind label %272

266:                                              ; preds = %252
  %267 = load i64, ptr %29, align 8, !tbaa !9
  %268 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %267) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %268, ptr align 8 %31, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  br label %269

269:                                              ; preds = %266
  %270 = load i64, ptr %29, align 8, !tbaa !9
  %271 = add nsw i64 %270, 1
  store i64 %271, ptr %29, align 8, !tbaa !9
  br label %246, !llvm.loop !17

272:                                              ; preds = %252
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %14, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  br label %974

276:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %277 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %278 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %33, i32 0, i32 0
  store ptr %277, ptr %278, align 8
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %279) #5
  %281 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %33, i64 noundef %280) #5
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %281, ptr %282, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %283 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  %284 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %35, i32 0, i32 0
  store ptr %283, ptr %284, align 8
  %285 = load i64, ptr %11, align 8, !tbaa !9
  %286 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %35, i64 noundef %285) #5
  %287 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %34, i32 0, i32 0
  store ptr %286, ptr %287, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #5
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %36, double noundef 0.000000e+00, double noundef 0.000000e+00)
          to label %288 unwind label %296

288:                                              ; preds = %276
  %289 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8
  %291 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %34, i32 0, i32 0
  %292 = load ptr, ptr %291, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %290, ptr %292, ptr noundef nonnull align 8 dereferenceable(16) %36)
          to label %293 unwind label %296

293:                                              ; preds = %288
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  %294 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %294)
          to label %295 unwind label %154

295:                                              ; preds = %293
  br label %300

296:                                              ; preds = %288, %276
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %14, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  br label %974

300:                                              ; preds = %295, %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %301 = load i64, ptr %11, align 8, !tbaa !9
  %302 = sitofp i64 %301 to double
  %303 = fdiv double 2.500000e-01, %302
  store double %303, ptr %37, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #5
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %38, double noundef 0.000000e+00, double noundef -1.000000e+00)
          to label %304 unwind label %317

304:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #5
  %305 = load double, ptr %37, align 8, !tbaa !14
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %39, double noundef %305, double noundef 0.000000e+00)
          to label %306 unwind label %321

306:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #5
  %307 = load double, ptr %37, align 8, !tbaa !14
  %308 = fneg double %307
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %40, double noundef 0.000000e+00, double noundef %308)
          to label %309 unwind label %325

309:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #5
  invoke void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %41, double noundef 0.000000e+00, double noundef 1.000000e+00)
          to label %310 unwind label %329

310:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  store i64 0, ptr %42, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %901, %310
  %312 = load i64, ptr %42, align 8, !tbaa !9
  %313 = load i64, ptr %11, align 8, !tbaa !9
  %314 = ashr i64 %313, 1
  %315 = icmp sle i64 %312, %314
  br i1 %315, label %333, label %316

316:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  br label %916

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %14, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %15, align 4
  br label %973

321:                                              ; preds = %304
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %14, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %15, align 4
  br label %972

325:                                              ; preds = %306
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %14, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %15, align 4
  br label %971

329:                                              ; preds = %918, %916, %309
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %14, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %15, align 4
  br label %970

333:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %334 = load i64, ptr %11, align 8, !tbaa !9
  %335 = load i64, ptr %42, align 8, !tbaa !9
  %336 = sub nsw i64 %334, %335
  %337 = load i64, ptr %11, align 8, !tbaa !9
  %338 = sub nsw i64 %337, 1
  %339 = and i64 %336, %338
  store i64 %339, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #5
  %340 = load i64, ptr %42, align 8, !tbaa !9
  %341 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %340) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %341, i64 16, i1 false), !tbaa.struct !13
  %342 = load i64, ptr %43, align 8, !tbaa !9
  %343 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %342) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %47, ptr align 8 %343, i64 16, i1 false), !tbaa.struct !13
  %344 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %345 = load double, ptr %344, align 8
  %346 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %347 = load double, ptr %346, align 8
  %348 = invoke { double, double } @_Z4conj4base(double %345, double %347)
          to label %349 unwind label %754

349:                                              ; preds = %333
  %350 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %351 = extractvalue { double, double } %348, 0
  store double %351, ptr %350, align 8
  %352 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %353 = extractvalue { double, double } %348, 1
  store double %353, ptr %352, align 8
  %354 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %355 = load double, ptr %354, align 8
  %356 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %357 = load double, ptr %356, align 8
  %358 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %359 = load double, ptr %358, align 8
  %360 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %361 = load double, ptr %360, align 8
  %362 = invoke { double, double } @_Zpl4baseS_(double %355, double %357, double %359, double %361)
          to label %363 unwind label %754

363:                                              ; preds = %349
  %364 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %365 = extractvalue { double, double } %362, 0
  store double %365, ptr %364, align 8
  %366 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %367 = extractvalue { double, double } %362, 1
  store double %367, ptr %366, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #5
  %368 = load i64, ptr %42, align 8, !tbaa !9
  %369 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %368) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %50, ptr align 8 %369, i64 16, i1 false), !tbaa.struct !13
  %370 = load i64, ptr %43, align 8, !tbaa !9
  %371 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %370) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %371, i64 16, i1 false), !tbaa.struct !13
  %372 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %373 = load double, ptr %372, align 8
  %374 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %375 = load double, ptr %374, align 8
  %376 = invoke { double, double } @_Z4conj4base(double %373, double %375)
          to label %377 unwind label %758

377:                                              ; preds = %363
  %378 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %379 = extractvalue { double, double } %376, 0
  store double %379, ptr %378, align 8
  %380 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %381 = extractvalue { double, double } %376, 1
  store double %381, ptr %380, align 8
  %382 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %383 = load double, ptr %382, align 8
  %384 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %385 = load double, ptr %384, align 8
  %386 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %387 = load double, ptr %386, align 8
  %388 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %389 = load double, ptr %388, align 8
  %390 = invoke { double, double } @_Zmi4baseS_(double %383, double %385, double %387, double %389)
          to label %391 unwind label %758

391:                                              ; preds = %377
  %392 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %393 = extractvalue { double, double } %390, 0
  store double %393, ptr %392, align 8
  %394 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %395 = extractvalue { double, double } %390, 1
  store double %395, ptr %394, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %53, ptr align 8 %38, i64 16, i1 false), !tbaa.struct !13
  %396 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %397 = load double, ptr %396, align 8
  %398 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %399 = load double, ptr %398, align 8
  %400 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %401 = load double, ptr %400, align 8
  %402 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %403 = load double, ptr %402, align 8
  %404 = invoke { double, double } @_Zml4baseS_(double %397, double %399, double %401, double %403)
          to label %405 unwind label %758

405:                                              ; preds = %391
  %406 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %407 = extractvalue { double, double } %404, 0
  store double %407, ptr %406, align 8
  %408 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %409 = extractvalue { double, double } %404, 1
  store double %409, ptr %408, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #5
  %410 = load i64, ptr %42, align 8, !tbaa !9
  %411 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %410) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %56, ptr align 8 %411, i64 16, i1 false), !tbaa.struct !13
  %412 = load i64, ptr %43, align 8, !tbaa !9
  %413 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %412) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %58, ptr align 8 %413, i64 16, i1 false), !tbaa.struct !13
  %414 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %415 = load double, ptr %414, align 8
  %416 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %417 = load double, ptr %416, align 8
  %418 = invoke { double, double } @_Z4conj4base(double %415, double %417)
          to label %419 unwind label %762

419:                                              ; preds = %405
  %420 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %421 = extractvalue { double, double } %418, 0
  store double %421, ptr %420, align 8
  %422 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %423 = extractvalue { double, double } %418, 1
  store double %423, ptr %422, align 8
  %424 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %425 = load double, ptr %424, align 8
  %426 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %427 = load double, ptr %426, align 8
  %428 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %429 = load double, ptr %428, align 8
  %430 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %431 = load double, ptr %430, align 8
  %432 = invoke { double, double } @_Zpl4baseS_(double %425, double %427, double %429, double %431)
          to label %433 unwind label %762

433:                                              ; preds = %419
  %434 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %435 = extractvalue { double, double } %432, 0
  store double %435, ptr %434, align 8
  %436 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %437 = extractvalue { double, double } %432, 1
  store double %437, ptr %436, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !13
  %438 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %439 = load double, ptr %438, align 8
  %440 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %441 = load double, ptr %440, align 8
  %442 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %443 = load double, ptr %442, align 8
  %444 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %445 = load double, ptr %444, align 8
  %446 = invoke { double, double } @_Zml4baseS_(double %439, double %441, double %443, double %445)
          to label %447 unwind label %762

447:                                              ; preds = %433
  %448 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %449 = extractvalue { double, double } %446, 0
  store double %449, ptr %448, align 8
  %450 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %451 = extractvalue { double, double } %446, 1
  store double %451, ptr %450, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #5
  %452 = load i64, ptr %42, align 8, !tbaa !9
  %453 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %452) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %62, ptr align 8 %453, i64 16, i1 false), !tbaa.struct !13
  %454 = load i64, ptr %43, align 8, !tbaa !9
  %455 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %454) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %455, i64 16, i1 false), !tbaa.struct !13
  %456 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %457 = load double, ptr %456, align 8
  %458 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  %459 = load double, ptr %458, align 8
  %460 = invoke { double, double } @_Z4conj4base(double %457, double %459)
          to label %461 unwind label %766

461:                                              ; preds = %447
  %462 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %463 = extractvalue { double, double } %460, 0
  store double %463, ptr %462, align 8
  %464 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %465 = extractvalue { double, double } %460, 1
  store double %465, ptr %464, align 8
  %466 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %467 = load double, ptr %466, align 8
  %468 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %469 = load double, ptr %468, align 8
  %470 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %471 = load double, ptr %470, align 8
  %472 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %473 = load double, ptr %472, align 8
  %474 = invoke { double, double } @_Zmi4baseS_(double %467, double %469, double %471, double %473)
          to label %475 unwind label %766

475:                                              ; preds = %461
  %476 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %477 = extractvalue { double, double } %474, 0
  store double %477, ptr %476, align 8
  %478 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %479 = extractvalue { double, double } %474, 1
  store double %479, ptr %478, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !13
  %480 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %481 = load double, ptr %480, align 8
  %482 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %483 = load double, ptr %482, align 8
  %484 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %485 = load double, ptr %484, align 8
  %486 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %487 = load double, ptr %486, align 8
  %488 = invoke { double, double } @_Zml4baseS_(double %481, double %483, double %485, double %487)
          to label %489 unwind label %766

489:                                              ; preds = %475
  %490 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %491 = extractvalue { double, double } %488, 0
  store double %491, ptr %490, align 8
  %492 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %493 = extractvalue { double, double } %488, 1
  store double %493, ptr %492, align 8
  %494 = load i64, ptr %42, align 8, !tbaa !9
  %495 = load i64, ptr %43, align 8, !tbaa !9
  %496 = icmp ne i64 %494, %495
  br i1 %496, label %497, label %798

497:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #5
  %498 = load i64, ptr %43, align 8, !tbaa !9
  %499 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %498) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %67, ptr align 8 %499, i64 16, i1 false), !tbaa.struct !13
  %500 = load i64, ptr %42, align 8, !tbaa !9
  %501 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %500) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %69, ptr align 8 %501, i64 16, i1 false), !tbaa.struct !13
  %502 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %503 = load double, ptr %502, align 8
  %504 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %505 = load double, ptr %504, align 8
  %506 = invoke { double, double } @_Z4conj4base(double %503, double %505)
          to label %507 unwind label %770

507:                                              ; preds = %497
  %508 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %509 = extractvalue { double, double } %506, 0
  store double %509, ptr %508, align 8
  %510 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %511 = extractvalue { double, double } %506, 1
  store double %511, ptr %510, align 8
  %512 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %513 = load double, ptr %512, align 8
  %514 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %515 = load double, ptr %514, align 8
  %516 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %517 = load double, ptr %516, align 8
  %518 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %519 = load double, ptr %518, align 8
  %520 = invoke { double, double } @_Zpl4baseS_(double %513, double %515, double %517, double %519)
          to label %521 unwind label %770

521:                                              ; preds = %507
  %522 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %523 = extractvalue { double, double } %520, 0
  store double %523, ptr %522, align 8
  %524 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %525 = extractvalue { double, double } %520, 1
  store double %525, ptr %524, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #5
  %526 = load i64, ptr %43, align 8, !tbaa !9
  %527 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %526) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %527, i64 16, i1 false), !tbaa.struct !13
  %528 = load i64, ptr %42, align 8, !tbaa !9
  %529 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %528) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %74, ptr align 8 %529, i64 16, i1 false), !tbaa.struct !13
  %530 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %531 = load double, ptr %530, align 8
  %532 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %533 = load double, ptr %532, align 8
  %534 = invoke { double, double } @_Z4conj4base(double %531, double %533)
          to label %535 unwind label %774

535:                                              ; preds = %521
  %536 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %537 = extractvalue { double, double } %534, 0
  store double %537, ptr %536, align 8
  %538 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %539 = extractvalue { double, double } %534, 1
  store double %539, ptr %538, align 8
  %540 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %541 = load double, ptr %540, align 8
  %542 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %543 = load double, ptr %542, align 8
  %544 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %545 = load double, ptr %544, align 8
  %546 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %547 = load double, ptr %546, align 8
  %548 = invoke { double, double } @_Zmi4baseS_(double %541, double %543, double %545, double %547)
          to label %549 unwind label %774

549:                                              ; preds = %535
  %550 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %551 = extractvalue { double, double } %548, 0
  store double %551, ptr %550, align 8
  %552 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %553 = extractvalue { double, double } %548, 1
  store double %553, ptr %552, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %75, ptr align 8 %38, i64 16, i1 false), !tbaa.struct !13
  %554 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %555 = load double, ptr %554, align 8
  %556 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %557 = load double, ptr %556, align 8
  %558 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %559 = load double, ptr %558, align 8
  %560 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %561 = load double, ptr %560, align 8
  %562 = invoke { double, double } @_Zml4baseS_(double %555, double %557, double %559, double %561)
          to label %563 unwind label %774

563:                                              ; preds = %549
  %564 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %565 = extractvalue { double, double } %562, 0
  store double %565, ptr %564, align 8
  %566 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %567 = extractvalue { double, double } %562, 1
  store double %567, ptr %566, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #5
  %568 = load i64, ptr %43, align 8, !tbaa !9
  %569 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %568) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %78, ptr align 8 %569, i64 16, i1 false), !tbaa.struct !13
  %570 = load i64, ptr %42, align 8, !tbaa !9
  %571 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %570) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %80, ptr align 8 %571, i64 16, i1 false), !tbaa.struct !13
  %572 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %573 = load double, ptr %572, align 8
  %574 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %575 = load double, ptr %574, align 8
  %576 = invoke { double, double } @_Z4conj4base(double %573, double %575)
          to label %577 unwind label %778

577:                                              ; preds = %563
  %578 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %579 = extractvalue { double, double } %576, 0
  store double %579, ptr %578, align 8
  %580 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %581 = extractvalue { double, double } %576, 1
  store double %581, ptr %580, align 8
  %582 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %583 = load double, ptr %582, align 8
  %584 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %585 = load double, ptr %584, align 8
  %586 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %587 = load double, ptr %586, align 8
  %588 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %589 = load double, ptr %588, align 8
  %590 = invoke { double, double } @_Zpl4baseS_(double %583, double %585, double %587, double %589)
          to label %591 unwind label %778

591:                                              ; preds = %577
  %592 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %593 = extractvalue { double, double } %590, 0
  store double %593, ptr %592, align 8
  %594 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %595 = extractvalue { double, double } %590, 1
  store double %595, ptr %594, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %81, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !13
  %596 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %597 = load double, ptr %596, align 8
  %598 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %599 = load double, ptr %598, align 8
  %600 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %601 = load double, ptr %600, align 8
  %602 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %603 = load double, ptr %602, align 8
  %604 = invoke { double, double } @_Zml4baseS_(double %597, double %599, double %601, double %603)
          to label %605 unwind label %778

605:                                              ; preds = %591
  %606 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %607 = extractvalue { double, double } %604, 0
  store double %607, ptr %606, align 8
  %608 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %609 = extractvalue { double, double } %604, 1
  store double %609, ptr %608, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #5
  %610 = load i64, ptr %43, align 8, !tbaa !9
  %611 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %610) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %84, ptr align 8 %611, i64 16, i1 false), !tbaa.struct !13
  %612 = load i64, ptr %42, align 8, !tbaa !9
  %613 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %612) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %86, ptr align 8 %613, i64 16, i1 false), !tbaa.struct !13
  %614 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %615 = load double, ptr %614, align 8
  %616 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %617 = load double, ptr %616, align 8
  %618 = invoke { double, double } @_Z4conj4base(double %615, double %617)
          to label %619 unwind label %782

619:                                              ; preds = %605
  %620 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %621 = extractvalue { double, double } %618, 0
  store double %621, ptr %620, align 8
  %622 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %623 = extractvalue { double, double } %618, 1
  store double %623, ptr %622, align 8
  %624 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %625 = load double, ptr %624, align 8
  %626 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %627 = load double, ptr %626, align 8
  %628 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %629 = load double, ptr %628, align 8
  %630 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %631 = load double, ptr %630, align 8
  %632 = invoke { double, double } @_Zmi4baseS_(double %625, double %627, double %629, double %631)
          to label %633 unwind label %782

633:                                              ; preds = %619
  %634 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %635 = extractvalue { double, double } %632, 0
  store double %635, ptr %634, align 8
  %636 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %637 = extractvalue { double, double } %632, 1
  store double %637, ptr %636, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %87, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !13
  %638 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %639 = load double, ptr %638, align 8
  %640 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %641 = load double, ptr %640, align 8
  %642 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %643 = load double, ptr %642, align 8
  %644 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %645 = load double, ptr %644, align 8
  %646 = invoke { double, double } @_Zml4baseS_(double %639, double %641, double %643, double %645)
          to label %647 unwind label %782

647:                                              ; preds = %633
  %648 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %649 = extractvalue { double, double } %646, 0
  store double %649, ptr %648, align 8
  %650 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %651 = extractvalue { double, double } %646, 1
  store double %651, ptr %650, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %90, ptr align 8 %66, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %91, ptr align 8 %76, i64 16, i1 false), !tbaa.struct !13
  %652 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %653 = load double, ptr %652, align 8
  %654 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %655 = load double, ptr %654, align 8
  %656 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %657 = load double, ptr %656, align 8
  %658 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %659 = load double, ptr %658, align 8
  %660 = invoke { double, double } @_Zml4baseS_(double %653, double %655, double %657, double %659)
          to label %661 unwind label %786

661:                                              ; preds = %647
  %662 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %663 = extractvalue { double, double } %660, 0
  store double %663, ptr %662, align 8
  %664 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %665 = extractvalue { double, double } %660, 1
  store double %665, ptr %664, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %94, ptr align 8 %70, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %82, i64 16, i1 false), !tbaa.struct !13
  %666 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %667 = load double, ptr %666, align 8
  %668 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %669 = load double, ptr %668, align 8
  %670 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %671 = load double, ptr %670, align 8
  %672 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %673 = load double, ptr %672, align 8
  %674 = invoke { double, double } @_Zml4baseS_(double %667, double %669, double %671, double %673)
          to label %675 unwind label %786

675:                                              ; preds = %661
  %676 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %677 = extractvalue { double, double } %674, 0
  store double %677, ptr %676, align 8
  %678 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %679 = extractvalue { double, double } %674, 1
  store double %679, ptr %678, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %96, ptr align 8 %41, i64 16, i1 false), !tbaa.struct !13
  %680 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %681 = load double, ptr %680, align 8
  %682 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %683 = load double, ptr %682, align 8
  %684 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %685 = load double, ptr %684, align 8
  %686 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %687 = load double, ptr %686, align 8
  %688 = invoke { double, double } @_Zml4baseS_(double %681, double %683, double %685, double %687)
          to label %689 unwind label %786

689:                                              ; preds = %675
  %690 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %691 = extractvalue { double, double } %688, 0
  store double %691, ptr %690, align 8
  %692 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %693 = extractvalue { double, double } %688, 1
  store double %693, ptr %692, align 8
  %694 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %695 = load double, ptr %694, align 8
  %696 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %697 = load double, ptr %696, align 8
  %698 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %699 = load double, ptr %698, align 8
  %700 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %701 = load double, ptr %700, align 8
  %702 = invoke { double, double } @_Zpl4baseS_(double %695, double %697, double %699, double %701)
          to label %703 unwind label %786

703:                                              ; preds = %689
  %704 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %705 = extractvalue { double, double } %702, 0
  store double %705, ptr %704, align 8
  %706 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %707 = extractvalue { double, double } %702, 1
  store double %707, ptr %706, align 8
  %708 = load i64, ptr %42, align 8, !tbaa !9
  %709 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %708) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %709, ptr align 8 %88, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %66, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %100, ptr align 8 %82, i64 16, i1 false), !tbaa.struct !13
  %710 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %711 = load double, ptr %710, align 8
  %712 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  %713 = load double, ptr %712, align 8
  %714 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 0
  %715 = load double, ptr %714, align 8
  %716 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 1
  %717 = load double, ptr %716, align 8
  %718 = invoke { double, double } @_Zml4baseS_(double %711, double %713, double %715, double %717)
          to label %719 unwind label %790

719:                                              ; preds = %703
  %720 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %721 = extractvalue { double, double } %718, 0
  store double %721, ptr %720, align 8
  %722 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %723 = extractvalue { double, double } %718, 1
  store double %723, ptr %722, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %102, ptr align 8 %70, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %76, i64 16, i1 false), !tbaa.struct !13
  %724 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 0
  %725 = load double, ptr %724, align 8
  %726 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 1
  %727 = load double, ptr %726, align 8
  %728 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 0
  %729 = load double, ptr %728, align 8
  %730 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 1
  %731 = load double, ptr %730, align 8
  %732 = invoke { double, double } @_Zml4baseS_(double %725, double %727, double %729, double %731)
          to label %733 unwind label %790

733:                                              ; preds = %719
  %734 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %735 = extractvalue { double, double } %732, 0
  store double %735, ptr %734, align 8
  %736 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %737 = extractvalue { double, double } %732, 1
  store double %737, ptr %736, align 8
  %738 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %739 = load double, ptr %738, align 8
  %740 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %741 = load double, ptr %740, align 8
  %742 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %743 = load double, ptr %742, align 8
  %744 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %745 = load double, ptr %744, align 8
  %746 = invoke { double, double } @_Zpl4baseS_(double %739, double %741, double %743, double %745)
          to label %747 unwind label %790

747:                                              ; preds = %733
  %748 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %749 = extractvalue { double, double } %746, 0
  store double %749, ptr %748, align 8
  %750 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %751 = extractvalue { double, double } %746, 1
  store double %751, ptr %750, align 8
  %752 = load i64, ptr %42, align 8, !tbaa !9
  %753 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %752) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %753, ptr align 8 %97, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #5
  br label %798

754:                                              ; preds = %349, %333
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %14, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %15, align 4
  br label %915

758:                                              ; preds = %391, %377, %363
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %14, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %15, align 4
  br label %914

762:                                              ; preds = %433, %419, %405
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %14, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %15, align 4
  br label %913

766:                                              ; preds = %475, %461, %447
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %14, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %15, align 4
  br label %912

770:                                              ; preds = %507, %497
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %14, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %15, align 4
  br label %797

774:                                              ; preds = %549, %535, %521
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %14, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %15, align 4
  br label %796

778:                                              ; preds = %591, %577, %563
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %14, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %15, align 4
  br label %795

782:                                              ; preds = %633, %619, %605
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %14, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %15, align 4
  br label %794

786:                                              ; preds = %689, %675, %661, %647
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %14, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #5
  br label %794

790:                                              ; preds = %733, %719, %703
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %14, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #5
  br label %794

794:                                              ; preds = %790, %786, %782
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #5
  br label %795

795:                                              ; preds = %794, %778
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #5
  br label %796

796:                                              ; preds = %795, %774
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #5
  br label %797

797:                                              ; preds = %796, %770
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #5
  br label %912

798:                                              ; preds = %747, %489
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %106, ptr align 8 %44, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %107, ptr align 8 %54, i64 16, i1 false), !tbaa.struct !13
  %799 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 0
  %800 = load double, ptr %799, align 8
  %801 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 1
  %802 = load double, ptr %801, align 8
  %803 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %804 = load double, ptr %803, align 8
  %805 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %806 = load double, ptr %805, align 8
  %807 = invoke { double, double } @_Zml4baseS_(double %800, double %802, double %804, double %806)
          to label %808 unwind label %904

808:                                              ; preds = %798
  %809 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 0
  %810 = extractvalue { double, double } %807, 0
  store double %810, ptr %809, align 8
  %811 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 1
  %812 = extractvalue { double, double } %807, 1
  store double %812, ptr %811, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %110, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %111, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !13
  %813 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 0
  %814 = load double, ptr %813, align 8
  %815 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 1
  %816 = load double, ptr %815, align 8
  %817 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %818 = load double, ptr %817, align 8
  %819 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %820 = load double, ptr %819, align 8
  %821 = invoke { double, double } @_Zml4baseS_(double %814, double %816, double %818, double %820)
          to label %822 unwind label %904

822:                                              ; preds = %808
  %823 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %824 = extractvalue { double, double } %821, 0
  store double %824, ptr %823, align 8
  %825 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %826 = extractvalue { double, double } %821, 1
  store double %826, ptr %825, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %112, ptr align 8 %41, i64 16, i1 false), !tbaa.struct !13
  %827 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %828 = load double, ptr %827, align 8
  %829 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %830 = load double, ptr %829, align 8
  %831 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %832 = load double, ptr %831, align 8
  %833 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %834 = load double, ptr %833, align 8
  %835 = invoke { double, double } @_Zml4baseS_(double %828, double %830, double %832, double %834)
          to label %836 unwind label %904

836:                                              ; preds = %822
  %837 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %838 = extractvalue { double, double } %835, 0
  store double %838, ptr %837, align 8
  %839 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %840 = extractvalue { double, double } %835, 1
  store double %840, ptr %839, align 8
  %841 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 0
  %842 = load double, ptr %841, align 8
  %843 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 1
  %844 = load double, ptr %843, align 8
  %845 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %846 = load double, ptr %845, align 8
  %847 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %848 = load double, ptr %847, align 8
  %849 = invoke { double, double } @_Zpl4baseS_(double %842, double %844, double %846, double %848)
          to label %850 unwind label %904

850:                                              ; preds = %836
  %851 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %852 = extractvalue { double, double } %849, 0
  store double %852, ptr %851, align 8
  %853 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %854 = extractvalue { double, double } %849, 1
  store double %854, ptr %853, align 8
  %855 = load i64, ptr %43, align 8, !tbaa !9
  %856 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %855) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %856, ptr align 8 %104, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %115, ptr align 8 %44, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %116, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !13
  %857 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 0
  %858 = load double, ptr %857, align 8
  %859 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 1
  %860 = load double, ptr %859, align 8
  %861 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 0
  %862 = load double, ptr %861, align 8
  %863 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 1
  %864 = load double, ptr %863, align 8
  %865 = invoke { double, double } @_Zml4baseS_(double %858, double %860, double %862, double %864)
          to label %866 unwind label %908

866:                                              ; preds = %850
  %867 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %868 = extractvalue { double, double } %865, 0
  store double %868, ptr %867, align 8
  %869 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %870 = extractvalue { double, double } %865, 1
  store double %870, ptr %869, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %118, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %119, ptr align 8 %54, i64 16, i1 false), !tbaa.struct !13
  %871 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %872 = load double, ptr %871, align 8
  %873 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %874 = load double, ptr %873, align 8
  %875 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 0
  %876 = load double, ptr %875, align 8
  %877 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 1
  %878 = load double, ptr %877, align 8
  %879 = invoke { double, double } @_Zml4baseS_(double %872, double %874, double %876, double %878)
          to label %880 unwind label %908

880:                                              ; preds = %866
  %881 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %882 = extractvalue { double, double } %879, 0
  store double %882, ptr %881, align 8
  %883 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %884 = extractvalue { double, double } %879, 1
  store double %884, ptr %883, align 8
  %885 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %886 = load double, ptr %885, align 8
  %887 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %888 = load double, ptr %887, align 8
  %889 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %890 = load double, ptr %889, align 8
  %891 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %892 = load double, ptr %891, align 8
  %893 = invoke { double, double } @_Zpl4baseS_(double %886, double %888, double %890, double %892)
          to label %894 unwind label %908

894:                                              ; preds = %880
  %895 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %896 = extractvalue { double, double } %893, 0
  store double %896, ptr %895, align 8
  %897 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %898 = extractvalue { double, double } %893, 1
  store double %898, ptr %897, align 8
  %899 = load i64, ptr %43, align 8, !tbaa !9
  %900 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %899) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %900, ptr align 8 %113, i64 16, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  br label %901

901:                                              ; preds = %894
  %902 = load i64, ptr %42, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  store i64 %903, ptr %42, align 8, !tbaa !9
  br label %311, !llvm.loop !18

904:                                              ; preds = %836, %822, %808, %798
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %14, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #5
  br label %912

908:                                              ; preds = %880, %866, %850
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %14, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #5
  br label %912

912:                                              ; preds = %908, %904, %797, %766
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #5
  br label %913

913:                                              ; preds = %912, %762
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  br label %914

914:                                              ; preds = %913, %758
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #5
  br label %915

915:                                              ; preds = %914, %754
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  br label %970

916:                                              ; preds = %316
  %917 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %917)
          to label %918 unwind label %329

918:                                              ; preds = %916
  %919 = load i64, ptr %11, align 8, !tbaa !9
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %919)
          to label %920 unwind label %329

920:                                              ; preds = %918
  store i1 false, ptr %120, align 1
  %921 = load i64, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #5
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #5
  invoke void @_ZNSt6vectorIxSaIxEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %921, ptr noundef nonnull align 1 dereferenceable(1) %121)
          to label %922 unwind label %928

922:                                              ; preds = %920
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #5
  store i64 0, ptr %122, align 8, !tbaa !9
  br label %923

923:                                              ; preds = %963, %922
  %924 = load i64, ptr %122, align 8, !tbaa !9
  %925 = load i64, ptr %9, align 8, !tbaa !9
  %926 = icmp slt i64 %924, %925
  br i1 %926, label %932, label %927

927:                                              ; preds = %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #5
  br label %966

928:                                              ; preds = %920
  %929 = landingpad { ptr, i32 }
          cleanup
  %930 = extractvalue { ptr, i32 } %929, 0
  store ptr %930, ptr %14, align 8
  %931 = extractvalue { ptr, i32 } %929, 1
  store i32 %931, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %121) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #5
  br label %970

932:                                              ; preds = %923
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #5
  %933 = load i64, ptr %122, align 8, !tbaa !9
  %934 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %933) #5
  %935 = getelementptr inbounds %struct.base, ptr %934, i32 0, i32 0
  %936 = load double, ptr %935, align 8, !tbaa !19
  %937 = fadd double %936, 5.000000e-01
  %938 = fptosi double %937 to i64
  store i64 %938, ptr %123, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #5
  %939 = load i64, ptr %122, align 8, !tbaa !9
  %940 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %939) #5
  %941 = getelementptr inbounds %struct.base, ptr %940, i32 0, i32 0
  %942 = load double, ptr %941, align 8, !tbaa !19
  %943 = fadd double %942, 5.000000e-01
  %944 = fptosi double %943 to i64
  store i64 %944, ptr %124, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #5
  %945 = load i64, ptr %122, align 8, !tbaa !9
  %946 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %945) #5
  %947 = getelementptr inbounds %struct.base, ptr %946, i32 0, i32 1
  %948 = load double, ptr %947, align 8, !tbaa !21
  %949 = fadd double %948, 5.000000e-01
  %950 = fptosi double %949 to i64
  store i64 %950, ptr %125, align 8, !tbaa !9
  %951 = load i64, ptr %123, align 8, !tbaa !9
  %952 = load i64, ptr %124, align 8, !tbaa !9
  %953 = srem i64 %952, 998244353
  %954 = shl i64 %953, 15
  %955 = add nsw i64 %951, %954
  %956 = load i64, ptr %125, align 8, !tbaa !9
  %957 = srem i64 %956, 998244353
  %958 = shl i64 %957, 30
  %959 = add nsw i64 %955, %958
  %960 = srem i64 %959, 998244353
  %961 = load i64, ptr %122, align 8, !tbaa !9
  %962 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %961) #5
  store i64 %960, ptr %962, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #5
  br label %963

963:                                              ; preds = %932
  %964 = load i64, ptr %122, align 8, !tbaa !9
  %965 = add nsw i64 %964, 1
  store i64 %965, ptr %122, align 8, !tbaa !9
  br label %923, !llvm.loop !22

966:                                              ; preds = %927
  store i1 true, ptr %120, align 1
  %967 = load i1, ptr %120, align 1
  br i1 %967, label %969, label %968

968:                                              ; preds = %966
  call void @_ZNSt6vectorIxSaIxEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #5
  br label %969

969:                                              ; preds = %968, %966
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  ret void

970:                                              ; preds = %928, %915, %329
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #5
  br label %971

971:                                              ; preds = %970, %325
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  br label %972

972:                                              ; preds = %971, %321
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  br label %973

973:                                              ; preds = %972, %317
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %974

974:                                              ; preds = %973, %296, %272, %241, %215, %185, %154
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  br label %975

975:                                              ; preds = %974
  %976 = load ptr, ptr %14, align 8
  %977 = load i32, ptr %15, align 4
  %978 = insertvalue { ptr, i32 } poison, ptr %976, 0
  %979 = insertvalue { ptr, i32 } %978, i32 %977, 1
  resume { ptr, i32 } %979
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_(ptr, ptr, ptr) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Z4conj4base(double, double) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIxSaIxEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{i64 0, i64 8, !14, i64 8, i64 8, !14}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = !{!20, !15, i64 0}
!20 = !{!"_ZTS4base", !15, i64 0, !15, i64 8}
!21 = !{!20, !15, i64 8}
!22 = distinct !{!22, !12}


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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long long, std::allocator<long long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl" }
%"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl" = type { %"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl_data" }
%"struct.std::_Vector_base<base, std::allocator<base>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.base = type { double, double }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::allocator.2" = type { i8 }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8checkXORx(i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zml4baseS_(double, double, double, double) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zmi4baseS_(double, double, double, double) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Zpl4baseS_(double, double, double, double) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local void @_Z6getMulRSt6vectorIxSaIxEES2_x(ptr dead_on_unwind noalias writable sret(%"class.std::vector.0") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca %struct.base, align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %struct.base, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %struct.base, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %struct.base, align 8
  %16 = alloca %struct.base, align 8
  %17 = alloca %struct.base, align 8
  %18 = alloca %struct.base, align 8
  %19 = alloca %struct.base, align 8
  %20 = alloca %"class.std::allocator.2", align 1
  %21 = tail call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  %22 = tail call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  %23 = add i64 %21, -1
  %24 = add i64 %23, %22
  br label %25

25:                                               ; preds = %25, %4
  %.0 = phi i64 [ 0, %4 ], [ %30, %25 ]
  %26 = trunc i64 %.0 to i32
  %27 = shl nuw i32 1, %26
  %28 = sext i32 %27 to i64
  %29 = icmp sgt i64 %24, %28
  %30 = add nuw nsw i64 %.0, 1
  br i1 %29, label %25, label %31, !llvm.loop !5

31:                                               ; preds = %25
  tail call void @_Z8checkXORx(i64 noundef %.0)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #5
  call void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #5
  call void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  %32 = call noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  %33 = icmp slt i64 %32, %28
  br i1 %33, label %34, label %37

34:                                               ; preds = %31
  invoke void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %28)
          to label %37 unwind label %35

35:                                               ; preds = %95, %62, %58, %34
  %36 = landingpad { ptr, i32 }
          cleanup
  br label %329

37:                                               ; preds = %34, %31
  %38 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  %39 = icmp sgt i64 %38, 0
  br i1 %39, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %40 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  store ptr %40, ptr %8, align 8
  %41 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  %42 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 noundef %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %43 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  store ptr %43, ptr %9, align 8
  %44 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %9, i64 noundef %28) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef 0.000000e+00, double noundef 0.000000e+00)
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %42, ptr %44, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %58 unwind label %63

.lr.ph:                                           ; preds = %37, %.lr.ph
  %.0249274 = phi i64 [ %55, %.lr.ph ], [ 0, %37 ]
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.0249274) #5
  %46 = load i64, ptr %45, align 8, !tbaa !7
  %.fr272 = freeze i64 %46
  %47 = srem i64 %.fr272, 998244353
  %48 = add nsw i64 %47, 998244353
  %.cmp = icmp ugt i64 %47, -998244354
  %49 = select i1 %.cmp, i64 %48, i64 %47
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  %50 = and i64 %49, 32767
  %51 = uitofp nneg i64 %50 to double
  %52 = lshr i64 %49, 15
  %53 = uitofp nneg i64 %52 to double
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %7, double noundef %51, double noundef %53)
  %54 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0249274) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  %55 = add nuw nsw i64 %.0249274, 1
  %56 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #5
  %57 = icmp slt i64 %55, %56
  br i1 %57, label %.lr.ph, label %._crit_edge, !llvm.loop !14

58:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %28)
          to label %59 unwind label %35

59:                                               ; preds = %58
  %60 = call noundef i64 @_ZNKSt6vectorI4baseSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  %61 = icmp slt i64 %60, %28
  br i1 %61, label %62, label %65

62:                                               ; preds = %59
  invoke void @_ZNSt6vectorI4baseSaIS0_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %28)
          to label %65 unwind label %35

63:                                               ; preds = %._crit_edge
  %64 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %329

65:                                               ; preds = %62, %59
  %.not = icmp eq i64 %3, 0
  br i1 %.not, label %.preheader, label %68

.preheader:                                       ; preds = %65
  %66 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  %67 = icmp sgt i64 %66, 0
  br i1 %67, label %.lr.ph276, label %._crit_edge277

68:                                               ; preds = %65
  %69 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  %70 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  store ptr %70, ptr %11, align 8
  %71 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef %28) #5
  %72 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  %73 = invoke ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_(ptr %69, ptr %71, ptr %72)
          to label %74 unwind label %75

74:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %98

75:                                               ; preds = %68
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %329

._crit_edge277:                                   ; preds = %.lr.ph276, %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  %77 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  store ptr %77, ptr %13, align 8
  %78 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  %79 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %13, i64 noundef %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  %80 = call ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  store ptr %80, ptr %14, align 8
  %81 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %14, i64 noundef %28) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %15, double noundef 0.000000e+00, double noundef 0.000000e+00)
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES2_EvT_S8_RKT0_(ptr %79, ptr %81, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %95 unwind label %96

.lr.ph276:                                        ; preds = %.preheader, %.lr.ph276
  %.0250275 = phi i64 [ %92, %.lr.ph276 ], [ 0, %.preheader ]
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %.0250275) #5
  %83 = load i64, ptr %82, align 8, !tbaa !7
  %.fr271 = freeze i64 %83
  %84 = srem i64 %.fr271, 998244353
  %85 = add nsw i64 %84, 998244353
  %.cmp270 = icmp ugt i64 %84, -998244354
  %86 = select i1 %.cmp270, i64 %85, i64 %84
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  %87 = and i64 %86, 32767
  %88 = uitofp nneg i64 %87 to double
  %89 = lshr i64 %86, 15
  %90 = uitofp nneg i64 %89 to double
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef %88, double noundef %90)
  %91 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0250275) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %91, ptr noundef nonnull align 8 dereferenceable(16) %12, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  %92 = add nuw nsw i64 %.0250275, 1
  %93 = call noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5
  %94 = icmp slt i64 %92, %93
  br i1 %94, label %.lr.ph276, label %._crit_edge277, !llvm.loop !15

95:                                               ; preds = %._crit_edge277
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %28)
          to label %98 unwind label %35

96:                                               ; preds = %._crit_edge277
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  br label %329

98:                                               ; preds = %95, %74
  %99 = sitofp i32 %27 to double
  %100 = fdiv double 2.500000e-01, %99
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %16, double noundef 0.000000e+00, double noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %17, double noundef %100, double noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #5
  %101 = fneg double %100
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %18, double noundef 0.000000e+00, double noundef %101)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #5
  call void @_ZN4baseC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %19, double noundef 0.000000e+00, double noundef 1.000000e+00)
  %102 = ashr i64 %28, 1
  %.not255278 = icmp slt i64 %102, 0
  br i1 %.not255278, label %._crit_edge282, label %.lr.ph281

.lr.ph281:                                        ; preds = %98
  %103 = add nsw i64 %28, -1
  %.sroa.2138.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  %.sroa.2126.0..sroa_idx = getelementptr inbounds i8, ptr %17, i64 8
  %.sroa.2114.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 8
  %.sroa.253.0..sroa_idx = getelementptr inbounds i8, ptr %19, i64 8
  br label %106

._crit_edge282:                                   ; preds = %291, %98
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %28)
          to label %300 unwind label %104

104:                                              ; preds = %300, %._crit_edge282
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %328

106:                                              ; preds = %.lr.ph281, %291
  %.0251279 = phi i64 [ 0, %.lr.ph281 ], [ %295, %291 ]
  %107 = sub nsw i64 %28, %.0251279
  %108 = and i64 %107, %103
  %109 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0251279) #5
  %.sroa.0153.0.copyload = load double, ptr %109, align 8, !tbaa !12
  %.sroa.2154.0..sroa_idx = getelementptr inbounds i8, ptr %109, i64 8
  %.sroa.2154.0.copyload = load double, ptr %.sroa.2154.0..sroa_idx, align 8, !tbaa !12
  %110 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %108) #5
  %.sroa.0149.0.copyload = load double, ptr %110, align 8, !tbaa !12
  %.sroa.2150.0..sroa_idx = getelementptr inbounds i8, ptr %110, i64 8
  %.sroa.2150.0.copyload = load double, ptr %.sroa.2150.0..sroa_idx, align 8, !tbaa !12
  %111 = invoke { double, double } @_Z4conj4base(double %.sroa.0149.0.copyload, double %.sroa.2150.0.copyload)
          to label %112 unwind label %244

112:                                              ; preds = %106
  %113 = extractvalue { double, double } %111, 0
  %114 = extractvalue { double, double } %111, 1
  %115 = invoke { double, double } @_Zpl4baseS_(double %.sroa.0153.0.copyload, double %.sroa.2154.0.copyload, double %113, double %114)
          to label %116 unwind label %244

116:                                              ; preds = %112
  %117 = extractvalue { double, double } %115, 0
  %118 = extractvalue { double, double } %115, 1
  %119 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0251279) #5
  %.sroa.0143.0.copyload = load double, ptr %119, align 8, !tbaa !12
  %.sroa.2144.0..sroa_idx = getelementptr inbounds i8, ptr %119, i64 8
  %.sroa.2144.0.copyload = load double, ptr %.sroa.2144.0..sroa_idx, align 8, !tbaa !12
  %120 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %108) #5
  %.sroa.0139.0.copyload = load double, ptr %120, align 8, !tbaa !12
  %.sroa.2140.0..sroa_idx = getelementptr inbounds i8, ptr %120, i64 8
  %.sroa.2140.0.copyload = load double, ptr %.sroa.2140.0..sroa_idx, align 8, !tbaa !12
  %121 = invoke { double, double } @_Z4conj4base(double %.sroa.0139.0.copyload, double %.sroa.2140.0.copyload)
          to label %122 unwind label %246

122:                                              ; preds = %116
  %123 = extractvalue { double, double } %121, 0
  %124 = extractvalue { double, double } %121, 1
  %125 = invoke { double, double } @_Zmi4baseS_(double %.sroa.0143.0.copyload, double %.sroa.2144.0.copyload, double %123, double %124)
          to label %126 unwind label %246

126:                                              ; preds = %122
  %127 = extractvalue { double, double } %125, 0
  %128 = extractvalue { double, double } %125, 1
  %.sroa.0137.0.copyload = load double, ptr %16, align 8, !tbaa !12
  %.sroa.2138.0.copyload = load double, ptr %.sroa.2138.0..sroa_idx, align 8, !tbaa !12
  %129 = invoke { double, double } @_Zml4baseS_(double %127, double %128, double %.sroa.0137.0.copyload, double %.sroa.2138.0.copyload)
          to label %130 unwind label %246

130:                                              ; preds = %126
  %131 = extractvalue { double, double } %129, 0
  %132 = extractvalue { double, double } %129, 1
  %133 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0251279) #5
  %.sroa.0131.0.copyload = load double, ptr %133, align 8, !tbaa !12
  %.sroa.2132.0..sroa_idx = getelementptr inbounds i8, ptr %133, i64 8
  %.sroa.2132.0.copyload = load double, ptr %.sroa.2132.0..sroa_idx, align 8, !tbaa !12
  %134 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %108) #5
  %.sroa.0127.0.copyload = load double, ptr %134, align 8, !tbaa !12
  %.sroa.2128.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 8
  %.sroa.2128.0.copyload = load double, ptr %.sroa.2128.0..sroa_idx, align 8, !tbaa !12
  %135 = invoke { double, double } @_Z4conj4base(double %.sroa.0127.0.copyload, double %.sroa.2128.0.copyload)
          to label %136 unwind label %248

136:                                              ; preds = %130
  %137 = extractvalue { double, double } %135, 0
  %138 = extractvalue { double, double } %135, 1
  %139 = invoke { double, double } @_Zpl4baseS_(double %.sroa.0131.0.copyload, double %.sroa.2132.0.copyload, double %137, double %138)
          to label %140 unwind label %248

140:                                              ; preds = %136
  %141 = extractvalue { double, double } %139, 0
  %142 = extractvalue { double, double } %139, 1
  %.sroa.0125.0.copyload = load double, ptr %17, align 8, !tbaa !12
  %.sroa.2126.0.copyload = load double, ptr %.sroa.2126.0..sroa_idx, align 8, !tbaa !12
  %143 = invoke { double, double } @_Zml4baseS_(double %141, double %142, double %.sroa.0125.0.copyload, double %.sroa.2126.0.copyload)
          to label %144 unwind label %248

144:                                              ; preds = %140
  %145 = extractvalue { double, double } %143, 0
  %146 = extractvalue { double, double } %143, 1
  %147 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0251279) #5
  %.sroa.0119.0.copyload = load double, ptr %147, align 8, !tbaa !12
  %.sroa.2120.0..sroa_idx = getelementptr inbounds i8, ptr %147, i64 8
  %.sroa.2120.0.copyload = load double, ptr %.sroa.2120.0..sroa_idx, align 8, !tbaa !12
  %148 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %108) #5
  %.sroa.0115.0.copyload = load double, ptr %148, align 8, !tbaa !12
  %.sroa.2116.0..sroa_idx = getelementptr inbounds i8, ptr %148, i64 8
  %.sroa.2116.0.copyload = load double, ptr %.sroa.2116.0..sroa_idx, align 8, !tbaa !12
  %149 = invoke { double, double } @_Z4conj4base(double %.sroa.0115.0.copyload, double %.sroa.2116.0.copyload)
          to label %150 unwind label %250

150:                                              ; preds = %144
  %151 = extractvalue { double, double } %149, 0
  %152 = extractvalue { double, double } %149, 1
  %153 = invoke { double, double } @_Zmi4baseS_(double %.sroa.0119.0.copyload, double %.sroa.2120.0.copyload, double %151, double %152)
          to label %154 unwind label %250

154:                                              ; preds = %150
  %155 = extractvalue { double, double } %153, 0
  %156 = extractvalue { double, double } %153, 1
  %.sroa.0113.0.copyload = load double, ptr %18, align 8, !tbaa !12
  %.sroa.2114.0.copyload = load double, ptr %.sroa.2114.0..sroa_idx, align 8, !tbaa !12
  %157 = invoke { double, double } @_Zml4baseS_(double %155, double %156, double %.sroa.0113.0.copyload, double %.sroa.2114.0.copyload)
          to label %158 unwind label %250

158:                                              ; preds = %154
  %159 = extractvalue { double, double } %157, 0
  %160 = extractvalue { double, double } %157, 1
  %.not256 = icmp eq i64 %.0251279, %108
  br i1 %.not256, label %264, label %161

161:                                              ; preds = %158
  %162 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %108) #5
  %.sroa.0109.0.copyload = load double, ptr %162, align 8, !tbaa !12
  %.sroa.2110.0..sroa_idx = getelementptr inbounds i8, ptr %162, i64 8
  %.sroa.2110.0.copyload = load double, ptr %.sroa.2110.0..sroa_idx, align 8, !tbaa !12
  %163 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0251279) #5
  %.sroa.0105.0.copyload = load double, ptr %163, align 8, !tbaa !12
  %.sroa.2106.0..sroa_idx = getelementptr inbounds i8, ptr %163, i64 8
  %.sroa.2106.0.copyload = load double, ptr %.sroa.2106.0..sroa_idx, align 8, !tbaa !12
  %164 = invoke { double, double } @_Z4conj4base(double %.sroa.0105.0.copyload, double %.sroa.2106.0.copyload)
          to label %165 unwind label %252

165:                                              ; preds = %161
  %166 = extractvalue { double, double } %164, 0
  %167 = extractvalue { double, double } %164, 1
  %168 = invoke { double, double } @_Zpl4baseS_(double %.sroa.0109.0.copyload, double %.sroa.2110.0.copyload, double %166, double %167)
          to label %169 unwind label %252

169:                                              ; preds = %165
  %170 = extractvalue { double, double } %168, 0
  %171 = extractvalue { double, double } %168, 1
  %172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %108) #5
  %.sroa.099.0.copyload = load double, ptr %172, align 8, !tbaa !12
  %.sroa.2100.0..sroa_idx = getelementptr inbounds i8, ptr %172, i64 8
  %.sroa.2100.0.copyload = load double, ptr %.sroa.2100.0..sroa_idx, align 8, !tbaa !12
  %173 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0251279) #5
  %.sroa.095.0.copyload = load double, ptr %173, align 8, !tbaa !12
  %.sroa.296.0..sroa_idx = getelementptr inbounds i8, ptr %173, i64 8
  %.sroa.296.0.copyload = load double, ptr %.sroa.296.0..sroa_idx, align 8, !tbaa !12
  %174 = invoke { double, double } @_Z4conj4base(double %.sroa.095.0.copyload, double %.sroa.296.0.copyload)
          to label %175 unwind label %254

175:                                              ; preds = %169
  %176 = extractvalue { double, double } %174, 0
  %177 = extractvalue { double, double } %174, 1
  %178 = invoke { double, double } @_Zmi4baseS_(double %.sroa.099.0.copyload, double %.sroa.2100.0.copyload, double %176, double %177)
          to label %179 unwind label %254

179:                                              ; preds = %175
  %180 = extractvalue { double, double } %178, 0
  %181 = extractvalue { double, double } %178, 1
  %.sroa.093.0.copyload = load double, ptr %16, align 8, !tbaa !12
  %.sroa.294.0.copyload = load double, ptr %.sroa.2138.0..sroa_idx, align 8, !tbaa !12
  %182 = invoke { double, double } @_Zml4baseS_(double %180, double %181, double %.sroa.093.0.copyload, double %.sroa.294.0.copyload)
          to label %183 unwind label %254

183:                                              ; preds = %179
  %184 = extractvalue { double, double } %182, 0
  %185 = extractvalue { double, double } %182, 1
  %186 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %108) #5
  %.sroa.087.0.copyload = load double, ptr %186, align 8, !tbaa !12
  %.sroa.288.0..sroa_idx = getelementptr inbounds i8, ptr %186, i64 8
  %.sroa.288.0.copyload = load double, ptr %.sroa.288.0..sroa_idx, align 8, !tbaa !12
  %187 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0251279) #5
  %.sroa.083.0.copyload = load double, ptr %187, align 8, !tbaa !12
  %.sroa.284.0..sroa_idx = getelementptr inbounds i8, ptr %187, i64 8
  %.sroa.284.0.copyload = load double, ptr %.sroa.284.0..sroa_idx, align 8, !tbaa !12
  %188 = invoke { double, double } @_Z4conj4base(double %.sroa.083.0.copyload, double %.sroa.284.0.copyload)
          to label %189 unwind label %256

189:                                              ; preds = %183
  %190 = extractvalue { double, double } %188, 0
  %191 = extractvalue { double, double } %188, 1
  %192 = invoke { double, double } @_Zpl4baseS_(double %.sroa.087.0.copyload, double %.sroa.288.0.copyload, double %190, double %191)
          to label %193 unwind label %256

193:                                              ; preds = %189
  %194 = extractvalue { double, double } %192, 0
  %195 = extractvalue { double, double } %192, 1
  %.sroa.081.0.copyload = load double, ptr %17, align 8, !tbaa !12
  %.sroa.282.0.copyload = load double, ptr %.sroa.2126.0..sroa_idx, align 8, !tbaa !12
  %196 = invoke { double, double } @_Zml4baseS_(double %194, double %195, double %.sroa.081.0.copyload, double %.sroa.282.0.copyload)
          to label %197 unwind label %256

197:                                              ; preds = %193
  %198 = extractvalue { double, double } %196, 0
  %199 = extractvalue { double, double } %196, 1
  %200 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %108) #5
  %.sroa.076.0.copyload = load double, ptr %200, align 8, !tbaa !12
  %.sroa.277.0..sroa_idx = getelementptr inbounds i8, ptr %200, i64 8
  %.sroa.277.0.copyload = load double, ptr %.sroa.277.0..sroa_idx, align 8, !tbaa !12
  %201 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0251279) #5
  %.sroa.072.0.copyload = load double, ptr %201, align 8, !tbaa !12
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %201, i64 8
  %.sroa.273.0.copyload = load double, ptr %.sroa.273.0..sroa_idx, align 8, !tbaa !12
  %202 = invoke { double, double } @_Z4conj4base(double %.sroa.072.0.copyload, double %.sroa.273.0.copyload)
          to label %203 unwind label %258

203:                                              ; preds = %197
  %204 = extractvalue { double, double } %202, 0
  %205 = extractvalue { double, double } %202, 1
  %206 = invoke { double, double } @_Zmi4baseS_(double %.sroa.076.0.copyload, double %.sroa.277.0.copyload, double %204, double %205)
          to label %207 unwind label %258

207:                                              ; preds = %203
  %208 = extractvalue { double, double } %206, 0
  %209 = extractvalue { double, double } %206, 1
  %.sroa.070.0.copyload = load double, ptr %18, align 8, !tbaa !12
  %.sroa.271.0.copyload = load double, ptr %.sroa.2114.0..sroa_idx, align 8, !tbaa !12
  %210 = invoke { double, double } @_Zml4baseS_(double %208, double %209, double %.sroa.070.0.copyload, double %.sroa.271.0.copyload)
          to label %211 unwind label %258

211:                                              ; preds = %207
  %212 = extractvalue { double, double } %210, 0
  %213 = extractvalue { double, double } %210, 1
  %214 = invoke { double, double } @_Zml4baseS_(double %170, double %171, double %198, double %199)
          to label %215 unwind label %260

215:                                              ; preds = %211
  %216 = extractvalue { double, double } %214, 0
  %217 = extractvalue { double, double } %214, 1
  %218 = invoke { double, double } @_Zml4baseS_(double %184, double %185, double %212, double %213)
          to label %219 unwind label %260

219:                                              ; preds = %215
  %220 = extractvalue { double, double } %218, 0
  %221 = extractvalue { double, double } %218, 1
  %.sroa.052.0.copyload = load double, ptr %19, align 8, !tbaa !12
  %.sroa.253.0.copyload = load double, ptr %.sroa.253.0..sroa_idx, align 8, !tbaa !12
  %222 = invoke { double, double } @_Zml4baseS_(double %220, double %221, double %.sroa.052.0.copyload, double %.sroa.253.0.copyload)
          to label %223 unwind label %260

223:                                              ; preds = %219
  %224 = extractvalue { double, double } %222, 0
  %225 = extractvalue { double, double } %222, 1
  %226 = invoke { double, double } @_Zpl4baseS_(double %216, double %217, double %224, double %225)
          to label %227 unwind label %260

227:                                              ; preds = %223
  %228 = extractvalue { double, double } %226, 0
  %229 = extractvalue { double, double } %226, 1
  %230 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0251279) #5
  store double %228, ptr %230, align 8, !tbaa !12
  %.sroa.569.0..sroa_idx = getelementptr inbounds i8, ptr %230, i64 8
  store double %229, ptr %.sroa.569.0..sroa_idx, align 8, !tbaa !12
  %231 = invoke { double, double } @_Zml4baseS_(double %170, double %171, double %212, double %213)
          to label %232 unwind label %262

232:                                              ; preds = %227
  %233 = invoke { double, double } @_Zml4baseS_(double %184, double %185, double %198, double %199)
          to label %234 unwind label %262

234:                                              ; preds = %232
  %235 = extractvalue { double, double } %231, 1
  %236 = extractvalue { double, double } %231, 0
  %237 = extractvalue { double, double } %233, 0
  %238 = extractvalue { double, double } %233, 1
  %239 = invoke { double, double } @_Zpl4baseS_(double %236, double %235, double %237, double %238)
          to label %240 unwind label %262

240:                                              ; preds = %234
  %241 = extractvalue { double, double } %239, 0
  %242 = extractvalue { double, double } %239, 1
  %243 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0251279) #5
  store double %241, ptr %243, align 8, !tbaa !12
  %.sroa.551.0..sroa_idx = getelementptr inbounds i8, ptr %243, i64 8
  store double %242, ptr %.sroa.551.0..sroa_idx, align 8, !tbaa !12
  br label %264

244:                                              ; preds = %112, %106
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %328

246:                                              ; preds = %126, %122, %116
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %328

248:                                              ; preds = %140, %136, %130
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %328

250:                                              ; preds = %154, %150, %144
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %328

252:                                              ; preds = %165, %161
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %328

254:                                              ; preds = %179, %175, %169
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %328

256:                                              ; preds = %193, %189, %183
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %328

258:                                              ; preds = %207, %203, %197
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %328

260:                                              ; preds = %223, %219, %215, %211
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %328

262:                                              ; preds = %234, %232, %227
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %328

264:                                              ; preds = %240, %158
  %265 = invoke { double, double } @_Zml4baseS_(double %117, double %118, double %145, double %146)
          to label %266 unwind label %296

266:                                              ; preds = %264
  %267 = extractvalue { double, double } %265, 0
  %268 = extractvalue { double, double } %265, 1
  %269 = invoke { double, double } @_Zml4baseS_(double %131, double %132, double %159, double %160)
          to label %270 unwind label %296

270:                                              ; preds = %266
  %271 = extractvalue { double, double } %269, 0
  %272 = extractvalue { double, double } %269, 1
  %.sroa.020.0.copyload = load double, ptr %19, align 8, !tbaa !12
  %.sroa.221.0.copyload = load double, ptr %.sroa.253.0..sroa_idx, align 8, !tbaa !12
  %273 = invoke { double, double } @_Zml4baseS_(double %271, double %272, double %.sroa.020.0.copyload, double %.sroa.221.0.copyload)
          to label %274 unwind label %296

274:                                              ; preds = %270
  %275 = extractvalue { double, double } %273, 0
  %276 = extractvalue { double, double } %273, 1
  %277 = invoke { double, double } @_Zpl4baseS_(double %267, double %268, double %275, double %276)
          to label %278 unwind label %296

278:                                              ; preds = %274
  %279 = extractvalue { double, double } %277, 0
  %280 = extractvalue { double, double } %277, 1
  %281 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %108) #5
  store double %279, ptr %281, align 8, !tbaa !12
  %.sroa.537.0..sroa_idx = getelementptr inbounds i8, ptr %281, i64 8
  store double %280, ptr %.sroa.537.0..sroa_idx, align 8, !tbaa !12
  %282 = invoke { double, double } @_Zml4baseS_(double %117, double %118, double %159, double %160)
          to label %283 unwind label %298

283:                                              ; preds = %278
  %284 = invoke { double, double } @_Zml4baseS_(double %131, double %132, double %145, double %146)
          to label %285 unwind label %298

285:                                              ; preds = %283
  %286 = extractvalue { double, double } %282, 1
  %287 = extractvalue { double, double } %282, 0
  %288 = extractvalue { double, double } %284, 0
  %289 = extractvalue { double, double } %284, 1
  %290 = invoke { double, double } @_Zpl4baseS_(double %287, double %286, double %288, double %289)
          to label %291 unwind label %298

291:                                              ; preds = %285
  %292 = extractvalue { double, double } %290, 0
  %293 = extractvalue { double, double } %290, 1
  %294 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %108) #5
  store double %292, ptr %294, align 8, !tbaa !12
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %294, i64 8
  store double %293, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !12
  %295 = add nuw nsw i64 %.0251279, 1
  %exitcond.not = icmp eq i64 %.0251279, %102
  br i1 %exitcond.not, label %._crit_edge282, label %106, !llvm.loop !16

296:                                              ; preds = %274, %270, %266, %264
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %328

298:                                              ; preds = %285, %283, %278
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %328

300:                                              ; preds = %._crit_edge282
  invoke void @_Z5bitsNRSt6vectorI4baseSaIS0_EEx(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %28)
          to label %301 unwind label %104

301:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #5
  call void @_ZNSaIxEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  invoke void @_ZNSt6vectorIxSaIxEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %24, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %302 unwind label %304

302:                                              ; preds = %301
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #5
  %303 = icmp sgt i64 %24, 0
  br i1 %303, label %.lr.ph285, label %._crit_edge286

304:                                              ; preds = %301
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #5
  br label %328

.lr.ph285:                                        ; preds = %302, %.lr.ph285
  %.0248283 = phi i64 [ %327, %.lr.ph285 ], [ 0, %302 ]
  %306 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0248283) #5
  %307 = load double, ptr %306, align 8, !tbaa !17
  %308 = fadd double %307, 5.000000e-01
  %309 = fptosi double %308 to i64
  %310 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %.0248283) #5
  %311 = load double, ptr %310, align 8, !tbaa !17
  %312 = fadd double %311, 5.000000e-01
  %313 = fptosi double %312 to i64
  %314 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4baseSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0248283) #5
  %315 = getelementptr inbounds i8, ptr %314, i64 8
  %316 = load double, ptr %315, align 8, !tbaa !19
  %317 = fadd double %316, 5.000000e-01
  %318 = fptosi double %317 to i64
  %319 = srem i64 %313, 998244353
  %320 = shl nsw i64 %319, 15
  %321 = add nsw i64 %320, %309
  %322 = srem i64 %318, 998244353
  %323 = shl nsw i64 %322, 30
  %324 = add nsw i64 %321, %323
  %325 = srem i64 %324, 998244353
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIxSaIxEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0248283) #5
  store i64 %325, ptr %326, align 8, !tbaa !7
  %327 = add nuw nsw i64 %.0248283, 1
  %exitcond288.not = icmp eq i64 %327, %24
  br i1 %exitcond288.not, label %._crit_edge286, label %.lr.ph285, !llvm.loop !20

._crit_edge286:                                   ; preds = %.lr.ph285, %302
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  ret void

328:                                              ; preds = %244, %248, %252, %256, %262, %260, %258, %254, %298, %296, %250, %246, %304, %104
  %.pn261.pn.pn.pn.pn = phi { ptr, i32 } [ %305, %304 ], [ %105, %104 ], [ %245, %244 ], [ %247, %246 ], [ %249, %248 ], [ %299, %298 ], [ %297, %296 ], [ %251, %250 ], [ %253, %252 ], [ %255, %254 ], [ %257, %256 ], [ %263, %262 ], [ %261, %260 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  br label %329

329:                                              ; preds = %328, %96, %75, %63, %35
  %.pn261.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn261.pn.pn.pn.pn, %328 ], [ %76, %75 ], [ %36, %35 ], [ %97, %96 ], [ %64, %63 ]
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #5
  call void @_ZNSt6vectorI4baseSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #5
  resume { ptr, i32 } %.pn261.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIxSaIxEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4baseSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4baseSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS1_SaIS1_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP4baseSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_(ptr, ptr, ptr) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_Z4conj4base(double, double) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIxSaIxEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIxED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"long long", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{i64 0, i64 8, !12, i64 8, i64 8, !12}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !9, i64 0}
!14 = distinct !{!14, !6}
!15 = distinct !{!15, !6}
!16 = distinct !{!16, !6}
!17 = !{!18, !13, i64 0}
!18 = !{!"_ZTS4base", !13, i64 0, !13, i64 8}
!19 = !{!18, !13, i64 8}
!20 = distinct !{!20, !6}


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