; LLVM IR from sympiler/nasoq :: src/common/Transpose.ll (ZN5nasoq13transpose_symEPNS_12sympiler_CSCEiPiS1_i)

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

%"struct.nasoq::sympiler_CSC" = type { i64, i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32 }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5nasoq18transpose_sym_realEPNS_12sympiler_CSCEPiS1_S2_S2_Ri(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN5nasoq13transpose_symEPNS_12sympiler_CSCEiPiS1_i(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #2 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store i32 %4, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 1, ptr %31, align 4, !tbaa !9
  %33 = load ptr, ptr %7, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %33, i32 0, i32 0
  %35 = load i64, ptr %34, align 8, !tbaa !11
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %36, i32 0, i32 1
  %38 = load i64, ptr %37, align 8, !tbaa !14
  %39 = icmp ne i64 %35, %38
  br i1 %39, label %45, label %40

40:                                               ; preds = %5
  %41 = load ptr, ptr %7, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %41, i32 0, i32 8
  %43 = load i32, ptr %42, align 8, !tbaa !15
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %46

45:                                               ; preds = %40, %5
  store i32 0, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

46:                                               ; preds = %40
  %47 = load ptr, ptr %7, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %47, i32 0, i32 0
  %49 = load i64, ptr %48, align 8, !tbaa !11
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %50, i32 0, i32 1
  %52 = load i64, ptr %51, align 8, !tbaa !14
  %53 = icmp ne i64 %49, %52
  br i1 %53, label %62, label %54

54:                                               ; preds = %46
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %55, i32 0, i32 1
  %57 = load i64, ptr %56, align 8, !tbaa !14
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %58, i32 0, i32 0
  %60 = load i64, ptr %59, align 8, !tbaa !11
  %61 = icmp ne i64 %57, %60
  br i1 %61, label %62, label %63

62:                                               ; preds = %54, %46
  store i32 0, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

63:                                               ; preds = %54
  store i32 1, ptr %11, align 4, !tbaa !9
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  %66 = zext i1 %65 to i32
  store i32 %66, ptr %23, align 4, !tbaa !9
  %67 = load ptr, ptr %7, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %67, i32 0, i32 0
  %69 = load i64, ptr %68, align 8, !tbaa !11
  %70 = trunc i64 %69 to i32
  store i32 %70, ptr %25, align 4, !tbaa !9
  %71 = load ptr, ptr %7, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %71, i32 0, i32 3
  %73 = load ptr, ptr %72, align 8, !tbaa !16
  store ptr %73, ptr %12, align 8, !tbaa !5
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %74, i32 0, i32 4
  %76 = load ptr, ptr %75, align 8, !tbaa !17
  store ptr %76, ptr %14, align 8, !tbaa !5
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %77, i32 0, i32 5
  %79 = load ptr, ptr %78, align 8, !tbaa !18
  store ptr %79, ptr %13, align 8, !tbaa !5
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %80, i32 0, i32 13
  %82 = load i32, ptr %81, align 4, !tbaa !19
  store i32 %82, ptr %21, align 4, !tbaa !9
  %83 = load ptr, ptr %7, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %83, i32 0, i32 8
  %85 = load i32, ptr %84, align 8, !tbaa !15
  %86 = icmp sgt i32 %85, 0
  %87 = zext i1 %86 to i32
  store i32 %87, ptr %22, align 4, !tbaa !9
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %88, i32 0, i32 3
  %90 = load ptr, ptr %89, align 8, !tbaa !16
  store ptr %90, ptr %15, align 8, !tbaa !5
  %91 = load i32, ptr %25, align 4, !tbaa !9
  %92 = sext i32 %91 to i64
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %97

95:                                               ; preds = %63
  %96 = load i32, ptr %25, align 4, !tbaa !9
  br label %98

97:                                               ; preds = %63
  br label %98

98:                                               ; preds = %97, %95
  %99 = phi i32 [ %96, %95 ], [ 0, %97 ]
  %100 = sext i32 %99 to i64
  %101 = call noundef i64 @_ZN5nasoq10add_size_tEmmPi(i64 noundef %92, i64 noundef %100, ptr noundef %31)
  store i64 %101, ptr %30, align 8, !tbaa !20
  %102 = load i32, ptr %31, align 4, !tbaa !9
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %105, label %104

104:                                              ; preds = %98
  store i32 0, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

105:                                              ; preds = %98
  %106 = load i64, ptr %30, align 8, !tbaa !20
  %107 = call noalias ptr @calloc(i64 noundef %106, i64 noundef 4) #7
  store ptr %107, ptr %18, align 8, !tbaa !5
  %108 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %108, ptr %16, align 8, !tbaa !5
  %109 = load ptr, ptr %18, align 8, !tbaa !5
  %110 = load i32, ptr %25, align 4, !tbaa !9
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds i32, ptr %109, i64 %111
  store ptr %112, ptr %17, align 8, !tbaa !5
  %113 = load i32, ptr %23, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %163

115:                                              ; preds = %105
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %125, %115
  %117 = load i32, ptr %26, align 4, !tbaa !9
  %118 = load i32, ptr %25, align 4, !tbaa !9
  %119 = icmp slt i32 %117, %118
  br i1 %119, label %120, label %128

120:                                              ; preds = %116
  %121 = load ptr, ptr %17, align 8, !tbaa !5
  %122 = load i32, ptr %26, align 4, !tbaa !9
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %121, i64 %123
  store i32 -1, ptr %124, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %120
  %126 = load i32, ptr %26, align 4, !tbaa !9
  %127 = add nsw i32 %126, 1
  store i32 %127, ptr %26, align 4, !tbaa !9
  br label %116, !llvm.loop !21

128:                                              ; preds = %116
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %159, %128
  %130 = load i32, ptr %28, align 4, !tbaa !9
  %131 = load i32, ptr %25, align 4, !tbaa !9
  %132 = icmp slt i32 %130, %131
  br i1 %132, label %133, label %162

133:                                              ; preds = %129
  %134 = load ptr, ptr %9, align 8, !tbaa !5
  %135 = load i32, ptr %28, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds i32, ptr %134, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !9
  store i32 %138, ptr %26, align 4, !tbaa !9
  %139 = load i32, ptr %26, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 0
  br i1 %140, label %152, label %141

141:                                              ; preds = %133
  %142 = load i32, ptr %26, align 4, !tbaa !9
  %143 = load i32, ptr %25, align 4, !tbaa !9
  %144 = icmp sgt i32 %142, %143
  br i1 %144, label %152, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %17, align 8, !tbaa !5
  %147 = load i32, ptr %26, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds i32, ptr %146, i64 %148
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp ne i32 %150, -1
  br i1 %151, label %152, label %153

152:                                              ; preds = %145, %141, %133
  store i32 0, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

153:                                              ; preds = %145
  %154 = load i32, ptr %28, align 4, !tbaa !9
  %155 = load ptr, ptr %17, align 8, !tbaa !5
  %156 = load i32, ptr %26, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds i32, ptr %155, i64 %157
  store i32 %154, ptr %158, align 4, !tbaa !9
  br label %159

159:                                              ; preds = %153
  %160 = load i32, ptr %28, align 4, !tbaa !9
  %161 = add nsw i32 %160, 1
  store i32 %161, ptr %28, align 4, !tbaa !9
  br label %129, !llvm.loop !23

162:                                              ; preds = %129
  br label %163

163:                                              ; preds = %162, %105
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %164

164:                                              ; preds = %173, %163
  %165 = load i32, ptr %26, align 4, !tbaa !9
  %166 = load i32, ptr %25, align 4, !tbaa !9
  %167 = icmp slt i32 %165, %166
  br i1 %167, label %168, label %176

168:                                              ; preds = %164
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = load i32, ptr %26, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %169, i64 %171
  store i32 0, ptr %172, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %168
  %174 = load i32, ptr %26, align 4, !tbaa !9
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %26, align 4, !tbaa !9
  br label %164, !llvm.loop !24

176:                                              ; preds = %164
  %177 = load i32, ptr %21, align 4, !tbaa !9
  %178 = icmp ne i32 %177, 0
  br i1 %178, label %179, label %411

179:                                              ; preds = %176
  %180 = load i32, ptr %23, align 4, !tbaa !9
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %314

182:                                              ; preds = %179
  %183 = load i32, ptr %22, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %249

185:                                              ; preds = %182
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %245, %185
  %187 = load i32, ptr %27, align 4, !tbaa !9
  %188 = load i32, ptr %25, align 4, !tbaa !9
  %189 = icmp slt i32 %187, %188
  br i1 %189, label %190, label %248

190:                                              ; preds = %186
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = load i32, ptr %27, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds i32, ptr %191, i64 %193
  %195 = load i32, ptr %194, align 4, !tbaa !9
  store i32 %195, ptr %24, align 4, !tbaa !9
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = load i32, ptr %24, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds i32, ptr %196, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !9
  store i32 %201, ptr %20, align 4, !tbaa !9
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = load i32, ptr %24, align 4, !tbaa !9
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds i32, ptr %202, i64 %204
  %206 = load i32, ptr %205, align 4, !tbaa !9
  store i32 %206, ptr %19, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %241, %190
  %208 = load i32, ptr %19, align 4, !tbaa !9
  %209 = load i32, ptr %20, align 4, !tbaa !9
  %210 = icmp slt i32 %208, %209
  br i1 %210, label %211, label %244

211:                                              ; preds = %207
  %212 = load ptr, ptr %14, align 8, !tbaa !5
  %213 = load i32, ptr %19, align 4, !tbaa !9
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds i32, ptr %212, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !9
  store i32 %216, ptr %29, align 4, !tbaa !9
  %217 = load i32, ptr %29, align 4, !tbaa !9
  %218 = load i32, ptr %24, align 4, !tbaa !9
  %219 = icmp sle i32 %217, %218
  br i1 %219, label %220, label %240

220:                                              ; preds = %211
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i32, ptr %29, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %221, i64 %223
  %225 = load i32, ptr %224, align 4, !tbaa !9
  store i32 %225, ptr %26, align 4, !tbaa !9
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = load i32, ptr %26, align 4, !tbaa !9
  %228 = load i32, ptr %27, align 4, !tbaa !9
  %229 = icmp slt i32 %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %220
  %231 = load i32, ptr %26, align 4, !tbaa !9
  br label %234

232:                                              ; preds = %220
  %233 = load i32, ptr %27, align 4, !tbaa !9
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi i32 [ %231, %230 ], [ %233, %232 ]
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i32, ptr %226, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %237, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %234, %211
  br label %241

241:                                              ; preds = %240
  %242 = load i32, ptr %19, align 4, !tbaa !9
  %243 = add nsw i32 %242, 1
  store i32 %243, ptr %19, align 4, !tbaa !9
  br label %207, !llvm.loop !25

244:                                              ; preds = %207
  br label %245

245:                                              ; preds = %244
  %246 = load i32, ptr %27, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %27, align 4, !tbaa !9
  br label %186, !llvm.loop !26

248:                                              ; preds = %186
  br label %313

249:                                              ; preds = %182
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %309, %249
  %251 = load i32, ptr %27, align 4, !tbaa !9
  %252 = load i32, ptr %25, align 4, !tbaa !9
  %253 = icmp slt i32 %251, %252
  br i1 %253, label %254, label %312

254:                                              ; preds = %250
  %255 = load ptr, ptr %9, align 8, !tbaa !5
  %256 = load i32, ptr %27, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds i32, ptr %255, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !9
  store i32 %259, ptr %24, align 4, !tbaa !9
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = load i32, ptr %24, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i32, ptr %260, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !9
  store i32 %265, ptr %20, align 4, !tbaa !9
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = load i32, ptr %24, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %266, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  store i32 %270, ptr %19, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %305, %254
  %272 = load i32, ptr %19, align 4, !tbaa !9
  %273 = load i32, ptr %20, align 4, !tbaa !9
  %274 = icmp slt i32 %272, %273
  br i1 %274, label %275, label %308

275:                                              ; preds = %271
  %276 = load ptr, ptr %14, align 8, !tbaa !5
  %277 = load i32, ptr %19, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds i32, ptr %276, i64 %278
  %280 = load i32, ptr %279, align 4, !tbaa !9
  store i32 %280, ptr %29, align 4, !tbaa !9
  %281 = load i32, ptr %29, align 4, !tbaa !9
  %282 = load i32, ptr %24, align 4, !tbaa !9
  %283 = icmp sge i32 %281, %282
  br i1 %283, label %284, label %304

284:                                              ; preds = %275
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i32, ptr %29, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %285, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !9
  store i32 %289, ptr %26, align 4, !tbaa !9
  %290 = load ptr, ptr %16, align 8, !tbaa !5
  %291 = load i32, ptr %26, align 4, !tbaa !9
  %292 = load i32, ptr %27, align 4, !tbaa !9
  %293 = icmp sgt i32 %291, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %284
  %295 = load i32, ptr %26, align 4, !tbaa !9
  br label %298

296:                                              ; preds = %284
  %297 = load i32, ptr %27, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %296, %294
  %299 = phi i32 [ %295, %294 ], [ %297, %296 ]
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds i32, ptr %290, i64 %300
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %301, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %298, %275
  br label %305

305:                                              ; preds = %304
  %306 = load i32, ptr %19, align 4, !tbaa !9
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %19, align 4, !tbaa !9
  br label %271, !llvm.loop !27

308:                                              ; preds = %271
  br label %309

309:                                              ; preds = %308
  %310 = load i32, ptr %27, align 4, !tbaa !9
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr %27, align 4, !tbaa !9
  br label %250, !llvm.loop !28

312:                                              ; preds = %250
  br label %313

313:                                              ; preds = %312, %248
  br label %410

314:                                              ; preds = %179
  %315 = load i32, ptr %22, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %363

317:                                              ; preds = %314
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %359, %317
  %319 = load i32, ptr %27, align 4, !tbaa !9
  %320 = load i32, ptr %25, align 4, !tbaa !9
  %321 = icmp slt i32 %319, %320
  br i1 %321, label %322, label %362

322:                                              ; preds = %318
  %323 = load ptr, ptr %12, align 8, !tbaa !5
  %324 = load i32, ptr %27, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %323, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !9
  store i32 %328, ptr %20, align 4, !tbaa !9
  %329 = load ptr, ptr %12, align 8, !tbaa !5
  %330 = load i32, ptr %27, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds i32, ptr %329, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !9
  store i32 %333, ptr %19, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %355, %322
  %335 = load i32, ptr %19, align 4, !tbaa !9
  %336 = load i32, ptr %20, align 4, !tbaa !9
  %337 = icmp slt i32 %335, %336
  br i1 %337, label %338, label %358

338:                                              ; preds = %334
  %339 = load ptr, ptr %14, align 8, !tbaa !5
  %340 = load i32, ptr %19, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds i32, ptr %339, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !9
  store i32 %343, ptr %26, align 4, !tbaa !9
  %344 = load i32, ptr %26, align 4, !tbaa !9
  %345 = load i32, ptr %27, align 4, !tbaa !9
  %346 = icmp sle i32 %344, %345
  br i1 %346, label %347, label %354

347:                                              ; preds = %338
  %348 = load ptr, ptr %16, align 8, !tbaa !5
  %349 = load i32, ptr %26, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %348, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %351, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %347, %338
  br label %355

355:                                              ; preds = %354
  %356 = load i32, ptr %19, align 4, !tbaa !9
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %19, align 4, !tbaa !9
  br label %334, !llvm.loop !29

358:                                              ; preds = %334
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %27, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %27, align 4, !tbaa !9
  br label %318, !llvm.loop !30

362:                                              ; preds = %318
  br label %409

363:                                              ; preds = %314
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %405, %363
  %365 = load i32, ptr %27, align 4, !tbaa !9
  %366 = load i32, ptr %25, align 4, !tbaa !9
  %367 = icmp slt i32 %365, %366
  br i1 %367, label %368, label %408

368:                                              ; preds = %364
  %369 = load ptr, ptr %12, align 8, !tbaa !5
  %370 = load i32, ptr %27, align 4, !tbaa !9
  %371 = add nsw i32 %370, 1
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %369, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !9
  store i32 %374, ptr %20, align 4, !tbaa !9
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  %376 = load i32, ptr %27, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %375, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !9
  store i32 %379, ptr %19, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %401, %368
  %381 = load i32, ptr %19, align 4, !tbaa !9
  %382 = load i32, ptr %20, align 4, !tbaa !9
  %383 = icmp slt i32 %381, %382
  br i1 %383, label %384, label %404

384:                                              ; preds = %380
  %385 = load ptr, ptr %14, align 8, !tbaa !5
  %386 = load i32, ptr %19, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds i32, ptr %385, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !9
  store i32 %389, ptr %26, align 4, !tbaa !9
  %390 = load i32, ptr %26, align 4, !tbaa !9
  %391 = load i32, ptr %27, align 4, !tbaa !9
  %392 = icmp sge i32 %390, %391
  br i1 %392, label %393, label %400

393:                                              ; preds = %384
  %394 = load ptr, ptr %16, align 8, !tbaa !5
  %395 = load i32, ptr %26, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i32, ptr %394, i64 %396
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %397, align 4, !tbaa !9
  br label %400

400:                                              ; preds = %393, %384
  br label %401

401:                                              ; preds = %400
  %402 = load i32, ptr %19, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %19, align 4, !tbaa !9
  br label %380, !llvm.loop !31

404:                                              ; preds = %380
  br label %405

405:                                              ; preds = %404
  %406 = load i32, ptr %27, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %27, align 4, !tbaa !9
  br label %364, !llvm.loop !32

408:                                              ; preds = %364
  br label %409

409:                                              ; preds = %408, %362
  br label %410

410:                                              ; preds = %409, %313
  br label %647

411:                                              ; preds = %176
  %412 = load i32, ptr %23, align 4, !tbaa !9
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %548

414:                                              ; preds = %411
  %415 = load i32, ptr %22, align 4, !tbaa !9
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %417, label %482

417:                                              ; preds = %414
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %478, %417
  %419 = load i32, ptr %27, align 4, !tbaa !9
  %420 = load i32, ptr %25, align 4, !tbaa !9
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %422, label %481

422:                                              ; preds = %418
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = load i32, ptr %27, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i32, ptr %423, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !9
  store i32 %427, ptr %24, align 4, !tbaa !9
  %428 = load ptr, ptr %12, align 8, !tbaa !5
  %429 = load i32, ptr %24, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i32, ptr %428, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !9
  store i32 %432, ptr %19, align 4, !tbaa !9
  %433 = load i32, ptr %19, align 4, !tbaa !9
  %434 = load ptr, ptr %13, align 8, !tbaa !5
  %435 = load i32, ptr %24, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %434, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = add nsw i32 %433, %438
  store i32 %439, ptr %20, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %474, %422
  %441 = load i32, ptr %19, align 4, !tbaa !9
  %442 = load i32, ptr %20, align 4, !tbaa !9
  %443 = icmp slt i32 %441, %442
  br i1 %443, label %444, label %477

444:                                              ; preds = %440
  %445 = load ptr, ptr %14, align 8, !tbaa !5
  %446 = load i32, ptr %19, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds i32, ptr %445, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !9
  store i32 %449, ptr %29, align 4, !tbaa !9
  %450 = load i32, ptr %29, align 4, !tbaa !9
  %451 = load i32, ptr %24, align 4, !tbaa !9
  %452 = icmp sle i32 %450, %451
  br i1 %452, label %453, label %473

453:                                              ; preds = %444
  %454 = load ptr, ptr %17, align 8, !tbaa !5
  %455 = load i32, ptr %29, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds i32, ptr %454, i64 %456
  %458 = load i32, ptr %457, align 4, !tbaa !9
  store i32 %458, ptr %26, align 4, !tbaa !9
  %459 = load ptr, ptr %16, align 8, !tbaa !5
  %460 = load i32, ptr %26, align 4, !tbaa !9
  %461 = load i32, ptr %27, align 4, !tbaa !9
  %462 = icmp slt i32 %460, %461
  br i1 %462, label %463, label %465

463:                                              ; preds = %453
  %464 = load i32, ptr %26, align 4, !tbaa !9
  br label %467

465:                                              ; preds = %453
  %466 = load i32, ptr %27, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %465, %463
  %468 = phi i32 [ %464, %463 ], [ %466, %465 ]
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %459, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %470, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %467, %444
  br label %474

474:                                              ; preds = %473
  %475 = load i32, ptr %19, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %19, align 4, !tbaa !9
  br label %440, !llvm.loop !33

477:                                              ; preds = %440
  br label %478

478:                                              ; preds = %477
  %479 = load i32, ptr %27, align 4, !tbaa !9
  %480 = add nsw i32 %479, 1
  store i32 %480, ptr %27, align 4, !tbaa !9
  br label %418, !llvm.loop !34

481:                                              ; preds = %418
  br label %547

482:                                              ; preds = %414
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %543, %482
  %484 = load i32, ptr %27, align 4, !tbaa !9
  %485 = load i32, ptr %25, align 4, !tbaa !9
  %486 = icmp slt i32 %484, %485
  br i1 %486, label %487, label %546

487:                                              ; preds = %483
  %488 = load ptr, ptr %9, align 8, !tbaa !5
  %489 = load i32, ptr %27, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !9
  store i32 %492, ptr %24, align 4, !tbaa !9
  %493 = load ptr, ptr %12, align 8, !tbaa !5
  %494 = load i32, ptr %24, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %493, i64 %495
  %497 = load i32, ptr %496, align 4, !tbaa !9
  store i32 %497, ptr %19, align 4, !tbaa !9
  %498 = load i32, ptr %19, align 4, !tbaa !9
  %499 = load ptr, ptr %13, align 8, !tbaa !5
  %500 = load i32, ptr %24, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i32, ptr %499, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = add nsw i32 %498, %503
  store i32 %504, ptr %20, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %539, %487
  %506 = load i32, ptr %19, align 4, !tbaa !9
  %507 = load i32, ptr %20, align 4, !tbaa !9
  %508 = icmp slt i32 %506, %507
  br i1 %508, label %509, label %542

509:                                              ; preds = %505
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  %511 = load i32, ptr %19, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds i32, ptr %510, i64 %512
  %514 = load i32, ptr %513, align 4, !tbaa !9
  store i32 %514, ptr %29, align 4, !tbaa !9
  %515 = load i32, ptr %29, align 4, !tbaa !9
  %516 = load i32, ptr %24, align 4, !tbaa !9
  %517 = icmp sge i32 %515, %516
  br i1 %517, label %518, label %538

518:                                              ; preds = %509
  %519 = load ptr, ptr %17, align 8, !tbaa !5
  %520 = load i32, ptr %29, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds i32, ptr %519, i64 %521
  %523 = load i32, ptr %522, align 4, !tbaa !9
  store i32 %523, ptr %26, align 4, !tbaa !9
  %524 = load ptr, ptr %16, align 8, !tbaa !5
  %525 = load i32, ptr %26, align 4, !tbaa !9
  %526 = load i32, ptr %27, align 4, !tbaa !9
  %527 = icmp sgt i32 %525, %526
  br i1 %527, label %528, label %530

528:                                              ; preds = %518
  %529 = load i32, ptr %26, align 4, !tbaa !9
  br label %532

530:                                              ; preds = %518
  %531 = load i32, ptr %27, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %530, %528
  %533 = phi i32 [ %529, %528 ], [ %531, %530 ]
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds i32, ptr %524, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %535, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %532, %509
  br label %539

539:                                              ; preds = %538
  %540 = load i32, ptr %19, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %19, align 4, !tbaa !9
  br label %505, !llvm.loop !35

542:                                              ; preds = %505
  br label %543

543:                                              ; preds = %542
  %544 = load i32, ptr %27, align 4, !tbaa !9
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %27, align 4, !tbaa !9
  br label %483, !llvm.loop !36

546:                                              ; preds = %483
  br label %547

547:                                              ; preds = %546, %481
  br label %646

548:                                              ; preds = %411
  %549 = load i32, ptr %22, align 4, !tbaa !9
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %598

551:                                              ; preds = %548
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %594, %551
  %553 = load i32, ptr %27, align 4, !tbaa !9
  %554 = load i32, ptr %25, align 4, !tbaa !9
  %555 = icmp slt i32 %553, %554
  br i1 %555, label %556, label %597

556:                                              ; preds = %552
  %557 = load ptr, ptr %12, align 8, !tbaa !5
  %558 = load i32, ptr %27, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds i32, ptr %557, i64 %559
  %561 = load i32, ptr %560, align 4, !tbaa !9
  store i32 %561, ptr %19, align 4, !tbaa !9
  %562 = load i32, ptr %19, align 4, !tbaa !9
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = load i32, ptr %27, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds i32, ptr %563, i64 %565
  %567 = load i32, ptr %566, align 4, !tbaa !9
  %568 = add nsw i32 %562, %567
  store i32 %568, ptr %20, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %590, %556
  %570 = load i32, ptr %19, align 4, !tbaa !9
  %571 = load i32, ptr %20, align 4, !tbaa !9
  %572 = icmp slt i32 %570, %571
  br i1 %572, label %573, label %593

573:                                              ; preds = %569
  %574 = load ptr, ptr %14, align 8, !tbaa !5
  %575 = load i32, ptr %19, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %574, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !9
  store i32 %578, ptr %26, align 4, !tbaa !9
  %579 = load i32, ptr %26, align 4, !tbaa !9
  %580 = load i32, ptr %27, align 4, !tbaa !9
  %581 = icmp sle i32 %579, %580
  br i1 %581, label %582, label %589

582:                                              ; preds = %573
  %583 = load ptr, ptr %16, align 8, !tbaa !5
  %584 = load i32, ptr %26, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds i32, ptr %583, i64 %585
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = add nsw i32 %587, 1
  store i32 %588, ptr %586, align 4, !tbaa !9
  br label %589

589:                                              ; preds = %582, %573
  br label %590

590:                                              ; preds = %589
  %591 = load i32, ptr %19, align 4, !tbaa !9
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %19, align 4, !tbaa !9
  br label %569, !llvm.loop !37

593:                                              ; preds = %569
  br label %594

594:                                              ; preds = %593
  %595 = load i32, ptr %27, align 4, !tbaa !9
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr %27, align 4, !tbaa !9
  br label %552, !llvm.loop !38

597:                                              ; preds = %552
  br label %645

598:                                              ; preds = %548
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %599

599:                                              ; preds = %641, %598
  %600 = load i32, ptr %27, align 4, !tbaa !9
  %601 = load i32, ptr %25, align 4, !tbaa !9
  %602 = icmp slt i32 %600, %601
  br i1 %602, label %603, label %644

603:                                              ; preds = %599
  %604 = load ptr, ptr %12, align 8, !tbaa !5
  %605 = load i32, ptr %27, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds i32, ptr %604, i64 %606
  %608 = load i32, ptr %607, align 4, !tbaa !9
  store i32 %608, ptr %19, align 4, !tbaa !9
  %609 = load i32, ptr %19, align 4, !tbaa !9
  %610 = load ptr, ptr %13, align 8, !tbaa !5
  %611 = load i32, ptr %27, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds i32, ptr %610, i64 %612
  %614 = load i32, ptr %613, align 4, !tbaa !9
  %615 = add nsw i32 %609, %614
  store i32 %615, ptr %20, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %637, %603
  %617 = load i32, ptr %19, align 4, !tbaa !9
  %618 = load i32, ptr %20, align 4, !tbaa !9
  %619 = icmp slt i32 %617, %618
  br i1 %619, label %620, label %640

620:                                              ; preds = %616
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = load i32, ptr %19, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i32, ptr %621, i64 %623
  %625 = load i32, ptr %624, align 4, !tbaa !9
  store i32 %625, ptr %26, align 4, !tbaa !9
  %626 = load i32, ptr %26, align 4, !tbaa !9
  %627 = load i32, ptr %27, align 4, !tbaa !9
  %628 = icmp sge i32 %626, %627
  br i1 %628, label %629, label %636

629:                                              ; preds = %620
  %630 = load ptr, ptr %16, align 8, !tbaa !5
  %631 = load i32, ptr %26, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i32, ptr %630, i64 %632
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %633, align 4, !tbaa !9
  br label %636

636:                                              ; preds = %629, %620
  br label %637

637:                                              ; preds = %636
  %638 = load i32, ptr %19, align 4, !tbaa !9
  %639 = add nsw i32 %638, 1
  store i32 %639, ptr %19, align 4, !tbaa !9
  br label %616, !llvm.loop !39

640:                                              ; preds = %616
  br label %641

641:                                              ; preds = %640
  %642 = load i32, ptr %27, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  store i32 %643, ptr %27, align 4, !tbaa !9
  br label %599, !llvm.loop !40

644:                                              ; preds = %599
  br label %645

645:                                              ; preds = %644, %597
  br label %646

646:                                              ; preds = %645, %547
  br label %647

647:                                              ; preds = %646, %410
  store i32 0, ptr %19, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %665, %647
  %649 = load i32, ptr %26, align 4, !tbaa !9
  %650 = load i32, ptr %25, align 4, !tbaa !9
  %651 = icmp slt i32 %649, %650
  br i1 %651, label %652, label %668

652:                                              ; preds = %648
  %653 = load i32, ptr %19, align 4, !tbaa !9
  %654 = load ptr, ptr %15, align 8, !tbaa !5
  %655 = load i32, ptr %26, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i32, ptr %654, i64 %656
  store i32 %653, ptr %657, align 4, !tbaa !9
  %658 = load ptr, ptr %16, align 8, !tbaa !5
  %659 = load i32, ptr %26, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %658, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = load i32, ptr %19, align 4, !tbaa !9
  %664 = add nsw i32 %663, %662
  store i32 %664, ptr %19, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %652
  %666 = load i32, ptr %26, align 4, !tbaa !9
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr %26, align 4, !tbaa !9
  br label %648, !llvm.loop !41

668:                                              ; preds = %648
  %669 = load i32, ptr %19, align 4, !tbaa !9
  %670 = load ptr, ptr %15, align 8, !tbaa !5
  %671 = load i32, ptr %25, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %670, i64 %672
  store i32 %669, ptr %673, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %674

674:                                              ; preds = %688, %668
  %675 = load i32, ptr %26, align 4, !tbaa !9
  %676 = load i32, ptr %25, align 4, !tbaa !9
  %677 = icmp slt i32 %675, %676
  br i1 %677, label %678, label %691

678:                                              ; preds = %674
  %679 = load ptr, ptr %15, align 8, !tbaa !5
  %680 = load i32, ptr %26, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %679, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !9
  %684 = load ptr, ptr %16, align 8, !tbaa !5
  %685 = load i32, ptr %26, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds i32, ptr %684, i64 %686
  store i32 %683, ptr %687, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %678
  %689 = load i32, ptr %26, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr %26, align 4, !tbaa !9
  br label %674, !llvm.loop !42

691:                                              ; preds = %674
  %692 = load i32, ptr %19, align 4, !tbaa !9
  %693 = load ptr, ptr %10, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %693, i32 0, i32 2
  %695 = load i64, ptr %694, align 8, !tbaa !43
  %696 = trunc i64 %695 to i32
  %697 = icmp sgt i32 %692, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %691
  store i32 0, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

699:                                              ; preds = %691
  store i32 0, ptr %31, align 4, !tbaa !9
  %700 = load i32, ptr %8, align 4, !tbaa !9
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %707, label %702

702:                                              ; preds = %699
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %703, i32 0, i32 10
  %705 = load i32, ptr %704, align 8, !tbaa !44
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %714

707:                                              ; preds = %702, %699
  %708 = load ptr, ptr %7, align 8, !tbaa !5
  %709 = load ptr, ptr %9, align 8, !tbaa !5
  %710 = load ptr, ptr %10, align 8, !tbaa !5
  %711 = load ptr, ptr %16, align 8, !tbaa !5
  %712 = load ptr, ptr %17, align 8, !tbaa !5
  %713 = call noundef i32 @_ZN5nasoq18transpose_sym_realEPNS_12sympiler_CSCEPiS1_S2_S2_Ri(ptr noundef %708, ptr noundef %709, ptr noundef %710, ptr noundef %711, ptr noundef %712, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i32 %713, ptr %31, align 4, !tbaa !9
  br label %727

714:                                              ; preds = %702
  %715 = load ptr, ptr %10, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %715, i32 0, i32 10
  %717 = load i32, ptr %716, align 8, !tbaa !44
  %718 = icmp eq i32 %717, 1
  br i1 %718, label %719, label %726

719:                                              ; preds = %714
  %720 = load ptr, ptr %7, align 8, !tbaa !5
  %721 = load ptr, ptr %9, align 8, !tbaa !5
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = load ptr, ptr %16, align 8, !tbaa !5
  %724 = load ptr, ptr %17, align 8, !tbaa !5
  %725 = call noundef i32 @_ZN5nasoq18transpose_sym_realEPNS_12sympiler_CSCEPiS1_S2_S2_Ri(ptr noundef %720, ptr noundef %721, ptr noundef %722, ptr noundef %723, ptr noundef %724, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i32 %725, ptr %31, align 4, !tbaa !9
  br label %726

726:                                              ; preds = %719, %714
  br label %727

727:                                              ; preds = %726, %707
  %728 = load i32, ptr %31, align 4, !tbaa !9
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %756

730:                                              ; preds = %727
  %731 = load i32, ptr %23, align 4, !tbaa !9
  %732 = icmp ne i32 %731, 0
  %733 = xor i1 %732, true
  %734 = zext i1 %733 to i32
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %735, i32 0, i32 12
  store i32 %734, ptr %736, align 8, !tbaa !45
  %737 = load ptr, ptr %10, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %737, i32 0, i32 13
  store i32 1, ptr %738, align 4, !tbaa !19
  %739 = load ptr, ptr %7, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %739, i32 0, i32 8
  %741 = load i32, ptr %740, align 8, !tbaa !15
  %742 = icmp slt i32 %741, 0
  br i1 %742, label %743, label %744

743:                                              ; preds = %730
  br label %751

744:                                              ; preds = %730
  %745 = load ptr, ptr %7, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %745, i32 0, i32 8
  %747 = load i32, ptr %746, align 8, !tbaa !15
  %748 = icmp sgt i32 %747, 0
  %749 = zext i1 %748 to i64
  %750 = select i1 %748, i32 1, i32 0
  br label %751

751:                                              ; preds = %744, %743
  %752 = phi i32 [ -1, %743 ], [ %750, %744 ]
  %753 = sub nsw i32 0, %752
  %754 = load ptr, ptr %10, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.nasoq::sympiler_CSC", ptr %754, i32 0, i32 8
  store i32 %753, ptr %755, align 8, !tbaa !15
  br label %756

756:                                              ; preds = %751, %727
  %757 = load ptr, ptr %18, align 8, !tbaa !5
  call void @free(ptr noundef %757) #6
  %758 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %758, ptr %6, align 4
  store i32 1, ptr %32, align 4
  br label %759

759:                                              ; preds = %756, %698, %152, %104, %62, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  %760 = load i32, ptr %6, align 4
  ret i32 %760
}

declare noundef i64 @_ZN5nasoq10add_size_tEmmPi(i64 noundef, i64 noundef, ptr noundef) #3

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #4

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

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

!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 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTSN5nasoq12sympiler_CSCE", !13, i64 0, !13, i64 8, !13, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = !{!12, !10, i64 64}
!16 = !{!12, !6, i64 24}
!17 = !{!12, !6, i64 32}
!18 = !{!12, !6, i64 40}
!19 = !{!12, !10, i64 84}
!20 = !{!13, !13, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = distinct !{!29, !22}
!30 = distinct !{!30, !22}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = distinct !{!34, !22}
!35 = distinct !{!35, !22}
!36 = distinct !{!36, !22}
!37 = distinct !{!37, !22}
!38 = distinct !{!38, !22}
!39 = distinct !{!39, !22}
!40 = distinct !{!40, !22}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}
!43 = !{!12, !13, i64 16}
!44 = !{!12, !10, i64 72}
!45 = !{!12, !10, i64 80}


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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN5nasoq18transpose_sym_realEPNS_12sympiler_CSCEPiS1_S2_S2_Ri(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN5nasoq13transpose_symEPNS_12sympiler_CSCEiPiS1_i(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) local_unnamed_addr #2 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8
  store i32 1, ptr %7, align 4, !tbaa !5
  %8 = load i64, ptr %0, align 8, !tbaa !9
  %9 = getelementptr inbounds i8, ptr %0, i64 8
  %10 = load i64, ptr %9, align 8, !tbaa !13
  %.not = icmp eq i64 %8, %10
  br i1 %.not, label %11, label %.loopexit323

11:                                               ; preds = %5
  %12 = getelementptr inbounds i8, ptr %0, i64 64
  %13 = load i32, ptr %12, align 8, !tbaa !14
  %14 = icmp eq i32 %13, 0
  br i1 %14, label %.loopexit323, label %15

15:                                               ; preds = %11
  %16 = getelementptr inbounds i8, ptr %3, i64 8
  %17 = load i64, ptr %16, align 8, !tbaa !13
  %.not286 = icmp eq i64 %8, %17
  br i1 %.not286, label %18, label %.loopexit323

18:                                               ; preds = %15
  %19 = load i64, ptr %3, align 8, !tbaa !9
  %.not287 = icmp eq i64 %8, %19
  br i1 %.not287, label %20, label %.loopexit323

20:                                               ; preds = %18
  store i32 1, ptr %6, align 4, !tbaa !5
  %.not288 = icmp eq ptr %2, null
  %21 = trunc i64 %8 to i32
  %22 = getelementptr inbounds i8, ptr %0, i64 24
  %23 = load ptr, ptr %22, align 8, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %0, i64 32
  %25 = load ptr, ptr %24, align 8, !tbaa !16
  %26 = getelementptr inbounds i8, ptr %0, i64 40
  %27 = load ptr, ptr %26, align 8, !tbaa !17
  %28 = getelementptr inbounds i8, ptr %0, i64 84
  %29 = load i32, ptr %28, align 4, !tbaa !18
  %30 = icmp sgt i32 %13, 0
  %31 = getelementptr inbounds i8, ptr %3, i64 24
  %32 = load ptr, ptr %31, align 8, !tbaa !15
  %33 = ptrtoint ptr %32 to i64
  %sext = shl i64 %8, 32
  %34 = ashr exact i64 %sext, 32
  %35 = select i1 %.not288, i64 0, i64 %34
  %36 = call noundef i64 @_ZN5nasoq10add_size_tEmmPi(i64 noundef %34, i64 noundef %35, ptr noundef nonnull %7)
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %.not290 = icmp eq i32 %37, 0
  br i1 %.not290, label %.loopexit323, label %38

38:                                               ; preds = %20
  %39 = call noalias ptr @calloc(i64 noundef %36, i64 noundef 4) #9
  %40 = ptrtoint ptr %39 to i64
  %41 = getelementptr i32, ptr %39, i64 %34
  br i1 %.not288, label %.loopexit322, label %.preheader324

.preheader324:                                    ; preds = %38
  %42 = icmp sgt i32 %21, 0
  br i1 %42, label %.lr.ph327.preheader, label %._crit_edge380.thread

.lr.ph327.preheader:                              ; preds = %.preheader324
  %43 = shl i64 %8, 2
  %44 = and i64 %43, 8589934588
  call void @llvm.memset.p0.i64(ptr align 4 %41, i8 -1, i64 %44, i1 false), !tbaa !5
  %wide.trip.count = and i64 %8, 2147483647
  br label %.lr.ph327

.lr.ph327:                                        ; preds = %.lr.ph327.preheader, %51
  %indvars.iv = phi i64 [ 0, %.lr.ph327.preheader ], [ %indvars.iv.next, %51 ]
  %45 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv
  %46 = load i32, ptr %45, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %46, %21
  br i1 %or.cond, label %.loopexit323, label %47

47:                                               ; preds = %.lr.ph327
  %48 = zext nneg i32 %46 to i64
  %49 = getelementptr inbounds i32, ptr %41, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %.not303 = icmp eq i32 %50, -1
  br i1 %.not303, label %51, label %.loopexit323

51:                                               ; preds = %47
  %52 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %52, ptr %49, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit322, label %.lr.ph327, !llvm.loop !19

.loopexit322:                                     ; preds = %51, %38
  %53 = icmp sgt i32 %21, 0
  br i1 %53, label %.lr.ph329.preheader, label %._crit_edge

.lr.ph329.preheader:                              ; preds = %.loopexit322
  %54 = shl i64 %8, 2
  %55 = and i64 %54, 8589934588
  call void @llvm.memset.p0.i64(ptr align 4 %39, i8 0, i64 %55, i1 false), !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph329.preheader, %.loopexit322
  %.not291 = icmp eq i32 %29, 0
  br i1 %.not291, label %209, label %56

56:                                               ; preds = %._crit_edge
  br i1 %.not288, label %150, label %57

57:                                               ; preds = %56
  br i1 %30, label %.preheader317, label %.preheader319

.preheader319:                                    ; preds = %57
  br i1 %53, label %.lr.ph335.preheader, label %._crit_edge380.thread

.lr.ph335.preheader:                              ; preds = %.preheader319
  %wide.trip.count405 = and i64 %8, 2147483647
  %invariant.gep = getelementptr i8, ptr %25, i64 4
  br label %.lr.ph335

.preheader317:                                    ; preds = %57
  br i1 %53, label %.lr.ph341.preheader, label %._crit_edge380.thread

.lr.ph341.preheader:                              ; preds = %.preheader317
  %wide.trip.count415 = and i64 %8, 2147483647
  %invariant.gep525 = getelementptr i8, ptr %25, i64 4
  br label %.lr.ph341

.lr.ph341:                                        ; preds = %.lr.ph341.preheader, %._crit_edge339
  %indvars.iv412 = phi i64 [ 0, %.lr.ph341.preheader ], [ %indvars.iv.next413, %._crit_edge339 ]
  %58 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv412
  %59 = load i32, ptr %58, align 4, !tbaa !5
  %60 = sext i32 %59 to i64
  %61 = getelementptr i32, ptr %23, i64 %60
  %62 = getelementptr i8, ptr %61, i64 4
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = load i32, ptr %61, align 4, !tbaa !5
  %65 = icmp slt i32 %64, %63
  br i1 %65, label %.lr.ph338.preheader, label %._crit_edge339

.lr.ph338.preheader:                              ; preds = %.lr.ph341
  %66 = sext i32 %64 to i64
  %wide.trip.count410 = sext i32 %63 to i64
  %67 = trunc nuw nsw i64 %indvars.iv412 to i32
  %68 = sub nsw i64 %wide.trip.count410, %66
  %xtraiter512 = and i64 %68, 1
  %lcmp.mod513.not = icmp eq i64 %xtraiter512, 0
  br i1 %lcmp.mod513.not, label %.lr.ph338.prol.loopexit, label %.lr.ph338.prol

.lr.ph338.prol:                                   ; preds = %.lr.ph338.preheader
  %69 = getelementptr inbounds i32, ptr %25, i64 %66
  %70 = load i32, ptr %69, align 4, !tbaa !5
  %.not302.prol = icmp sgt i32 %70, %59
  br i1 %.not302.prol, label %.lr.ph338.prol.loopexit.unr-lcssa, label %71

71:                                               ; preds = %.lr.ph338.prol
  %72 = sext i32 %70 to i64
  %73 = getelementptr inbounds i32, ptr %41, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !5
  %75 = call i32 @llvm.smin.i32(i32 %74, i32 %67)
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %39, i64 %76
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = add nsw i32 %78, 1
  store i32 %79, ptr %77, align 4, !tbaa !5
  br label %.lr.ph338.prol.loopexit.unr-lcssa

.lr.ph338.prol.loopexit.unr-lcssa:                ; preds = %71, %.lr.ph338.prol
  %indvars.iv.next408.prol = add nsw i64 %66, 1
  br label %.lr.ph338.prol.loopexit

.lr.ph338.prol.loopexit:                          ; preds = %.lr.ph338.prol.loopexit.unr-lcssa, %.lr.ph338.preheader
  %indvars.iv407.unr = phi i64 [ %66, %.lr.ph338.preheader ], [ %indvars.iv.next408.prol, %.lr.ph338.prol.loopexit.unr-lcssa ]
  %80 = add nsw i64 %wide.trip.count410, -1
  %81 = icmp eq i64 %80, %66
  br i1 %81, label %._crit_edge339, label %.lr.ph338

.lr.ph338:                                        ; preds = %.lr.ph338.prol.loopexit, %103
  %indvars.iv407 = phi i64 [ %indvars.iv.next408.1, %103 ], [ %indvars.iv407.unr, %.lr.ph338.prol.loopexit ]
  %82 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv407
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %.not302 = icmp sgt i32 %83, %59
  br i1 %.not302, label %.lr.ph338.1, label %84

84:                                               ; preds = %.lr.ph338
  %85 = sext i32 %83 to i64
  %86 = getelementptr inbounds i32, ptr %41, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = call i32 @llvm.smin.i32(i32 %87, i32 %67)
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds i32, ptr %39, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %90, align 4, !tbaa !5
  br label %.lr.ph338.1

.lr.ph338.1:                                      ; preds = %.lr.ph338, %84
  %gep526 = getelementptr i32, ptr %invariant.gep525, i64 %indvars.iv407
  %93 = load i32, ptr %gep526, align 4, !tbaa !5
  %.not302.1 = icmp sgt i32 %93, %59
  br i1 %.not302.1, label %103, label %94

94:                                               ; preds = %.lr.ph338.1
  %95 = sext i32 %93 to i64
  %96 = getelementptr inbounds i32, ptr %41, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call i32 @llvm.smin.i32(i32 %97, i32 %67)
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds i32, ptr %39, i64 %99
  %101 = load i32, ptr %100, align 4, !tbaa !5
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr %100, align 4, !tbaa !5
  br label %103

103:                                              ; preds = %94, %.lr.ph338.1
  %indvars.iv.next408.1 = add nsw i64 %indvars.iv407, 2
  %exitcond411.not.1 = icmp eq i64 %indvars.iv.next408.1, %wide.trip.count410
  br i1 %exitcond411.not.1, label %._crit_edge339, label %.lr.ph338, !llvm.loop !21

._crit_edge339:                                   ; preds = %.lr.ph338.prol.loopexit, %103, %.lr.ph341
  %indvars.iv.next413 = add nuw nsw i64 %indvars.iv412, 1
  %exitcond416.not = icmp eq i64 %indvars.iv.next413, %wide.trip.count415
  br i1 %exitcond416.not, label %.loopexit, label %.lr.ph341, !llvm.loop !22

.lr.ph335:                                        ; preds = %.lr.ph335.preheader, %._crit_edge333
  %indvars.iv402 = phi i64 [ 0, %.lr.ph335.preheader ], [ %indvars.iv.next403, %._crit_edge333 ]
  %104 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv402
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = sext i32 %105 to i64
  %107 = getelementptr i32, ptr %23, i64 %106
  %108 = getelementptr i8, ptr %107, i64 4
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %110 = load i32, ptr %107, align 4, !tbaa !5
  %111 = icmp slt i32 %110, %109
  br i1 %111, label %.lr.ph332.preheader, label %._crit_edge333

.lr.ph332.preheader:                              ; preds = %.lr.ph335
  %112 = sext i32 %110 to i64
  %wide.trip.count400 = sext i32 %109 to i64
  %113 = trunc nuw nsw i64 %indvars.iv402 to i32
  %114 = sub nsw i64 %wide.trip.count400, %112
  %xtraiter = and i64 %114, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph332.prol.loopexit, label %.lr.ph332.prol

.lr.ph332.prol:                                   ; preds = %.lr.ph332.preheader
  %115 = getelementptr inbounds i32, ptr %25, i64 %112
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %.not298.prol = icmp slt i32 %116, %105
  br i1 %.not298.prol, label %.lr.ph332.prol.loopexit.unr-lcssa, label %117

117:                                              ; preds = %.lr.ph332.prol
  %118 = sext i32 %116 to i64
  %119 = getelementptr inbounds i32, ptr %41, i64 %118
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = call i32 @llvm.smax.i32(i32 %120, i32 %113)
  %122 = zext nneg i32 %121 to i64
  %123 = getelementptr inbounds i32, ptr %39, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = add nsw i32 %124, 1
  store i32 %125, ptr %123, align 4, !tbaa !5
  br label %.lr.ph332.prol.loopexit.unr-lcssa

.lr.ph332.prol.loopexit.unr-lcssa:                ; preds = %117, %.lr.ph332.prol
  %indvars.iv.next398.prol = add nsw i64 %112, 1
  br label %.lr.ph332.prol.loopexit

.lr.ph332.prol.loopexit:                          ; preds = %.lr.ph332.prol.loopexit.unr-lcssa, %.lr.ph332.preheader
  %indvars.iv397.unr = phi i64 [ %112, %.lr.ph332.preheader ], [ %indvars.iv.next398.prol, %.lr.ph332.prol.loopexit.unr-lcssa ]
  %126 = add nsw i64 %wide.trip.count400, -1
  %127 = icmp eq i64 %126, %112
  br i1 %127, label %._crit_edge333, label %.lr.ph332

.lr.ph332:                                        ; preds = %.lr.ph332.prol.loopexit, %149
  %indvars.iv397 = phi i64 [ %indvars.iv.next398.1, %149 ], [ %indvars.iv397.unr, %.lr.ph332.prol.loopexit ]
  %128 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv397
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %.not298 = icmp slt i32 %129, %105
  br i1 %.not298, label %.lr.ph332.1, label %130

130:                                              ; preds = %.lr.ph332
  %131 = sext i32 %129 to i64
  %132 = getelementptr inbounds i32, ptr %41, i64 %131
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = call i32 @llvm.smax.i32(i32 %133, i32 %113)
  %135 = zext nneg i32 %134 to i64
  %136 = getelementptr inbounds i32, ptr %39, i64 %135
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %136, align 4, !tbaa !5
  br label %.lr.ph332.1

.lr.ph332.1:                                      ; preds = %.lr.ph332, %130
  %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv397
  %139 = load i32, ptr %gep, align 4, !tbaa !5
  %.not298.1 = icmp slt i32 %139, %105
  br i1 %.not298.1, label %149, label %140

140:                                              ; preds = %.lr.ph332.1
  %141 = sext i32 %139 to i64
  %142 = getelementptr inbounds i32, ptr %41, i64 %141
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = call i32 @llvm.smax.i32(i32 %143, i32 %113)
  %145 = zext nneg i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %39, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !5
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %146, align 4, !tbaa !5
  br label %149

149:                                              ; preds = %140, %.lr.ph332.1
  %indvars.iv.next398.1 = add nsw i64 %indvars.iv397, 2
  %exitcond401.not.1 = icmp eq i64 %indvars.iv.next398.1, %wide.trip.count400
  br i1 %exitcond401.not.1, label %._crit_edge333, label %.lr.ph332, !llvm.loop !23

._crit_edge333:                                   ; preds = %.lr.ph332.prol.loopexit, %149, %.lr.ph335
  %indvars.iv.next403 = add nuw nsw i64 %indvars.iv402, 1
  %exitcond406.not = icmp eq i64 %indvars.iv.next403, %wide.trip.count405
  br i1 %exitcond406.not, label %.loopexit, label %.lr.ph335, !llvm.loop !24

150:                                              ; preds = %56
  br i1 %30, label %.preheader312, label %.preheader315

.preheader315:                                    ; preds = %150
  br i1 %53, label %.lr.ph346.preheader, label %._crit_edge380.thread

.lr.ph346.preheader:                              ; preds = %.preheader315
  %wide.trip.count425 = and i64 %8, 2147483647
  %.pre = load i32, ptr %23, align 4, !tbaa !5
  %invariant.gep527 = getelementptr i8, ptr %25, i64 4
  br label %.lr.ph346

.preheader312:                                    ; preds = %150
  br i1 %53, label %.lr.ph351.preheader, label %._crit_edge380.thread

.lr.ph351.preheader:                              ; preds = %.preheader312
  %wide.trip.count435 = and i64 %8, 2147483647
  %.pre479 = load i32, ptr %23, align 4, !tbaa !5
  %invariant.gep529 = getelementptr i8, ptr %25, i64 4
  br label %.lr.ph351

.loopexit311:                                     ; preds = %.lr.ph349.prol.loopexit, %179, %.lr.ph351
  %exitcond436.not = icmp eq i64 %indvars.iv.next433, %wide.trip.count435
  br i1 %exitcond436.not, label %.loopexit, label %.lr.ph351, !llvm.loop !25

.lr.ph351:                                        ; preds = %.lr.ph351.preheader, %.loopexit311
  %151 = phi i32 [ %.pre479, %.lr.ph351.preheader ], [ %153, %.loopexit311 ]
  %indvars.iv432 = phi i64 [ 0, %.lr.ph351.preheader ], [ %indvars.iv.next433, %.loopexit311 ]
  %indvars.iv.next433 = add nuw nsw i64 %indvars.iv432, 1
  %152 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv.next433
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = icmp slt i32 %151, %153
  br i1 %154, label %.lr.ph349.preheader, label %.loopexit311

.lr.ph349.preheader:                              ; preds = %.lr.ph351
  %155 = sext i32 %151 to i64
  %wide.trip.count430 = sext i32 %153 to i64
  %156 = sub nsw i64 %wide.trip.count430, %155
  %xtraiter516 = and i64 %156, 1
  %lcmp.mod517.not = icmp eq i64 %xtraiter516, 0
  br i1 %lcmp.mod517.not, label %.lr.ph349.prol.loopexit, label %.lr.ph349.prol

.lr.ph349.prol:                                   ; preds = %.lr.ph349.preheader
  %157 = getelementptr inbounds i32, ptr %25, i64 %155
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = sext i32 %158 to i64
  %.not297.prol = icmp slt i64 %indvars.iv432, %159
  br i1 %.not297.prol, label %.lr.ph349.prol.loopexit.unr-lcssa, label %160

160:                                              ; preds = %.lr.ph349.prol
  %161 = getelementptr inbounds i32, ptr %39, i64 %159
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = add nsw i32 %162, 1
  store i32 %163, ptr %161, align 4, !tbaa !5
  br label %.lr.ph349.prol.loopexit.unr-lcssa

.lr.ph349.prol.loopexit.unr-lcssa:                ; preds = %160, %.lr.ph349.prol
  %indvars.iv.next428.prol = add nsw i64 %155, 1
  br label %.lr.ph349.prol.loopexit

.lr.ph349.prol.loopexit:                          ; preds = %.lr.ph349.prol.loopexit.unr-lcssa, %.lr.ph349.preheader
  %indvars.iv427.unr = phi i64 [ %155, %.lr.ph349.preheader ], [ %indvars.iv.next428.prol, %.lr.ph349.prol.loopexit.unr-lcssa ]
  %164 = add nsw i64 %wide.trip.count430, -1
  %165 = icmp eq i64 %164, %155
  br i1 %165, label %.loopexit311, label %.lr.ph349

.lr.ph349:                                        ; preds = %.lr.ph349.prol.loopexit, %179
  %indvars.iv427 = phi i64 [ %indvars.iv.next428.1, %179 ], [ %indvars.iv427.unr, %.lr.ph349.prol.loopexit ]
  %166 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv427
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = sext i32 %167 to i64
  %.not297 = icmp slt i64 %indvars.iv432, %168
  br i1 %.not297, label %.lr.ph349.1, label %169

169:                                              ; preds = %.lr.ph349
  %170 = getelementptr inbounds i32, ptr %39, i64 %168
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %170, align 4, !tbaa !5
  br label %.lr.ph349.1

.lr.ph349.1:                                      ; preds = %.lr.ph349, %169
  %gep530 = getelementptr i32, ptr %invariant.gep529, i64 %indvars.iv427
  %173 = load i32, ptr %gep530, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %.not297.1 = icmp slt i64 %indvars.iv432, %174
  br i1 %.not297.1, label %179, label %175

175:                                              ; preds = %.lr.ph349.1
  %176 = getelementptr inbounds i32, ptr %39, i64 %174
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr %176, align 4, !tbaa !5
  br label %179

179:                                              ; preds = %175, %.lr.ph349.1
  %indvars.iv.next428.1 = add nsw i64 %indvars.iv427, 2
  %exitcond431.not.1 = icmp eq i64 %indvars.iv.next428.1, %wide.trip.count430
  br i1 %exitcond431.not.1, label %.loopexit311, label %.lr.ph349, !llvm.loop !26

.loopexit314:                                     ; preds = %.lr.ph344.prol.loopexit, %208, %.lr.ph346
  %exitcond426.not = icmp eq i64 %indvars.iv.next423, %wide.trip.count425
  br i1 %exitcond426.not, label %.loopexit, label %.lr.ph346, !llvm.loop !27

.lr.ph346:                                        ; preds = %.lr.ph346.preheader, %.loopexit314
  %180 = phi i32 [ %.pre, %.lr.ph346.preheader ], [ %182, %.loopexit314 ]
  %indvars.iv422 = phi i64 [ 0, %.lr.ph346.preheader ], [ %indvars.iv.next423, %.loopexit314 ]
  %indvars.iv.next423 = add nuw nsw i64 %indvars.iv422, 1
  %181 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv.next423
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = icmp slt i32 %180, %182
  br i1 %183, label %.lr.ph344.preheader, label %.loopexit314

.lr.ph344.preheader:                              ; preds = %.lr.ph346
  %184 = sext i32 %180 to i64
  %wide.trip.count420 = sext i32 %182 to i64
  %185 = sub nsw i64 %wide.trip.count420, %184
  %xtraiter514 = and i64 %185, 1
  %lcmp.mod515.not = icmp eq i64 %xtraiter514, 0
  br i1 %lcmp.mod515.not, label %.lr.ph344.prol.loopexit, label %.lr.ph344.prol

.lr.ph344.prol:                                   ; preds = %.lr.ph344.preheader
  %186 = getelementptr inbounds i32, ptr %25, i64 %184
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = sext i32 %187 to i64
  %.not296.prol = icmp sgt i64 %indvars.iv422, %188
  br i1 %.not296.prol, label %.lr.ph344.prol.loopexit.unr-lcssa, label %189

189:                                              ; preds = %.lr.ph344.prol
  %190 = getelementptr inbounds i32, ptr %39, i64 %188
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %190, align 4, !tbaa !5
  br label %.lr.ph344.prol.loopexit.unr-lcssa

.lr.ph344.prol.loopexit.unr-lcssa:                ; preds = %189, %.lr.ph344.prol
  %indvars.iv.next418.prol = add nsw i64 %184, 1
  br label %.lr.ph344.prol.loopexit

.lr.ph344.prol.loopexit:                          ; preds = %.lr.ph344.prol.loopexit.unr-lcssa, %.lr.ph344.preheader
  %indvars.iv417.unr = phi i64 [ %184, %.lr.ph344.preheader ], [ %indvars.iv.next418.prol, %.lr.ph344.prol.loopexit.unr-lcssa ]
  %193 = add nsw i64 %wide.trip.count420, -1
  %194 = icmp eq i64 %193, %184
  br i1 %194, label %.loopexit314, label %.lr.ph344

.lr.ph344:                                        ; preds = %.lr.ph344.prol.loopexit, %208
  %indvars.iv417 = phi i64 [ %indvars.iv.next418.1, %208 ], [ %indvars.iv417.unr, %.lr.ph344.prol.loopexit ]
  %195 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv417
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %.not296 = icmp sgt i64 %indvars.iv422, %197
  br i1 %.not296, label %.lr.ph344.1, label %198

198:                                              ; preds = %.lr.ph344
  %199 = getelementptr inbounds i32, ptr %39, i64 %197
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %199, align 4, !tbaa !5
  br label %.lr.ph344.1

.lr.ph344.1:                                      ; preds = %.lr.ph344, %198
  %gep528 = getelementptr i32, ptr %invariant.gep527, i64 %indvars.iv417
  %202 = load i32, ptr %gep528, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %.not296.1 = icmp sgt i64 %indvars.iv422, %203
  br i1 %.not296.1, label %208, label %204

204:                                              ; preds = %.lr.ph344.1
  %205 = getelementptr inbounds i32, ptr %39, i64 %203
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %205, align 4, !tbaa !5
  br label %208

208:                                              ; preds = %204, %.lr.ph344.1
  %indvars.iv.next418.1 = add nsw i64 %indvars.iv417, 2
  %exitcond421.not.1 = icmp eq i64 %indvars.iv.next418.1, %wide.trip.count420
  br i1 %exitcond421.not.1, label %.loopexit314, label %.lr.ph344, !llvm.loop !28

209:                                              ; preds = %._crit_edge
  br i1 %.not288, label %261, label %210

210:                                              ; preds = %209
  br i1 %30, label %.preheader307, label %.preheader309

.preheader309:                                    ; preds = %210
  br i1 %53, label %.lr.ph357.preheader, label %._crit_edge380.thread

.lr.ph357.preheader:                              ; preds = %.preheader309
  %wide.trip.count443 = and i64 %8, 2147483647
  br label %.lr.ph357

.preheader307:                                    ; preds = %210
  br i1 %53, label %.lr.ph363.preheader, label %._crit_edge380.thread

.lr.ph363.preheader:                              ; preds = %.preheader307
  %wide.trip.count451 = and i64 %8, 2147483647
  br label %.lr.ph363

.lr.ph363:                                        ; preds = %.lr.ph363.preheader, %._crit_edge361
  %indvars.iv448 = phi i64 [ 0, %.lr.ph363.preheader ], [ %indvars.iv.next449, %._crit_edge361 ]
  %211 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv448
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds i32, ptr %27, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %.lr.ph360.preheader, label %._crit_edge361

.lr.ph360.preheader:                              ; preds = %.lr.ph363
  %217 = getelementptr inbounds i32, ptr %23, i64 %213
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = add nsw i32 %215, %218
  %220 = sext i32 %218 to i64
  %221 = sext i32 %219 to i64
  %222 = trunc nuw nsw i64 %indvars.iv448 to i32
  br label %.lr.ph360

.lr.ph360:                                        ; preds = %.lr.ph360.preheader, %234
  %indvars.iv445 = phi i64 [ %220, %.lr.ph360.preheader ], [ %indvars.iv.next446, %234 ]
  %223 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv445
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %.not295 = icmp sgt i32 %224, %212
  br i1 %.not295, label %234, label %225

225:                                              ; preds = %.lr.ph360
  %226 = sext i32 %224 to i64
  %227 = getelementptr inbounds i32, ptr %41, i64 %226
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = call i32 @llvm.smin.i32(i32 %228, i32 %222)
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %39, i64 %230
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %231, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %.lr.ph360, %225
  %indvars.iv.next446 = add nsw i64 %indvars.iv445, 1
  %235 = icmp slt i64 %indvars.iv.next446, %221
  br i1 %235, label %.lr.ph360, label %._crit_edge361, !llvm.loop !29

._crit_edge361:                                   ; preds = %234, %.lr.ph363
  %indvars.iv.next449 = add nuw nsw i64 %indvars.iv448, 1
  %exitcond452.not = icmp eq i64 %indvars.iv.next449, %wide.trip.count451
  br i1 %exitcond452.not, label %.loopexit, label %.lr.ph363, !llvm.loop !30

.lr.ph357:                                        ; preds = %.lr.ph357.preheader, %._crit_edge355
  %indvars.iv440 = phi i64 [ 0, %.lr.ph357.preheader ], [ %indvars.iv.next441, %._crit_edge355 ]
  %236 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv440
  %237 = load i32, ptr %236, align 4, !tbaa !5
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %27, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !5
  %241 = icmp sgt i32 %240, 0
  br i1 %241, label %.lr.ph354.preheader, label %._crit_edge355

.lr.ph354.preheader:                              ; preds = %.lr.ph357
  %242 = getelementptr inbounds i32, ptr %23, i64 %238
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = add nsw i32 %240, %243
  %245 = sext i32 %243 to i64
  %246 = sext i32 %244 to i64
  %247 = trunc nuw nsw i64 %indvars.iv440 to i32
  br label %.lr.ph354

.lr.ph354:                                        ; preds = %.lr.ph354.preheader, %259
  %indvars.iv437 = phi i64 [ %245, %.lr.ph354.preheader ], [ %indvars.iv.next438, %259 ]
  %248 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv437
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %.not294 = icmp slt i32 %249, %237
  br i1 %.not294, label %259, label %250

250:                                              ; preds = %.lr.ph354
  %251 = sext i32 %249 to i64
  %252 = getelementptr inbounds i32, ptr %41, i64 %251
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %254 = call i32 @llvm.smax.i32(i32 %253, i32 %247)
  %255 = zext nneg i32 %254 to i64
  %256 = getelementptr inbounds i32, ptr %39, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %256, align 4, !tbaa !5
  br label %259

259:                                              ; preds = %.lr.ph354, %250
  %indvars.iv.next438 = add nsw i64 %indvars.iv437, 1
  %260 = icmp slt i64 %indvars.iv.next438, %246
  br i1 %260, label %.lr.ph354, label %._crit_edge355, !llvm.loop !31

._crit_edge355:                                   ; preds = %259, %.lr.ph357
  %indvars.iv.next441 = add nuw nsw i64 %indvars.iv440, 1
  %exitcond444.not = icmp eq i64 %indvars.iv.next441, %wide.trip.count443
  br i1 %exitcond444.not, label %.loopexit, label %.lr.ph357, !llvm.loop !32

261:                                              ; preds = %209
  br i1 %30, label %.preheader, label %.preheader305

.preheader305:                                    ; preds = %261
  br i1 %53, label %.lr.ph369.preheader, label %._crit_edge380.thread

.lr.ph369.preheader:                              ; preds = %.preheader305
  %wide.trip.count459 = and i64 %8, 2147483647
  br label %.lr.ph369

.preheader:                                       ; preds = %261
  br i1 %53, label %.lr.ph375.preheader, label %._crit_edge380.thread

.lr.ph375.preheader:                              ; preds = %.preheader
  %wide.trip.count467 = and i64 %8, 2147483647
  br label %.lr.ph375

.lr.ph375:                                        ; preds = %.lr.ph375.preheader, %._crit_edge373
  %indvars.iv464 = phi i64 [ 0, %.lr.ph375.preheader ], [ %indvars.iv.next465, %._crit_edge373 ]
  %262 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv464
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %.lr.ph372.preheader, label %._crit_edge373

.lr.ph372.preheader:                              ; preds = %.lr.ph375
  %265 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv464
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = add nsw i32 %263, %266
  %268 = sext i32 %266 to i64
  %269 = sext i32 %267 to i64
  br label %.lr.ph372

.lr.ph372:                                        ; preds = %.lr.ph372.preheader, %277
  %indvars.iv461 = phi i64 [ %268, %.lr.ph372.preheader ], [ %indvars.iv.next462, %277 ]
  %270 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv461
  %271 = load i32, ptr %270, align 4, !tbaa !5
  %272 = sext i32 %271 to i64
  %.not293 = icmp slt i64 %indvars.iv464, %272
  br i1 %.not293, label %277, label %273

273:                                              ; preds = %.lr.ph372
  %274 = getelementptr inbounds i32, ptr %39, i64 %272
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %274, align 4, !tbaa !5
  br label %277

277:                                              ; preds = %.lr.ph372, %273
  %indvars.iv.next462 = add nsw i64 %indvars.iv461, 1
  %278 = icmp slt i64 %indvars.iv.next462, %269
  br i1 %278, label %.lr.ph372, label %._crit_edge373, !llvm.loop !33

._crit_edge373:                                   ; preds = %277, %.lr.ph375
  %indvars.iv.next465 = add nuw nsw i64 %indvars.iv464, 1
  %exitcond468.not = icmp eq i64 %indvars.iv.next465, %wide.trip.count467
  br i1 %exitcond468.not, label %.loopexit, label %.lr.ph375, !llvm.loop !34

.lr.ph369:                                        ; preds = %.lr.ph369.preheader, %._crit_edge367
  %indvars.iv456 = phi i64 [ 0, %.lr.ph369.preheader ], [ %indvars.iv.next457, %._crit_edge367 ]
  %279 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv456
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = icmp sgt i32 %280, 0
  br i1 %281, label %.lr.ph366.preheader, label %._crit_edge367

.lr.ph366.preheader:                              ; preds = %.lr.ph369
  %282 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv456
  %283 = load i32, ptr %282, align 4, !tbaa !5
  %284 = add nsw i32 %280, %283
  %285 = sext i32 %283 to i64
  %286 = sext i32 %284 to i64
  br label %.lr.ph366

.lr.ph366:                                        ; preds = %.lr.ph366.preheader, %294
  %indvars.iv453 = phi i64 [ %285, %.lr.ph366.preheader ], [ %indvars.iv.next454, %294 ]
  %287 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv453
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = sext i32 %288 to i64
  %.not292 = icmp sgt i64 %indvars.iv456, %289
  br i1 %.not292, label %294, label %290

290:                                              ; preds = %.lr.ph366
  %291 = getelementptr inbounds i32, ptr %39, i64 %289
  %292 = load i32, ptr %291, align 4, !tbaa !5
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %291, align 4, !tbaa !5
  br label %294

294:                                              ; preds = %.lr.ph366, %290
  %indvars.iv.next454 = add nsw i64 %indvars.iv453, 1
  %295 = icmp slt i64 %indvars.iv.next454, %286
  br i1 %295, label %.lr.ph366, label %._crit_edge367, !llvm.loop !35

._crit_edge367:                                   ; preds = %294, %.lr.ph369
  %indvars.iv.next457 = add nuw nsw i64 %indvars.iv456, 1
  %exitcond460.not = icmp eq i64 %indvars.iv.next457, %wide.trip.count459
  br i1 %exitcond460.not, label %.loopexit, label %.lr.ph369, !llvm.loop !36

.loopexit:                                        ; preds = %._crit_edge333, %._crit_edge339, %.loopexit314, %.loopexit311, %._crit_edge355, %._crit_edge361, %._crit_edge367, %._crit_edge373
  br i1 %53, label %.lr.ph379.preheader, label %._crit_edge380.thread

.lr.ph379.preheader:                              ; preds = %.loopexit
  %wide.trip.count472 = and i64 %8, 2147483647
  %296 = add nsw i64 %wide.trip.count472, -1
  %xtraiter518 = and i64 %8, 3
  %297 = icmp ult i64 %296, 3
  br i1 %297, label %._crit_edge380.unr-lcssa, label %.lr.ph379.preheader.new

.lr.ph379.preheader.new:                          ; preds = %.lr.ph379.preheader
  %unroll_iter = sub nsw i64 %wide.trip.count472, %xtraiter518
  br label %.lr.ph379

.lr.ph379:                                        ; preds = %.lr.ph379, %.lr.ph379.preheader.new
  %indvars.iv469 = phi i64 [ 0, %.lr.ph379.preheader.new ], [ %indvars.iv.next470.3, %.lr.ph379 ]
  %.8376 = phi i32 [ 0, %.lr.ph379.preheader.new ], [ %313, %.lr.ph379 ]
  %niter = phi i64 [ 0, %.lr.ph379.preheader.new ], [ %niter.next.3, %.lr.ph379 ]
  %298 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv469
  store i32 %.8376, ptr %298, align 4, !tbaa !5
  %299 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv469
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = add nsw i32 %300, %.8376
  %indvars.iv.next470 = or disjoint i64 %indvars.iv469, 1
  %302 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next470
  store i32 %301, ptr %302, align 4, !tbaa !5
  %303 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next470
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = add nsw i32 %304, %301
  %indvars.iv.next470.1 = or disjoint i64 %indvars.iv469, 2
  %306 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next470.1
  store i32 %305, ptr %306, align 4, !tbaa !5
  %307 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next470.1
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = add nsw i32 %308, %305
  %indvars.iv.next470.2 = or disjoint i64 %indvars.iv469, 3
  %310 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next470.2
  store i32 %309, ptr %310, align 4, !tbaa !5
  %311 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next470.2
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = add nsw i32 %312, %309
  %indvars.iv.next470.3 = add nuw nsw i64 %indvars.iv469, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge380.unr-lcssa, label %.lr.ph379, !llvm.loop !37

._crit_edge380.thread:                            ; preds = %.preheader324, %.loopexit, %.preheader319, %.preheader317, %.preheader315, %.preheader312, %.preheader309, %.preheader307, %.preheader305, %.preheader
  %314 = getelementptr inbounds i32, ptr %32, i64 %34
  store i32 0, ptr %314, align 4, !tbaa !5
  br label %._crit_edge384

._crit_edge380.unr-lcssa:                         ; preds = %.lr.ph379, %.lr.ph379.preheader
  %.lcssa.ph = phi i32 [ poison, %.lr.ph379.preheader ], [ %313, %.lr.ph379 ]
  %indvars.iv469.unr = phi i64 [ 0, %.lr.ph379.preheader ], [ %indvars.iv.next470.3, %.lr.ph379 ]
  %.8376.unr = phi i32 [ 0, %.lr.ph379.preheader ], [ %313, %.lr.ph379 ]
  %lcmp.mod519.not = icmp eq i64 %xtraiter518, 0
  br i1 %lcmp.mod519.not, label %._crit_edge380, label %.lr.ph379.epil

.lr.ph379.epil:                                   ; preds = %._crit_edge380.unr-lcssa, %.lr.ph379.epil
  %indvars.iv469.epil = phi i64 [ %indvars.iv.next470.epil, %.lr.ph379.epil ], [ %indvars.iv469.unr, %._crit_edge380.unr-lcssa ]
  %.8376.epil = phi i32 [ %318, %.lr.ph379.epil ], [ %.8376.unr, %._crit_edge380.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph379.epil ], [ 0, %._crit_edge380.unr-lcssa ]
  %315 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv469.epil
  store i32 %.8376.epil, ptr %315, align 4, !tbaa !5
  %316 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv469.epil
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = add nsw i32 %317, %.8376.epil
  %indvars.iv.next470.epil = add nuw nsw i64 %indvars.iv469.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter518
  br i1 %epil.iter.cmp.not, label %._crit_edge380, label %.lr.ph379.epil, !llvm.loop !38

._crit_edge380:                                   ; preds = %.lr.ph379.epil, %._crit_edge380.unr-lcssa
  %.lcssa = phi i32 [ %.lcssa.ph, %._crit_edge380.unr-lcssa ], [ %318, %.lr.ph379.epil ]
  %319 = getelementptr inbounds i32, ptr %32, i64 %34
  store i32 %.lcssa, ptr %319, align 4, !tbaa !5
  br i1 %53, label %.lr.ph383.preheader, label %._crit_edge384

.lr.ph383.preheader:                              ; preds = %._crit_edge380
  %wide.trip.count477 = and i64 %8, 2147483647
  %min.iters.check = icmp ult i64 %wide.trip.count472, 8
  %320 = sub i64 %40, %33
  %diff.check = icmp ult i64 %320, 32
  %or.cond503 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond503, label %.lr.ph383.preheader504, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph383.preheader
  %n.mod.vf = and i64 %8, 7
  %n.vec = sub nsw i64 %wide.trip.count472, %n.mod.vf
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %321 = getelementptr inbounds i32, ptr %32, i64 %index
  %322 = getelementptr inbounds i8, ptr %321, i64 16
  %wide.load = load <4 x i32>, ptr %321, align 4, !tbaa !5
  %wide.load502 = load <4 x i32>, ptr %322, align 4, !tbaa !5
  %323 = getelementptr inbounds i32, ptr %39, i64 %index
  %324 = getelementptr inbounds i8, ptr %323, i64 16
  store <4 x i32> %wide.load, ptr %323, align 4, !tbaa !5
  store <4 x i32> %wide.load502, ptr %324, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %325 = icmp eq i64 %index.next, %n.vec
  br i1 %325, label %middle.block, label %vector.body, !llvm.loop !40

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.mod.vf, 0
  br i1 %cmp.n, label %._crit_edge384, label %.lr.ph383.preheader504

.lr.ph383.preheader504:                           ; preds = %middle.block, %.lr.ph383.preheader
  %indvars.iv474.ph = phi i64 [ 0, %.lr.ph383.preheader ], [ %n.vec, %middle.block ]
  %326 = sub i64 %8, %indvars.iv474.ph
  %xtraiter521 = and i64 %326, 3
  %lcmp.mod522.not = icmp eq i64 %xtraiter521, 0
  br i1 %lcmp.mod522.not, label %.lr.ph383.prol.loopexit, label %.lr.ph383.prol

.lr.ph383.prol:                                   ; preds = %.lr.ph383.preheader504, %.lr.ph383.prol
  %indvars.iv474.prol = phi i64 [ %indvars.iv.next475.prol, %.lr.ph383.prol ], [ %indvars.iv474.ph, %.lr.ph383.preheader504 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph383.prol ], [ 0, %.lr.ph383.preheader504 ]
  %327 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv474.prol
  %328 = load i32, ptr %327, align 4, !tbaa !5
  %329 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv474.prol
  store i32 %328, ptr %329, align 4, !tbaa !5
  %indvars.iv.next475.prol = add nuw nsw i64 %indvars.iv474.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter521
  br i1 %prol.iter.cmp.not, label %.lr.ph383.prol.loopexit, label %.lr.ph383.prol, !llvm.loop !43

.lr.ph383.prol.loopexit:                          ; preds = %.lr.ph383.prol, %.lr.ph383.preheader504
  %indvars.iv474.unr = phi i64 [ %indvars.iv474.ph, %.lr.ph383.preheader504 ], [ %indvars.iv.next475.prol, %.lr.ph383.prol ]
  %330 = sub nsw i64 %indvars.iv474.ph, %wide.trip.count472
  %331 = icmp ugt i64 %330, -4
  br i1 %331, label %._crit_edge384, label %.lr.ph383

.lr.ph383:                                        ; preds = %.lr.ph383.prol.loopexit, %.lr.ph383
  %indvars.iv474 = phi i64 [ %indvars.iv.next475.3, %.lr.ph383 ], [ %indvars.iv474.unr, %.lr.ph383.prol.loopexit ]
  %332 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv474
  %333 = load i32, ptr %332, align 4, !tbaa !5
  %334 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv474
  store i32 %333, ptr %334, align 4, !tbaa !5
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %335 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next475
  %336 = load i32, ptr %335, align 4, !tbaa !5
  %337 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next475
  store i32 %336, ptr %337, align 4, !tbaa !5
  %indvars.iv.next475.1 = add nuw nsw i64 %indvars.iv474, 2
  %338 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next475.1
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next475.1
  store i32 %339, ptr %340, align 4, !tbaa !5
  %indvars.iv.next475.2 = add nuw nsw i64 %indvars.iv474, 3
  %341 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next475.2
  %342 = load i32, ptr %341, align 4, !tbaa !5
  %343 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv.next475.2
  store i32 %342, ptr %343, align 4, !tbaa !5
  %indvars.iv.next475.3 = add nuw nsw i64 %indvars.iv474, 4
  %exitcond478.not.3 = icmp eq i64 %indvars.iv.next475.3, %wide.trip.count477
  br i1 %exitcond478.not.3, label %._crit_edge384, label %.lr.ph383, !llvm.loop !44

._crit_edge384:                                   ; preds = %.lr.ph383.prol.loopexit, %.lr.ph383, %middle.block, %._crit_edge380.thread, %._crit_edge380
  %.8.lcssa487 = phi i32 [ 0, %._crit_edge380.thread ], [ %.lcssa, %._crit_edge380 ], [ %.lcssa, %middle.block ], [ %.lcssa, %.lr.ph383 ], [ %.lcssa, %.lr.ph383.prol.loopexit ]
  %344 = getelementptr inbounds i8, ptr %3, i64 16
  %345 = load i64, ptr %344, align 8, !tbaa !45
  %346 = trunc i64 %345 to i32
  %347 = icmp sgt i32 %.8.lcssa487, %346
  br i1 %347, label %.loopexit323, label %348

348:                                              ; preds = %._crit_edge384
  store i32 0, ptr %7, align 4, !tbaa !5
  %349 = icmp eq i32 %1, 0
  br i1 %349, label %353, label %350

350:                                              ; preds = %348
  %351 = getelementptr inbounds i8, ptr %3, i64 72
  %352 = load i32, ptr %351, align 8, !tbaa !46
  %switch = icmp ult i32 %352, 2
  br i1 %switch, label %353, label %.thread

353:                                              ; preds = %350, %348
  %354 = call noundef i32 @_ZN5nasoq18transpose_sym_realEPNS_12sympiler_CSCEPiS1_S2_S2_Ri(ptr noundef nonnull %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %39, ptr noundef %41, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %.not299 = icmp eq i32 %354, 0
  br i1 %.not299, label %.thread, label %355

355:                                              ; preds = %353
  %356 = zext i1 %.not288 to i32
  %357 = getelementptr inbounds i8, ptr %3, i64 80
  store i32 %356, ptr %357, align 8, !tbaa !47
  %358 = getelementptr inbounds i8, ptr %3, i64 84
  store i32 1, ptr %358, align 4, !tbaa !18
  %359 = load i32, ptr %12, align 8, !tbaa !14
  %360 = icmp slt i32 %359, 0
  %.not300 = icmp ne i32 %359, 0
  %.neg = sext i1 %.not300 to i32
  %.neg301 = select i1 %360, i32 1, i32 %.neg
  %361 = getelementptr inbounds i8, ptr %3, i64 64
  store i32 %.neg301, ptr %361, align 8, !tbaa !14
  br label %.thread

.thread:                                          ; preds = %350, %355, %353
  %362 = phi i32 [ %354, %355 ], [ 0, %353 ], [ 0, %350 ]
  call void @free(ptr noundef %39) #8
  br label %.loopexit323

.loopexit323:                                     ; preds = %.lr.ph327, %47, %._crit_edge384, %20, %15, %18, %5, %11, %.thread
  %.0 = phi i32 [ %362, %.thread ], [ 0, %11 ], [ 0, %5 ], [ 0, %18 ], [ 0, %15 ], [ 0, %20 ], [ 0, %._crit_edge384 ], [ 0, %47 ], [ 0, %.lr.ph327 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  ret i32 %.0
}

declare noundef i64 @_ZN5nasoq10add_size_tEmmPi(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #6

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "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 #4 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { nounwind allocsize(0,1) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN5nasoq12sympiler_CSCE", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84}
!11 = !{!"long", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!10, !11, i64 8}
!14 = !{!10, !6, i64 64}
!15 = !{!10, !12, i64 24}
!16 = !{!10, !12, i64 32}
!17 = !{!10, !12, i64 40}
!18 = !{!10, !6, i64 84}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = distinct !{!37, !20}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.unroll.disable"}
!40 = distinct !{!40, !20, !41, !42}
!41 = !{!"llvm.loop.isvectorized", i32 1}
!42 = !{!"llvm.loop.unroll.runtime.disable"}
!43 = distinct !{!43, !39}
!44 = distinct !{!44, !20, !41}
!45 = !{!10, !11, i64 16}
!46 = !{!10, !6, i64 72}
!47 = !{!10, !6, i64 80}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass