; LLVM IR from parallella/pal :: tests (utest-report)

; 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.ut_suite = type { ptr, ptr, ptr, i8, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.ut_tcase = type { ptr, ptr, ptr, ptr, [256 x i8], i32 }

@__const.ut_report.sproc = external hidden unnamed_addr constant [13 x i8], align 1
@.str = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @ut_report(ptr noundef %0, i64 noundef %1, ptr noundef %2, i1 noundef zeroext %3) #0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i8, align 1
  %17 = alloca [13 x i8], align 1
  %18 = alloca [11 x i8], align 1
  %19 = alloca [11 x i8], align 1
  %20 = alloca [11 x i8], align 1
  %21 = alloca [11 x i8], align 1
  %22 = alloca [11 x i8], align 1
  %23 = alloca [11 x i8], align 1
  %24 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i64 %1, ptr %7, align 8, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  %25 = zext i1 %3 to i8
  store i8 %25, ptr %9, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  store i64 0, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  store i8 0, ptr %16, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 13, ptr %17) #5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 @__const.ut_report.sproc, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 11, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr %23) #5
  %26 = load ptr, ptr %8, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.ut_suite, ptr %26, i32 0, i32 11
  %28 = load i32, ptr %27, align 4, !tbaa !15
  %29 = getelementptr inbounds [11 x i8], ptr %18, i64 0, i64 0
  %30 = call i32 @ut_utoa(i32 noundef %28, ptr noundef %29)
  %31 = load ptr, ptr %8, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.ut_suite, ptr %31, i32 0, i32 12
  %33 = load i32, ptr %32, align 8, !tbaa !17
  %34 = getelementptr inbounds [11 x i8], ptr %19, i64 0, i64 0
  %35 = call i32 @ut_utoa(i32 noundef %33, ptr noundef %34)
  %36 = load ptr, ptr %8, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.ut_suite, ptr %36, i32 0, i32 8
  %38 = load i32, ptr %37, align 8, !tbaa !18
  %39 = getelementptr inbounds [11 x i8], ptr %20, i64 0, i64 0
  %40 = call i32 @ut_utoa(i32 noundef %38, ptr noundef %39)
  %41 = load ptr, ptr %8, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.ut_suite, ptr %41, i32 0, i32 10
  %43 = load i32, ptr %42, align 8, !tbaa !19
  %44 = getelementptr inbounds [11 x i8], ptr %21, i64 0, i64 0
  %45 = call i32 @ut_utoa(i32 noundef %43, ptr noundef %44)
  %46 = load ptr, ptr %8, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.ut_suite, ptr %46, i32 0, i32 9
  %48 = load i32, ptr %47, align 4, !tbaa !20
  %49 = getelementptr inbounds [11 x i8], ptr %22, i64 0, i64 0
  %50 = call i32 @ut_utoa(i32 noundef %48, ptr noundef %49)
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.ut_suite, ptr %51, i32 0, i32 13
  %53 = load i32, ptr %52, align 4, !tbaa !21
  %54 = getelementptr inbounds [11 x i8], ptr %23, i64 0, i64 0
  %55 = call i32 @ut_utoa(i32 noundef %53, ptr noundef %54)
  %56 = load ptr, ptr %8, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.ut_suite, ptr %56, i32 0, i32 11
  %58 = load i32, ptr %57, align 4, !tbaa !15
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.ut_suite, ptr %59, i32 0, i32 10
  %61 = load i32, ptr %60, align 8, !tbaa !19
  %62 = sub nsw i32 %58, %61
  %63 = icmp ne i32 %62, 0
  br i1 %63, label %64, label %77

64:                                               ; preds = %4
  %65 = load ptr, ptr %8, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.ut_suite, ptr %65, i32 0, i32 8
  %67 = load i32, ptr %66, align 8, !tbaa !18
  %68 = mul nsw i32 100, %67
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.ut_suite, ptr %69, i32 0, i32 11
  %71 = load i32, ptr %70, align 4, !tbaa !15
  %72 = load ptr, ptr %8, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.ut_suite, ptr %72, i32 0, i32 10
  %74 = load i32, ptr %73, align 8, !tbaa !19
  %75 = sub nsw i32 %71, %74
  %76 = sdiv i32 %68, %75
  store i32 %76, ptr %15, align 4, !tbaa !13
  br label %77

77:                                               ; preds = %64, %4
  %78 = load i32, ptr %15, align 4, !tbaa !13
  %79 = icmp uge i32 %78, 100
  br i1 %79, label %80, label %84

80:                                               ; preds = %77
  %81 = load i32, ptr %15, align 4, !tbaa !13
  %82 = getelementptr inbounds [13 x i8], ptr %17, i64 0, i64 0
  %83 = call i32 @ut_utoa(i32 noundef %81, ptr noundef %82)
  br label %96

84:                                               ; preds = %77
  %85 = load i32, ptr %15, align 4, !tbaa !13
  %86 = icmp uge i32 %85, 10
  br i1 %86, label %87, label %91

87:                                               ; preds = %84
  %88 = load i32, ptr %15, align 4, !tbaa !13
  %89 = getelementptr inbounds [13 x i8], ptr %17, i64 0, i64 1
  %90 = call i32 @ut_utoa(i32 noundef %88, ptr noundef %89)
  br label %95

91:                                               ; preds = %84
  %92 = load i32, ptr %15, align 4, !tbaa !13
  %93 = getelementptr inbounds [13 x i8], ptr %17, i64 0, i64 2
  %94 = call i32 @ut_utoa(i32 noundef %92, ptr noundef %93)
  br label %95

95:                                               ; preds = %91, %87
  br label %96

96:                                               ; preds = %95, %80
  br label %97

97:                                               ; preds = %96
  %98 = load i64, ptr %7, align 8, !tbaa !9
  %99 = load i64, ptr %11, align 8, !tbaa !9
  %100 = sub i64 %98, %99
  %101 = add i64 %100, 1
  %102 = call i64 @strnlen(ptr noundef @.str, i64 noundef %101) #6
  store i64 %102, ptr %10, align 8, !tbaa !9
  %103 = load i64, ptr %10, align 8, !tbaa !9
  %104 = load i64, ptr %7, align 8, !tbaa !9
  %105 = load i64, ptr %11, align 8, !tbaa !9
  %106 = sub i64 %104, %105
  %107 = icmp uge i64 %103, %106
  br i1 %107, label %108, label %109

108:                                              ; preds = %97
  br label %780

109:                                              ; preds = %97
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = load i64, ptr %11, align 8, !tbaa !9
  %112 = getelementptr inbounds i8, ptr %110, i64 %111
  %113 = call ptr @strcpy(ptr noundef %112, ptr noundef @.str) #5
  %114 = load i64, ptr %10, align 8, !tbaa !9
  %115 = load i64, ptr %11, align 8, !tbaa !9
  %116 = add i64 %115, %114
  store i64 %116, ptr %11, align 8, !tbaa !9
  br label %117

117:                                              ; preds = %109
  br label %118

118:                                              ; preds = %117
  br label %119

119:                                              ; preds = %118
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ut_suite, ptr %120, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !22
  %123 = load i64, ptr %7, align 8, !tbaa !9
  %124 = load i64, ptr %11, align 8, !tbaa !9
  %125 = sub i64 %123, %124
  %126 = add i64 %125, 1
  %127 = call i64 @strnlen(ptr noundef %122, i64 noundef %126) #6
  store i64 %127, ptr %10, align 8, !tbaa !9
  %128 = load i64, ptr %10, align 8, !tbaa !9
  %129 = load i64, ptr %7, align 8, !tbaa !9
  %130 = load i64, ptr %11, align 8, !tbaa !9
  %131 = sub i64 %129, %130
  %132 = icmp uge i64 %128, %131
  br i1 %132, label %133, label %134

133:                                              ; preds = %119
  br label %780

134:                                              ; preds = %119
  %135 = load ptr, ptr %6, align 8, !tbaa !5
  %136 = load i64, ptr %11, align 8, !tbaa !9
  %137 = getelementptr inbounds i8, ptr %135, i64 %136
  %138 = load ptr, ptr %8, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ut_suite, ptr %138, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8, !tbaa !22
  %141 = call ptr @strcpy(ptr noundef %137, ptr noundef %140) #5
  %142 = load i64, ptr %10, align 8, !tbaa !9
  %143 = load i64, ptr %11, align 8, !tbaa !9
  %144 = add i64 %143, %142
  store i64 %144, ptr %11, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %134
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146
  %148 = load i64, ptr %7, align 8, !tbaa !9
  %149 = load i64, ptr %11, align 8, !tbaa !9
  %150 = sub i64 %148, %149
  %151 = add i64 %150, 1
  %152 = call i64 @strnlen(ptr noundef @.str.1, i64 noundef %151) #6
  store i64 %152, ptr %10, align 8, !tbaa !9
  %153 = load i64, ptr %10, align 8, !tbaa !9
  %154 = load i64, ptr %7, align 8, !tbaa !9
  %155 = load i64, ptr %11, align 8, !tbaa !9
  %156 = sub i64 %154, %155
  %157 = icmp uge i64 %153, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %147
  br label %780

159:                                              ; preds = %147
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = load i64, ptr %11, align 8, !tbaa !9
  %162 = getelementptr inbounds i8, ptr %160, i64 %161
  %163 = call ptr @strcpy(ptr noundef %162, ptr noundef @.str.1) #5
  %164 = load i64, ptr %10, align 8, !tbaa !9
  %165 = load i64, ptr %11, align 8, !tbaa !9
  %166 = add i64 %165, %164
  store i64 %166, ptr %11, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %159
  br label %168

168:                                              ; preds = %167
  br label %169

169:                                              ; preds = %168
  %170 = getelementptr inbounds [13 x i8], ptr %17, i64 0, i64 0
  %171 = load i64, ptr %7, align 8, !tbaa !9
  %172 = load i64, ptr %11, align 8, !tbaa !9
  %173 = sub i64 %171, %172
  %174 = add i64 %173, 1
  %175 = call i64 @strnlen(ptr noundef %170, i64 noundef %174) #6
  store i64 %175, ptr %10, align 8, !tbaa !9
  %176 = load i64, ptr %10, align 8, !tbaa !9
  %177 = load i64, ptr %7, align 8, !tbaa !9
  %178 = load i64, ptr %11, align 8, !tbaa !9
  %179 = sub i64 %177, %178
  %180 = icmp uge i64 %176, %179
  br i1 %180, label %181, label %182

181:                                              ; preds = %169
  br label %780

182:                                              ; preds = %169
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = load i64, ptr %11, align 8, !tbaa !9
  %185 = getelementptr inbounds i8, ptr %183, i64 %184
  %186 = getelementptr inbounds [13 x i8], ptr %17, i64 0, i64 0
  %187 = call ptr @strcpy(ptr noundef %185, ptr noundef %186) #5
  %188 = load i64, ptr %10, align 8, !tbaa !9
  %189 = load i64, ptr %11, align 8, !tbaa !9
  %190 = add i64 %189, %188
  store i64 %190, ptr %11, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %182
  br label %192

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %192
  %194 = load i64, ptr %7, align 8, !tbaa !9
  %195 = load i64, ptr %11, align 8, !tbaa !9
  %196 = sub i64 %194, %195
  %197 = add i64 %196, 1
  %198 = call i64 @strnlen(ptr noundef @.str.2, i64 noundef %197) #6
  store i64 %198, ptr %10, align 8, !tbaa !9
  %199 = load i64, ptr %10, align 8, !tbaa !9
  %200 = load i64, ptr %7, align 8, !tbaa !9
  %201 = load i64, ptr %11, align 8, !tbaa !9
  %202 = sub i64 %200, %201
  %203 = icmp uge i64 %199, %202
  br i1 %203, label %204, label %205

204:                                              ; preds = %193
  br label %780

205:                                              ; preds = %193
  %206 = load ptr, ptr %6, align 8, !tbaa !5
  %207 = load i64, ptr %11, align 8, !tbaa !9
  %208 = getelementptr inbounds i8, ptr %206, i64 %207
  %209 = call ptr @strcpy(ptr noundef %208, ptr noundef @.str.2) #5
  %210 = load i64, ptr %10, align 8, !tbaa !9
  %211 = load i64, ptr %11, align 8, !tbaa !9
  %212 = add i64 %211, %210
  store i64 %212, ptr %11, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %205
  br label %214

214:                                              ; preds = %213
  br label %215

215:                                              ; preds = %214
  %216 = load i64, ptr %7, align 8, !tbaa !9
  %217 = load i64, ptr %11, align 8, !tbaa !9
  %218 = sub i64 %216, %217
  %219 = add i64 %218, 1
  %220 = call i64 @strnlen(ptr noundef @.str.3, i64 noundef %219) #6
  store i64 %220, ptr %10, align 8, !tbaa !9
  %221 = load i64, ptr %10, align 8, !tbaa !9
  %222 = load i64, ptr %7, align 8, !tbaa !9
  %223 = load i64, ptr %11, align 8, !tbaa !9
  %224 = sub i64 %222, %223
  %225 = icmp uge i64 %221, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %215
  br label %780

227:                                              ; preds = %215
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = load i64, ptr %11, align 8, !tbaa !9
  %230 = getelementptr inbounds i8, ptr %228, i64 %229
  %231 = call ptr @strcpy(ptr noundef %230, ptr noundef @.str.3) #5
  %232 = load i64, ptr %10, align 8, !tbaa !9
  %233 = load i64, ptr %11, align 8, !tbaa !9
  %234 = add i64 %233, %232
  store i64 %234, ptr %11, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %227
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236
  %238 = getelementptr inbounds [11 x i8], ptr %18, i64 0, i64 0
  %239 = load i64, ptr %7, align 8, !tbaa !9
  %240 = load i64, ptr %11, align 8, !tbaa !9
  %241 = sub i64 %239, %240
  %242 = add i64 %241, 1
  %243 = call i64 @strnlen(ptr noundef %238, i64 noundef %242) #6
  store i64 %243, ptr %10, align 8, !tbaa !9
  %244 = load i64, ptr %10, align 8, !tbaa !9
  %245 = load i64, ptr %7, align 8, !tbaa !9
  %246 = load i64, ptr %11, align 8, !tbaa !9
  %247 = sub i64 %245, %246
  %248 = icmp uge i64 %244, %247
  br i1 %248, label %249, label %250

249:                                              ; preds = %237
  br label %780

250:                                              ; preds = %237
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = load i64, ptr %11, align 8, !tbaa !9
  %253 = getelementptr inbounds i8, ptr %251, i64 %252
  %254 = getelementptr inbounds [11 x i8], ptr %18, i64 0, i64 0
  %255 = call ptr @strcpy(ptr noundef %253, ptr noundef %254) #5
  %256 = load i64, ptr %10, align 8, !tbaa !9
  %257 = load i64, ptr %11, align 8, !tbaa !9
  %258 = add i64 %257, %256
  store i64 %258, ptr %11, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %250
  br label %260

260:                                              ; preds = %259
  br label %261

261:                                              ; preds = %260
  %262 = load i64, ptr %7, align 8, !tbaa !9
  %263 = load i64, ptr %11, align 8, !tbaa !9
  %264 = sub i64 %262, %263
  %265 = add i64 %264, 1
  %266 = call i64 @strnlen(ptr noundef @.str.4, i64 noundef %265) #6
  store i64 %266, ptr %10, align 8, !tbaa !9
  %267 = load i64, ptr %10, align 8, !tbaa !9
  %268 = load i64, ptr %7, align 8, !tbaa !9
  %269 = load i64, ptr %11, align 8, !tbaa !9
  %270 = sub i64 %268, %269
  %271 = icmp uge i64 %267, %270
  br i1 %271, label %272, label %273

272:                                              ; preds = %261
  br label %780

273:                                              ; preds = %261
  %274 = load ptr, ptr %6, align 8, !tbaa !5
  %275 = load i64, ptr %11, align 8, !tbaa !9
  %276 = getelementptr inbounds i8, ptr %274, i64 %275
  %277 = call ptr @strcpy(ptr noundef %276, ptr noundef @.str.4) #5
  %278 = load i64, ptr %10, align 8, !tbaa !9
  %279 = load i64, ptr %11, align 8, !tbaa !9
  %280 = add i64 %279, %278
  store i64 %280, ptr %11, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %273
  br label %282

282:                                              ; preds = %281
  br label %283

283:                                              ; preds = %282
  %284 = getelementptr inbounds [11 x i8], ptr %19, i64 0, i64 0
  %285 = load i64, ptr %7, align 8, !tbaa !9
  %286 = load i64, ptr %11, align 8, !tbaa !9
  %287 = sub i64 %285, %286
  %288 = add i64 %287, 1
  %289 = call i64 @strnlen(ptr noundef %284, i64 noundef %288) #6
  store i64 %289, ptr %10, align 8, !tbaa !9
  %290 = load i64, ptr %10, align 8, !tbaa !9
  %291 = load i64, ptr %7, align 8, !tbaa !9
  %292 = load i64, ptr %11, align 8, !tbaa !9
  %293 = sub i64 %291, %292
  %294 = icmp uge i64 %290, %293
  br i1 %294, label %295, label %296

295:                                              ; preds = %283
  br label %780

296:                                              ; preds = %283
  %297 = load ptr, ptr %6, align 8, !tbaa !5
  %298 = load i64, ptr %11, align 8, !tbaa !9
  %299 = getelementptr inbounds i8, ptr %297, i64 %298
  %300 = getelementptr inbounds [11 x i8], ptr %19, i64 0, i64 0
  %301 = call ptr @strcpy(ptr noundef %299, ptr noundef %300) #5
  %302 = load i64, ptr %10, align 8, !tbaa !9
  %303 = load i64, ptr %11, align 8, !tbaa !9
  %304 = add i64 %303, %302
  store i64 %304, ptr %11, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %296
  br label %306

306:                                              ; preds = %305
  br label %307

307:                                              ; preds = %306
  %308 = load i64, ptr %7, align 8, !tbaa !9
  %309 = load i64, ptr %11, align 8, !tbaa !9
  %310 = sub i64 %308, %309
  %311 = add i64 %310, 1
  %312 = call i64 @strnlen(ptr noundef @.str.5, i64 noundef %311) #6
  store i64 %312, ptr %10, align 8, !tbaa !9
  %313 = load i64, ptr %10, align 8, !tbaa !9
  %314 = load i64, ptr %7, align 8, !tbaa !9
  %315 = load i64, ptr %11, align 8, !tbaa !9
  %316 = sub i64 %314, %315
  %317 = icmp uge i64 %313, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %307
  br label %780

319:                                              ; preds = %307
  %320 = load ptr, ptr %6, align 8, !tbaa !5
  %321 = load i64, ptr %11, align 8, !tbaa !9
  %322 = getelementptr inbounds i8, ptr %320, i64 %321
  %323 = call ptr @strcpy(ptr noundef %322, ptr noundef @.str.5) #5
  %324 = load i64, ptr %10, align 8, !tbaa !9
  %325 = load i64, ptr %11, align 8, !tbaa !9
  %326 = add i64 %325, %324
  store i64 %326, ptr %11, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %319
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  %330 = getelementptr inbounds [11 x i8], ptr %20, i64 0, i64 0
  %331 = load i64, ptr %7, align 8, !tbaa !9
  %332 = load i64, ptr %11, align 8, !tbaa !9
  %333 = sub i64 %331, %332
  %334 = add i64 %333, 1
  %335 = call i64 @strnlen(ptr noundef %330, i64 noundef %334) #6
  store i64 %335, ptr %10, align 8, !tbaa !9
  %336 = load i64, ptr %10, align 8, !tbaa !9
  %337 = load i64, ptr %7, align 8, !tbaa !9
  %338 = load i64, ptr %11, align 8, !tbaa !9
  %339 = sub i64 %337, %338
  %340 = icmp uge i64 %336, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %329
  br label %780

342:                                              ; preds = %329
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = load i64, ptr %11, align 8, !tbaa !9
  %345 = getelementptr inbounds i8, ptr %343, i64 %344
  %346 = getelementptr inbounds [11 x i8], ptr %20, i64 0, i64 0
  %347 = call ptr @strcpy(ptr noundef %345, ptr noundef %346) #5
  %348 = load i64, ptr %10, align 8, !tbaa !9
  %349 = load i64, ptr %11, align 8, !tbaa !9
  %350 = add i64 %349, %348
  store i64 %350, ptr %11, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %342
  br label %352

352:                                              ; preds = %351
  br label %353

353:                                              ; preds = %352
  %354 = load i64, ptr %7, align 8, !tbaa !9
  %355 = load i64, ptr %11, align 8, !tbaa !9
  %356 = sub i64 %354, %355
  %357 = add i64 %356, 1
  %358 = call i64 @strnlen(ptr noundef @.str.6, i64 noundef %357) #6
  store i64 %358, ptr %10, align 8, !tbaa !9
  %359 = load i64, ptr %10, align 8, !tbaa !9
  %360 = load i64, ptr %7, align 8, !tbaa !9
  %361 = load i64, ptr %11, align 8, !tbaa !9
  %362 = sub i64 %360, %361
  %363 = icmp uge i64 %359, %362
  br i1 %363, label %364, label %365

364:                                              ; preds = %353
  br label %780

365:                                              ; preds = %353
  %366 = load ptr, ptr %6, align 8, !tbaa !5
  %367 = load i64, ptr %11, align 8, !tbaa !9
  %368 = getelementptr inbounds i8, ptr %366, i64 %367
  %369 = call ptr @strcpy(ptr noundef %368, ptr noundef @.str.6) #5
  %370 = load i64, ptr %10, align 8, !tbaa !9
  %371 = load i64, ptr %11, align 8, !tbaa !9
  %372 = add i64 %371, %370
  store i64 %372, ptr %11, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %365
  br label %374

374:                                              ; preds = %373
  br label %375

375:                                              ; preds = %374
  %376 = getelementptr inbounds [11 x i8], ptr %21, i64 0, i64 0
  %377 = load i64, ptr %7, align 8, !tbaa !9
  %378 = load i64, ptr %11, align 8, !tbaa !9
  %379 = sub i64 %377, %378
  %380 = add i64 %379, 1
  %381 = call i64 @strnlen(ptr noundef %376, i64 noundef %380) #6
  store i64 %381, ptr %10, align 8, !tbaa !9
  %382 = load i64, ptr %10, align 8, !tbaa !9
  %383 = load i64, ptr %7, align 8, !tbaa !9
  %384 = load i64, ptr %11, align 8, !tbaa !9
  %385 = sub i64 %383, %384
  %386 = icmp uge i64 %382, %385
  br i1 %386, label %387, label %388

387:                                              ; preds = %375
  br label %780

388:                                              ; preds = %375
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = load i64, ptr %11, align 8, !tbaa !9
  %391 = getelementptr inbounds i8, ptr %389, i64 %390
  %392 = getelementptr inbounds [11 x i8], ptr %21, i64 0, i64 0
  %393 = call ptr @strcpy(ptr noundef %391, ptr noundef %392) #5
  %394 = load i64, ptr %10, align 8, !tbaa !9
  %395 = load i64, ptr %11, align 8, !tbaa !9
  %396 = add i64 %395, %394
  store i64 %396, ptr %11, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %388
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  %400 = load i64, ptr %7, align 8, !tbaa !9
  %401 = load i64, ptr %11, align 8, !tbaa !9
  %402 = sub i64 %400, %401
  %403 = add i64 %402, 1
  %404 = call i64 @strnlen(ptr noundef @.str.7, i64 noundef %403) #6
  store i64 %404, ptr %10, align 8, !tbaa !9
  %405 = load i64, ptr %10, align 8, !tbaa !9
  %406 = load i64, ptr %7, align 8, !tbaa !9
  %407 = load i64, ptr %11, align 8, !tbaa !9
  %408 = sub i64 %406, %407
  %409 = icmp uge i64 %405, %408
  br i1 %409, label %410, label %411

410:                                              ; preds = %399
  br label %780

411:                                              ; preds = %399
  %412 = load ptr, ptr %6, align 8, !tbaa !5
  %413 = load i64, ptr %11, align 8, !tbaa !9
  %414 = getelementptr inbounds i8, ptr %412, i64 %413
  %415 = call ptr @strcpy(ptr noundef %414, ptr noundef @.str.7) #5
  %416 = load i64, ptr %10, align 8, !tbaa !9
  %417 = load i64, ptr %11, align 8, !tbaa !9
  %418 = add i64 %417, %416
  store i64 %418, ptr %11, align 8, !tbaa !9
  br label %419

419:                                              ; preds = %411
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420
  %422 = getelementptr inbounds [11 x i8], ptr %22, i64 0, i64 0
  %423 = load i64, ptr %7, align 8, !tbaa !9
  %424 = load i64, ptr %11, align 8, !tbaa !9
  %425 = sub i64 %423, %424
  %426 = add i64 %425, 1
  %427 = call i64 @strnlen(ptr noundef %422, i64 noundef %426) #6
  store i64 %427, ptr %10, align 8, !tbaa !9
  %428 = load i64, ptr %10, align 8, !tbaa !9
  %429 = load i64, ptr %7, align 8, !tbaa !9
  %430 = load i64, ptr %11, align 8, !tbaa !9
  %431 = sub i64 %429, %430
  %432 = icmp uge i64 %428, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %421
  br label %780

434:                                              ; preds = %421
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = load i64, ptr %11, align 8, !tbaa !9
  %437 = getelementptr inbounds i8, ptr %435, i64 %436
  %438 = getelementptr inbounds [11 x i8], ptr %22, i64 0, i64 0
  %439 = call ptr @strcpy(ptr noundef %437, ptr noundef %438) #5
  %440 = load i64, ptr %10, align 8, !tbaa !9
  %441 = load i64, ptr %11, align 8, !tbaa !9
  %442 = add i64 %441, %440
  store i64 %442, ptr %11, align 8, !tbaa !9
  br label %443

443:                                              ; preds = %434
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  %446 = load i64, ptr %7, align 8, !tbaa !9
  %447 = load i64, ptr %11, align 8, !tbaa !9
  %448 = sub i64 %446, %447
  %449 = add i64 %448, 1
  %450 = call i64 @strnlen(ptr noundef @.str.8, i64 noundef %449) #6
  store i64 %450, ptr %10, align 8, !tbaa !9
  %451 = load i64, ptr %10, align 8, !tbaa !9
  %452 = load i64, ptr %7, align 8, !tbaa !9
  %453 = load i64, ptr %11, align 8, !tbaa !9
  %454 = sub i64 %452, %453
  %455 = icmp uge i64 %451, %454
  br i1 %455, label %456, label %457

456:                                              ; preds = %445
  br label %780

457:                                              ; preds = %445
  %458 = load ptr, ptr %6, align 8, !tbaa !5
  %459 = load i64, ptr %11, align 8, !tbaa !9
  %460 = getelementptr inbounds i8, ptr %458, i64 %459
  %461 = call ptr @strcpy(ptr noundef %460, ptr noundef @.str.8) #5
  %462 = load i64, ptr %10, align 8, !tbaa !9
  %463 = load i64, ptr %11, align 8, !tbaa !9
  %464 = add i64 %463, %462
  store i64 %464, ptr %11, align 8, !tbaa !9
  br label %465

465:                                              ; preds = %457
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  %468 = getelementptr inbounds [11 x i8], ptr %23, i64 0, i64 0
  %469 = load i64, ptr %7, align 8, !tbaa !9
  %470 = load i64, ptr %11, align 8, !tbaa !9
  %471 = sub i64 %469, %470
  %472 = add i64 %471, 1
  %473 = call i64 @strnlen(ptr noundef %468, i64 noundef %472) #6
  store i64 %473, ptr %10, align 8, !tbaa !9
  %474 = load i64, ptr %10, align 8, !tbaa !9
  %475 = load i64, ptr %7, align 8, !tbaa !9
  %476 = load i64, ptr %11, align 8, !tbaa !9
  %477 = sub i64 %475, %476
  %478 = icmp uge i64 %474, %477
  br i1 %478, label %479, label %480

479:                                              ; preds = %467
  br label %780

480:                                              ; preds = %467
  %481 = load ptr, ptr %6, align 8, !tbaa !5
  %482 = load i64, ptr %11, align 8, !tbaa !9
  %483 = getelementptr inbounds i8, ptr %481, i64 %482
  %484 = getelementptr inbounds [11 x i8], ptr %23, i64 0, i64 0
  %485 = call ptr @strcpy(ptr noundef %483, ptr noundef %484) #5
  %486 = load i64, ptr %10, align 8, !tbaa !9
  %487 = load i64, ptr %11, align 8, !tbaa !9
  %488 = add i64 %487, %486
  store i64 %488, ptr %11, align 8, !tbaa !9
  br label %489

489:                                              ; preds = %480
  br label %490

490:                                              ; preds = %489
  br label %491

491:                                              ; preds = %490
  %492 = load i64, ptr %7, align 8, !tbaa !9
  %493 = load i64, ptr %11, align 8, !tbaa !9
  %494 = sub i64 %492, %493
  %495 = add i64 %494, 1
  %496 = call i64 @strnlen(ptr noundef @.str.1, i64 noundef %495) #6
  store i64 %496, ptr %10, align 8, !tbaa !9
  %497 = load i64, ptr %10, align 8, !tbaa !9
  %498 = load i64, ptr %7, align 8, !tbaa !9
  %499 = load i64, ptr %11, align 8, !tbaa !9
  %500 = sub i64 %498, %499
  %501 = icmp uge i64 %497, %500
  br i1 %501, label %502, label %503

502:                                              ; preds = %491
  br label %780

503:                                              ; preds = %491
  %504 = load ptr, ptr %6, align 8, !tbaa !5
  %505 = load i64, ptr %11, align 8, !tbaa !9
  %506 = getelementptr inbounds i8, ptr %504, i64 %505
  %507 = call ptr @strcpy(ptr noundef %506, ptr noundef @.str.1) #5
  %508 = load i64, ptr %10, align 8, !tbaa !9
  %509 = load i64, ptr %11, align 8, !tbaa !9
  %510 = add i64 %509, %508
  store i64 %510, ptr %11, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %503
  br label %512

512:                                              ; preds = %511
  %513 = load ptr, ptr %8, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ut_suite, ptr %513, i32 0, i32 6
  %515 = load i32, ptr %514, align 8, !tbaa !23
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %540

517:                                              ; preds = %512
  br label %518

518:                                              ; preds = %517
  %519 = load i64, ptr %7, align 8, !tbaa !9
  %520 = load i64, ptr %11, align 8, !tbaa !9
  %521 = sub i64 %519, %520
  %522 = add i64 %521, 1
  %523 = call i64 @strnlen(ptr noundef @.str.9, i64 noundef %522) #6
  store i64 %523, ptr %10, align 8, !tbaa !9
  %524 = load i64, ptr %10, align 8, !tbaa !9
  %525 = load i64, ptr %7, align 8, !tbaa !9
  %526 = load i64, ptr %11, align 8, !tbaa !9
  %527 = sub i64 %525, %526
  %528 = icmp uge i64 %524, %527
  br i1 %528, label %529, label %530

529:                                              ; preds = %518
  br label %780

530:                                              ; preds = %518
  %531 = load ptr, ptr %6, align 8, !tbaa !5
  %532 = load i64, ptr %11, align 8, !tbaa !9
  %533 = getelementptr inbounds i8, ptr %531, i64 %532
  %534 = call ptr @strcpy(ptr noundef %533, ptr noundef @.str.9) #5
  %535 = load i64, ptr %10, align 8, !tbaa !9
  %536 = load i64, ptr %11, align 8, !tbaa !9
  %537 = add i64 %536, %535
  store i64 %537, ptr %11, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %530
  br label %539

539:                                              ; preds = %538
  store i32 0, ptr %5, align 4
  store i32 1, ptr %24, align 4
  br label %797

540:                                              ; preds = %512
  %541 = load i8, ptr %9, align 1, !tbaa !11, !range !24, !noundef !25
  %542 = trunc i8 %541 to i1
  br i1 %542, label %559, label %543

543:                                              ; preds = %540
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.ut_suite, ptr %544, i32 0, i32 9
  %546 = load i32, ptr %545, align 4, !tbaa !20
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %559, label %548

548:                                              ; preds = %543
  %549 = load ptr, ptr %8, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ut_suite, ptr %549, i32 0, i32 13
  %551 = load i32, ptr %550, align 4, !tbaa !21
  %552 = icmp ne i32 %551, 0
  br i1 %552, label %559, label %553

553:                                              ; preds = %548
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ut_suite, ptr %554, i32 0, i32 7
  %556 = load i32, ptr %555, align 4, !tbaa !26
  %557 = icmp ne i32 %556, 0
  br i1 %557, label %559, label %558

558:                                              ; preds = %553
  store i32 0, ptr %5, align 4
  store i32 1, ptr %24, align 4
  br label %797

559:                                              ; preds = %553, %548, %543, %540
  %560 = load ptr, ptr %8, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ut_suite, ptr %560, i32 0, i32 7
  %562 = load i32, ptr %561, align 4, !tbaa !26
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %587

564:                                              ; preds = %559
  br label %565

565:                                              ; preds = %564
  %566 = load i64, ptr %7, align 8, !tbaa !9
  %567 = load i64, ptr %11, align 8, !tbaa !9
  %568 = sub i64 %566, %567
  %569 = add i64 %568, 1
  %570 = call i64 @strnlen(ptr noundef @.str.10, i64 noundef %569) #6
  store i64 %570, ptr %10, align 8, !tbaa !9
  %571 = load i64, ptr %10, align 8, !tbaa !9
  %572 = load i64, ptr %7, align 8, !tbaa !9
  %573 = load i64, ptr %11, align 8, !tbaa !9
  %574 = sub i64 %572, %573
  %575 = icmp uge i64 %571, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %565
  br label %780

577:                                              ; preds = %565
  %578 = load ptr, ptr %6, align 8, !tbaa !5
  %579 = load i64, ptr %11, align 8, !tbaa !9
  %580 = getelementptr inbounds i8, ptr %578, i64 %579
  %581 = call ptr @strcpy(ptr noundef %580, ptr noundef @.str.10) #5
  %582 = load i64, ptr %10, align 8, !tbaa !9
  %583 = load i64, ptr %11, align 8, !tbaa !9
  %584 = add i64 %583, %582
  store i64 %584, ptr %11, align 8, !tbaa !9
  br label %585

585:                                              ; preds = %577
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586, %559
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.ut_suite, ptr %588, i32 0, i32 4
  %590 = load ptr, ptr %589, align 8, !tbaa !27
  store ptr %590, ptr %12, align 8, !tbaa !5
  br label %591

591:                                              ; preds = %776, %587
  %592 = load ptr, ptr %12, align 8, !tbaa !5
  %593 = load ptr, ptr %592, align 8, !tbaa !5
  %594 = icmp ne ptr %593, null
  br i1 %594, label %595, label %779

595:                                              ; preds = %591
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = load ptr, ptr %596, align 8, !tbaa !5
  store ptr %597, ptr %13, align 8, !tbaa !5
  %598 = load i8, ptr %16, align 1, !tbaa !11, !range !24, !noundef !25
  %599 = trunc i8 %598 to i1
  br i1 %599, label %600, label %601

600:                                              ; preds = %595
  store ptr @.str.11, ptr %14, align 8, !tbaa !5
  br label %610

601:                                              ; preds = %595
  %602 = load ptr, ptr %13, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ut_tcase, ptr %602, i32 0, i32 5
  %604 = load i32, ptr %603, align 8, !tbaa !28
  switch i32 %604, label %608 [
    i32 0, label %605
    i32 1, label %606
    i32 77, label %607
  ]

605:                                              ; preds = %601
  store ptr @.str.12, ptr %14, align 8, !tbaa !5
  br label %609

606:                                              ; preds = %601
  store ptr @.str.13, ptr %14, align 8, !tbaa !5
  br label %609

607:                                              ; preds = %601
  store ptr @.str.14, ptr %14, align 8, !tbaa !5
  br label %609

608:                                              ; preds = %601
  store ptr @.str.15, ptr %14, align 8, !tbaa !5
  br label %609

609:                                              ; preds = %608, %607, %606, %605
  br label %610

610:                                              ; preds = %609, %600
  %611 = load ptr, ptr %8, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ut_suite, ptr %611, i32 0, i32 3
  %613 = load i8, ptr %612, align 8, !tbaa !30, !range !24, !noundef !25
  %614 = trunc i8 %613 to i1
  br i1 %614, label %621, label %615

615:                                              ; preds = %610
  %616 = load ptr, ptr %13, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ut_tcase, ptr %616, i32 0, i32 5
  %618 = load i32, ptr %617, align 8, !tbaa !28
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %621

620:                                              ; preds = %615
  store i8 1, ptr %16, align 1, !tbaa !11
  br label %621

621:                                              ; preds = %620, %615, %610
  br label %622

622:                                              ; preds = %621
  %623 = load ptr, ptr %13, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.ut_tcase, ptr %623, i32 0, i32 0
  %625 = load ptr, ptr %624, align 8, !tbaa !31
  %626 = load i64, ptr %7, align 8, !tbaa !9
  %627 = load i64, ptr %11, align 8, !tbaa !9
  %628 = sub i64 %626, %627
  %629 = add i64 %628, 1
  %630 = call i64 @strnlen(ptr noundef %625, i64 noundef %629) #6
  store i64 %630, ptr %10, align 8, !tbaa !9
  %631 = load i64, ptr %10, align 8, !tbaa !9
  %632 = load i64, ptr %7, align 8, !tbaa !9
  %633 = load i64, ptr %11, align 8, !tbaa !9
  %634 = sub i64 %632, %633
  %635 = icmp uge i64 %631, %634
  br i1 %635, label %636, label %637

636:                                              ; preds = %622
  br label %780

637:                                              ; preds = %622
  %638 = load ptr, ptr %6, align 8, !tbaa !5
  %639 = load i64, ptr %11, align 8, !tbaa !9
  %640 = getelementptr inbounds i8, ptr %638, i64 %639
  %641 = load ptr, ptr %13, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ut_tcase, ptr %641, i32 0, i32 0
  %643 = load ptr, ptr %642, align 8, !tbaa !31
  %644 = call ptr @strcpy(ptr noundef %640, ptr noundef %643) #5
  %645 = load i64, ptr %10, align 8, !tbaa !9
  %646 = load i64, ptr %11, align 8, !tbaa !9
  %647 = add i64 %646, %645
  store i64 %647, ptr %11, align 8, !tbaa !9
  br label %648

648:                                              ; preds = %637
  br label %649

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %649
  %651 = load i64, ptr %7, align 8, !tbaa !9
  %652 = load i64, ptr %11, align 8, !tbaa !9
  %653 = sub i64 %651, %652
  %654 = add i64 %653, 1
  %655 = call i64 @strnlen(ptr noundef @.str.16, i64 noundef %654) #6
  store i64 %655, ptr %10, align 8, !tbaa !9
  %656 = load i64, ptr %10, align 8, !tbaa !9
  %657 = load i64, ptr %7, align 8, !tbaa !9
  %658 = load i64, ptr %11, align 8, !tbaa !9
  %659 = sub i64 %657, %658
  %660 = icmp uge i64 %656, %659
  br i1 %660, label %661, label %662

661:                                              ; preds = %650
  br label %780

662:                                              ; preds = %650
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = load i64, ptr %11, align 8, !tbaa !9
  %665 = getelementptr inbounds i8, ptr %663, i64 %664
  %666 = call ptr @strcpy(ptr noundef %665, ptr noundef @.str.16) #5
  %667 = load i64, ptr %10, align 8, !tbaa !9
  %668 = load i64, ptr %11, align 8, !tbaa !9
  %669 = add i64 %668, %667
  store i64 %669, ptr %11, align 8, !tbaa !9
  br label %670

670:                                              ; preds = %662
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  %673 = load ptr, ptr %14, align 8, !tbaa !5
  %674 = load i64, ptr %7, align 8, !tbaa !9
  %675 = load i64, ptr %11, align 8, !tbaa !9
  %676 = sub i64 %674, %675
  %677 = add i64 %676, 1
  %678 = call i64 @strnlen(ptr noundef %673, i64 noundef %677) #6
  store i64 %678, ptr %10, align 8, !tbaa !9
  %679 = load i64, ptr %10, align 8, !tbaa !9
  %680 = load i64, ptr %7, align 8, !tbaa !9
  %681 = load i64, ptr %11, align 8, !tbaa !9
  %682 = sub i64 %680, %681
  %683 = icmp uge i64 %679, %682
  br i1 %683, label %684, label %685

684:                                              ; preds = %672
  br label %780

685:                                              ; preds = %672
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  %687 = load i64, ptr %11, align 8, !tbaa !9
  %688 = getelementptr inbounds i8, ptr %686, i64 %687
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = call ptr @strcpy(ptr noundef %688, ptr noundef %689) #5
  %691 = load i64, ptr %10, align 8, !tbaa !9
  %692 = load i64, ptr %11, align 8, !tbaa !9
  %693 = add i64 %692, %691
  store i64 %693, ptr %11, align 8, !tbaa !9
  br label %694

694:                                              ; preds = %685
  br label %695

695:                                              ; preds = %694
  br label %696

696:                                              ; preds = %695
  %697 = load i64, ptr %7, align 8, !tbaa !9
  %698 = load i64, ptr %11, align 8, !tbaa !9
  %699 = sub i64 %697, %698
  %700 = add i64 %699, 1
  %701 = call i64 @strnlen(ptr noundef @.str.1, i64 noundef %700) #6
  store i64 %701, ptr %10, align 8, !tbaa !9
  %702 = load i64, ptr %10, align 8, !tbaa !9
  %703 = load i64, ptr %7, align 8, !tbaa !9
  %704 = load i64, ptr %11, align 8, !tbaa !9
  %705 = sub i64 %703, %704
  %706 = icmp uge i64 %702, %705
  br i1 %706, label %707, label %708

707:                                              ; preds = %696
  br label %780

708:                                              ; preds = %696
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  %710 = load i64, ptr %11, align 8, !tbaa !9
  %711 = getelementptr inbounds i8, ptr %709, i64 %710
  %712 = call ptr @strcpy(ptr noundef %711, ptr noundef @.str.1) #5
  %713 = load i64, ptr %10, align 8, !tbaa !9
  %714 = load i64, ptr %11, align 8, !tbaa !9
  %715 = add i64 %714, %713
  store i64 %715, ptr %11, align 8, !tbaa !9
  br label %716

716:                                              ; preds = %708
  br label %717

717:                                              ; preds = %716
  %718 = load ptr, ptr %13, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.ut_tcase, ptr %718, i32 0, i32 4
  %720 = getelementptr inbounds [256 x i8], ptr %719, i64 0, i64 0
  %721 = load i8, ptr %720, align 8, !tbaa !32
  %722 = sext i8 %721 to i32
  %723 = icmp eq i32 %722, 0
  br i1 %723, label %724, label %725

724:                                              ; preds = %717
  br label %776

725:                                              ; preds = %717
  br label %726

726:                                              ; preds = %725
  %727 = load ptr, ptr %13, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ut_tcase, ptr %727, i32 0, i32 4
  %729 = getelementptr inbounds [256 x i8], ptr %728, i64 0, i64 0
  %730 = load i64, ptr %7, align 8, !tbaa !9
  %731 = load i64, ptr %11, align 8, !tbaa !9
  %732 = sub i64 %730, %731
  %733 = add i64 %732, 1
  %734 = call i64 @strnlen(ptr noundef %729, i64 noundef %733) #6
  store i64 %734, ptr %10, align 8, !tbaa !9
  %735 = load i64, ptr %10, align 8, !tbaa !9
  %736 = load i64, ptr %7, align 8, !tbaa !9
  %737 = load i64, ptr %11, align 8, !tbaa !9
  %738 = sub i64 %736, %737
  %739 = icmp uge i64 %735, %738
  br i1 %739, label %740, label %741

740:                                              ; preds = %726
  br label %780

741:                                              ; preds = %726
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = load i64, ptr %11, align 8, !tbaa !9
  %744 = getelementptr inbounds i8, ptr %742, i64 %743
  %745 = load ptr, ptr %13, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.ut_tcase, ptr %745, i32 0, i32 4
  %747 = getelementptr inbounds [256 x i8], ptr %746, i64 0, i64 0
  %748 = call ptr @strcpy(ptr noundef %744, ptr noundef %747) #5
  %749 = load i64, ptr %10, align 8, !tbaa !9
  %750 = load i64, ptr %11, align 8, !tbaa !9
  %751 = add i64 %750, %749
  store i64 %751, ptr %11, align 8, !tbaa !9
  br label %752

752:                                              ; preds = %741
  br label %753

753:                                              ; preds = %752
  br label %754

754:                                              ; preds = %753
  %755 = load i64, ptr %7, align 8, !tbaa !9
  %756 = load i64, ptr %11, align 8, !tbaa !9
  %757 = sub i64 %755, %756
  %758 = add i64 %757, 1
  %759 = call i64 @strnlen(ptr noundef @.str.1, i64 noundef %758) #6
  store i64 %759, ptr %10, align 8, !tbaa !9
  %760 = load i64, ptr %10, align 8, !tbaa !9
  %761 = load i64, ptr %7, align 8, !tbaa !9
  %762 = load i64, ptr %11, align 8, !tbaa !9
  %763 = sub i64 %761, %762
  %764 = icmp uge i64 %760, %763
  br i1 %764, label %765, label %766

765:                                              ; preds = %754
  br label %780

766:                                              ; preds = %754
  %767 = load ptr, ptr %6, align 8, !tbaa !5
  %768 = load i64, ptr %11, align 8, !tbaa !9
  %769 = getelementptr inbounds i8, ptr %767, i64 %768
  %770 = call ptr @strcpy(ptr noundef %769, ptr noundef @.str.1) #5
  %771 = load i64, ptr %10, align 8, !tbaa !9
  %772 = load i64, ptr %11, align 8, !tbaa !9
  %773 = add i64 %772, %771
  store i64 %773, ptr %11, align 8, !tbaa !9
  br label %774

774:                                              ; preds = %766
  br label %775

775:                                              ; preds = %774
  br label %776

776:                                              ; preds = %775, %724
  %777 = load ptr, ptr %12, align 8, !tbaa !5
  %778 = getelementptr inbounds ptr, ptr %777, i32 1
  store ptr %778, ptr %12, align 8, !tbaa !5
  br label %591, !llvm.loop !33

779:                                              ; preds = %591
  store i32 0, ptr %5, align 4
  store i32 1, ptr %24, align 4
  br label %797

780:                                              ; preds = %765, %740, %707, %684, %661, %636, %576, %529, %502, %479, %456, %433, %410, %387, %364, %341, %318, %295, %272, %249, %226, %204, %181, %158, %133, %108
  %781 = load ptr, ptr %6, align 8, !tbaa !5
  %782 = getelementptr inbounds i8, ptr %781, i64 0
  store i8 78, ptr %782, align 1, !tbaa !32
  %783 = load ptr, ptr %6, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i64 1
  store i8 79, ptr %784, align 1, !tbaa !32
  %785 = load ptr, ptr %6, align 8, !tbaa !5
  %786 = getelementptr inbounds i8, ptr %785, i64 2
  store i8 77, ptr %786, align 1, !tbaa !32
  %787 = load ptr, ptr %6, align 8, !tbaa !5
  %788 = getelementptr inbounds i8, ptr %787, i64 3
  store i8 69, ptr %788, align 1, !tbaa !32
  %789 = load ptr, ptr %6, align 8, !tbaa !5
  %790 = getelementptr inbounds i8, ptr %789, i64 4
  store i8 77, ptr %790, align 1, !tbaa !32
  %791 = load ptr, ptr %6, align 8, !tbaa !5
  %792 = getelementptr inbounds i8, ptr %791, i64 5
  store i8 114, ptr %792, align 1, !tbaa !32
  %793 = load ptr, ptr %6, align 8, !tbaa !5
  %794 = getelementptr inbounds i8, ptr %793, i64 6
  store i8 10, ptr %794, align 1, !tbaa !32
  %795 = load ptr, ptr %6, align 8, !tbaa !5
  %796 = getelementptr inbounds i8, ptr %795, i64 7
  store i8 0, ptr %796, align 1, !tbaa !32
  store i32 12, ptr %5, align 4
  store i32 1, ptr %24, align 4
  br label %797

797:                                              ; preds = %780, %779, %558, %539
  call void @llvm.lifetime.end.p0(i64 11, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 13, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  %798 = load i32, ptr %5, align 4
  ret i32 %798
}

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @ut_utoa(i32 noundef, ptr noundef) #0

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strnlen(ptr noundef, i64 noundef) #3

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #4

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

attributes #0 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind willreturn memory(read) "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 "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 }
attributes #6 = { nounwind willreturn memory(read) }

!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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !14, i64 68}
!16 = !{!"ut_suite", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !6, i64 40, !14, i64 48, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !14, i64 68, !14, i64 72, !14, i64 76}
!17 = !{!16, !14, i64 72}
!18 = !{!16, !14, i64 56}
!19 = !{!16, !14, i64 64}
!20 = !{!16, !14, i64 60}
!21 = !{!16, !14, i64 76}
!22 = !{!16, !6, i64 0}
!23 = !{!16, !14, i64 48}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!16, !14, i64 52}
!27 = !{!16, !6, i64 32}
!28 = !{!29, !14, i64 288}
!29 = !{!"ut_tcase", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !7, i64 32, !14, i64 288}
!30 = !{!16, !12, i64 24}
!31 = !{!29, !6, i64 0}
!32 = !{!7, !7, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}


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

@__const.ut_report.sproc = external hidden unnamed_addr constant [13 x i8], align 1
@.str = external hidden unnamed_addr constant [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 0, 13) i32 @ut_report(ptr noundef %0, i64 noundef %1, ptr nocapture noundef readonly %2, i1 noundef zeroext %3) local_unnamed_addr #0 {
  %5 = alloca [13 x i8], align 1
  %6 = alloca [11 x i8], align 1
  %7 = alloca [11 x i8], align 1
  %8 = alloca [11 x i8], align 1
  %9 = alloca [11 x i8], align 1
  %10 = alloca [11 x i8], align 1
  %11 = alloca [11 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 13, ptr nonnull %5) #5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(13) %5, ptr noundef nonnull align 1 dereferenceable(13) @__const.ut_report.sproc, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 11, ptr nonnull %11) #5
  %12 = getelementptr inbounds i8, ptr %2, i64 68
  %13 = load i32, ptr %12, align 4, !tbaa !5
  %14 = call i32 @ut_utoa(i32 noundef %13, ptr noundef nonnull %6)
  %15 = getelementptr inbounds i8, ptr %2, i64 72
  %16 = load i32, ptr %15, align 8, !tbaa !12
  %17 = call i32 @ut_utoa(i32 noundef %16, ptr noundef nonnull %7)
  %18 = getelementptr inbounds i8, ptr %2, i64 56
  %19 = load i32, ptr %18, align 8, !tbaa !13
  %20 = call i32 @ut_utoa(i32 noundef %19, ptr noundef nonnull %8)
  %21 = getelementptr inbounds i8, ptr %2, i64 64
  %22 = load i32, ptr %21, align 8, !tbaa !14
  %23 = call i32 @ut_utoa(i32 noundef %22, ptr noundef nonnull %9)
  %24 = getelementptr inbounds i8, ptr %2, i64 60
  %25 = load i32, ptr %24, align 4, !tbaa !15
  %26 = call i32 @ut_utoa(i32 noundef %25, ptr noundef nonnull %10)
  %27 = getelementptr inbounds i8, ptr %2, i64 76
  %28 = load i32, ptr %27, align 4, !tbaa !16
  %29 = call i32 @ut_utoa(i32 noundef %28, ptr noundef nonnull %11)
  %30 = load i32, ptr %12, align 4, !tbaa !5
  %31 = load i32, ptr %21, align 8, !tbaa !14
  %.not = icmp eq i32 %30, %31
  br i1 %.not, label %.thread350, label %32

32:                                               ; preds = %4
  %33 = sub nsw i32 %30, %31
  %34 = load i32, ptr %18, align 8, !tbaa !13
  %35 = mul nsw i32 %34, 100
  %36 = sdiv i32 %35, %33
  %37 = icmp ugt i32 %36, 99
  br i1 %37, label %38, label %40

38:                                               ; preds = %32
  %39 = call i32 @ut_utoa(i32 noundef %36, ptr noundef nonnull %5)
  br label %47

40:                                               ; preds = %32
  %41 = icmp ugt i32 %36, 9
  br i1 %41, label %42, label %.thread350

42:                                               ; preds = %40
  %43 = getelementptr inbounds i8, ptr %5, i64 1
  %44 = call i32 @ut_utoa(i32 noundef %36, ptr noundef nonnull %43)
  br label %47

.thread350:                                       ; preds = %4, %40
  %.0281349352 = phi i32 [ %36, %40 ], [ 0, %4 ]
  %45 = getelementptr inbounds i8, ptr %5, i64 2
  %46 = call i32 @ut_utoa(i32 noundef %.0281349352, ptr noundef nonnull %45)
  br label %47

47:                                               ; preds = %38, %.thread350, %42
  %48 = add i64 %1, 1
  %49 = call i64 @strnlen(ptr noundef nonnull @.str, i64 noundef %48) #6
  %.not315 = icmp ult i64 %49, %1
  br i1 %.not315, label %50, label %.loopexit353

50:                                               ; preds = %47
  %51 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) @.str) #5
  %52 = load ptr, ptr %2, align 8, !tbaa !17
  %53 = sub i64 %1, %49
  %54 = add i64 %53, 1
  %55 = call i64 @strnlen(ptr noundef %52, i64 noundef %54) #6
  %.not316 = icmp ult i64 %55, %53
  br i1 %.not316, label %56, label %.loopexit353

56:                                               ; preds = %50
  %57 = getelementptr inbounds i8, ptr %0, i64 %49
  %58 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %57, ptr noundef nonnull dereferenceable(1) %52) #5
  %59 = add i64 %55, %49
  %60 = sub i64 %1, %59
  %61 = add i64 %60, 1
  %62 = call i64 @strnlen(ptr noundef nonnull @.str.1, i64 noundef %61) #6
  %.not317 = icmp ult i64 %62, %60
  br i1 %.not317, label %63, label %.loopexit353

63:                                               ; preds = %56
  %64 = getelementptr inbounds i8, ptr %0, i64 %59
  %65 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %64, ptr noundef nonnull dereferenceable(1) @.str.1) #5
  %66 = add i64 %62, %59
  %67 = sub i64 %1, %66
  %68 = add i64 %67, 1
  %69 = call i64 @strnlen(ptr noundef nonnull %5, i64 noundef %68) #6
  %.not318 = icmp ult i64 %69, %67
  br i1 %.not318, label %70, label %.loopexit353

70:                                               ; preds = %63
  %71 = getelementptr inbounds i8, ptr %0, i64 %66
  %72 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %71, ptr noundef nonnull dereferenceable(1) %5) #5
  %73 = add i64 %69, %66
  %74 = sub i64 %1, %73
  %75 = add i64 %74, 1
  %76 = call i64 @strnlen(ptr noundef nonnull @.str.2, i64 noundef %75) #6
  %.not319 = icmp ult i64 %76, %74
  br i1 %.not319, label %77, label %.loopexit353

77:                                               ; preds = %70
  %78 = getelementptr inbounds i8, ptr %0, i64 %73
  %79 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %78, ptr noundef nonnull dereferenceable(1) @.str.2) #5
  %80 = add i64 %76, %73
  %81 = sub i64 %1, %80
  %82 = add i64 %81, 1
  %83 = call i64 @strnlen(ptr noundef nonnull @.str.3, i64 noundef %82) #6
  %.not320 = icmp ult i64 %83, %81
  br i1 %.not320, label %84, label %.loopexit353

84:                                               ; preds = %77
  %85 = getelementptr inbounds i8, ptr %0, i64 %80
  %86 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %85, ptr noundef nonnull dereferenceable(1) @.str.3) #5
  %87 = add i64 %83, %80
  %88 = sub i64 %1, %87
  %89 = add i64 %88, 1
  %90 = call i64 @strnlen(ptr noundef nonnull %6, i64 noundef %89) #6
  %.not321 = icmp ult i64 %90, %88
  br i1 %.not321, label %91, label %.loopexit353

91:                                               ; preds = %84
  %92 = getelementptr inbounds i8, ptr %0, i64 %87
  %93 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %92, ptr noundef nonnull dereferenceable(1) %6) #5
  %94 = add i64 %90, %87
  %95 = sub i64 %1, %94
  %96 = add i64 %95, 1
  %97 = call i64 @strnlen(ptr noundef nonnull @.str.4, i64 noundef %96) #6
  %.not322 = icmp ult i64 %97, %95
  br i1 %.not322, label %98, label %.loopexit353

98:                                               ; preds = %91
  %99 = getelementptr inbounds i8, ptr %0, i64 %94
  %100 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %99, ptr noundef nonnull dereferenceable(1) @.str.4) #5
  %101 = add i64 %97, %94
  %102 = sub i64 %1, %101
  %103 = add i64 %102, 1
  %104 = call i64 @strnlen(ptr noundef nonnull %7, i64 noundef %103) #6
  %.not323 = icmp ult i64 %104, %102
  br i1 %.not323, label %105, label %.loopexit353

105:                                              ; preds = %98
  %106 = getelementptr inbounds i8, ptr %0, i64 %101
  %107 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %106, ptr noundef nonnull dereferenceable(1) %7) #5
  %108 = add i64 %104, %101
  %109 = sub i64 %1, %108
  %110 = add i64 %109, 1
  %111 = call i64 @strnlen(ptr noundef nonnull @.str.5, i64 noundef %110) #6
  %.not324 = icmp ult i64 %111, %109
  br i1 %.not324, label %112, label %.loopexit353

112:                                              ; preds = %105
  %113 = getelementptr inbounds i8, ptr %0, i64 %108
  %114 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %113, ptr noundef nonnull dereferenceable(1) @.str.5) #5
  %115 = add i64 %111, %108
  %116 = sub i64 %1, %115
  %117 = add i64 %116, 1
  %118 = call i64 @strnlen(ptr noundef nonnull %8, i64 noundef %117) #6
  %.not325 = icmp ult i64 %118, %116
  br i1 %.not325, label %119, label %.loopexit353

119:                                              ; preds = %112
  %120 = getelementptr inbounds i8, ptr %0, i64 %115
  %121 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %120, ptr noundef nonnull dereferenceable(1) %8) #5
  %122 = add i64 %118, %115
  %123 = sub i64 %1, %122
  %124 = add i64 %123, 1
  %125 = call i64 @strnlen(ptr noundef nonnull @.str.6, i64 noundef %124) #6
  %.not326 = icmp ult i64 %125, %123
  br i1 %.not326, label %126, label %.loopexit353

126:                                              ; preds = %119
  %127 = getelementptr inbounds i8, ptr %0, i64 %122
  %128 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %127, ptr noundef nonnull dereferenceable(1) @.str.6) #5
  %129 = add i64 %125, %122
  %130 = sub i64 %1, %129
  %131 = add i64 %130, 1
  %132 = call i64 @strnlen(ptr noundef nonnull %9, i64 noundef %131) #6
  %.not327 = icmp ult i64 %132, %130
  br i1 %.not327, label %133, label %.loopexit353

133:                                              ; preds = %126
  %134 = getelementptr inbounds i8, ptr %0, i64 %129
  %135 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %134, ptr noundef nonnull dereferenceable(1) %9) #5
  %136 = add i64 %132, %129
  %137 = sub i64 %1, %136
  %138 = add i64 %137, 1
  %139 = call i64 @strnlen(ptr noundef nonnull @.str.7, i64 noundef %138) #6
  %.not328 = icmp ult i64 %139, %137
  br i1 %.not328, label %140, label %.loopexit353

140:                                              ; preds = %133
  %141 = getelementptr inbounds i8, ptr %0, i64 %136
  %142 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %141, ptr noundef nonnull dereferenceable(1) @.str.7) #5
  %143 = add i64 %139, %136
  %144 = sub i64 %1, %143
  %145 = add i64 %144, 1
  %146 = call i64 @strnlen(ptr noundef nonnull %10, i64 noundef %145) #6
  %.not329 = icmp ult i64 %146, %144
  br i1 %.not329, label %147, label %.loopexit353

147:                                              ; preds = %140
  %148 = getelementptr inbounds i8, ptr %0, i64 %143
  %149 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %148, ptr noundef nonnull dereferenceable(1) %10) #5
  %150 = add i64 %146, %143
  %151 = sub i64 %1, %150
  %152 = add i64 %151, 1
  %153 = call i64 @strnlen(ptr noundef nonnull @.str.8, i64 noundef %152) #6
  %.not330 = icmp ult i64 %153, %151
  br i1 %.not330, label %154, label %.loopexit353

154:                                              ; preds = %147
  %155 = getelementptr inbounds i8, ptr %0, i64 %150
  %156 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %155, ptr noundef nonnull dereferenceable(1) @.str.8) #5
  %157 = add i64 %153, %150
  %158 = sub i64 %1, %157
  %159 = add i64 %158, 1
  %160 = call i64 @strnlen(ptr noundef nonnull %11, i64 noundef %159) #6
  %.not331 = icmp ult i64 %160, %158
  br i1 %.not331, label %161, label %.loopexit353

161:                                              ; preds = %154
  %162 = getelementptr inbounds i8, ptr %0, i64 %157
  %163 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %162, ptr noundef nonnull dereferenceable(1) %11) #5
  %164 = add i64 %160, %157
  %165 = sub i64 %1, %164
  %166 = add i64 %165, 1
  %167 = call i64 @strnlen(ptr noundef nonnull @.str.1, i64 noundef %166) #6
  %.not332 = icmp ult i64 %167, %165
  br i1 %.not332, label %168, label %.loopexit353

168:                                              ; preds = %161
  %169 = getelementptr inbounds i8, ptr %0, i64 %164
  %170 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %169, ptr noundef nonnull dereferenceable(1) @.str.1) #5
  %171 = add i64 %167, %164
  %172 = getelementptr inbounds i8, ptr %2, i64 48
  %173 = load i32, ptr %172, align 8, !tbaa !18
  %.not333 = icmp eq i32 %173, 0
  br i1 %.not333, label %181, label %174

174:                                              ; preds = %168
  %175 = sub i64 %1, %171
  %176 = add i64 %175, 1
  %177 = call i64 @strnlen(ptr noundef nonnull @.str.9, i64 noundef %176) #6
  %.not347 = icmp ult i64 %177, %175
  br i1 %.not347, label %178, label %.loopexit353

178:                                              ; preds = %174
  %179 = getelementptr inbounds i8, ptr %0, i64 %171
  %180 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %179, ptr noundef nonnull dereferenceable(1) @.str.9) #5
  br label %.loopexit

181:                                              ; preds = %168
  br i1 %3, label %189, label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %24, align 4, !tbaa !15
  %.not334 = icmp eq i32 %183, 0
  br i1 %.not334, label %184, label %189

184:                                              ; preds = %182
  %185 = load i32, ptr %27, align 4, !tbaa !16
  %.not335 = icmp eq i32 %185, 0
  br i1 %.not335, label %186, label %189

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %2, i64 52
  %188 = load i32, ptr %187, align 4, !tbaa !19
  %.not336 = icmp eq i32 %188, 0
  br i1 %.not336, label %.loopexit, label %189

189:                                              ; preds = %186, %184, %182, %181
  %190 = getelementptr inbounds i8, ptr %2, i64 52
  %191 = load i32, ptr %190, align 4, !tbaa !19
  %.not337 = icmp eq i32 %191, 0
  br i1 %.not337, label %200, label %192

192:                                              ; preds = %189
  %193 = sub i64 %1, %171
  %194 = add i64 %193, 1
  %195 = call i64 @strnlen(ptr noundef nonnull @.str.10, i64 noundef %194) #6
  %.not338 = icmp ult i64 %195, %193
  br i1 %.not338, label %196, label %.loopexit353

196:                                              ; preds = %192
  %197 = getelementptr inbounds i8, ptr %0, i64 %171
  %198 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %197, ptr noundef nonnull dereferenceable(1) @.str.10) #5
  %199 = add i64 %195, %171
  br label %200

200:                                              ; preds = %196, %189
  %.0285 = phi i64 [ %199, %196 ], [ %171, %189 ]
  %201 = getelementptr inbounds i8, ptr %2, i64 32
  %202 = load ptr, ptr %201, align 8, !tbaa !20
  %203 = load ptr, ptr %202, align 8, !tbaa !21
  %.not339354 = icmp eq ptr %203, null
  br i1 %.not339354, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %200
  %204 = getelementptr inbounds i8, ptr %2, i64 24
  br label %205

205:                                              ; preds = %.lr.ph, %267
  %206 = phi ptr [ %203, %.lr.ph ], [ %269, %267 ]
  %.0357 = phi i1 [ false, %.lr.ph ], [ %.1, %267 ]
  %.0284356 = phi ptr [ %202, %.lr.ph ], [ %268, %267 ]
  %.1286355 = phi i64 [ %.0285, %.lr.ph ], [ %.2, %267 ]
  br i1 %.0357, label %213, label %207

207:                                              ; preds = %205
  %208 = getelementptr inbounds i8, ptr %206, i64 288
  %209 = load i32, ptr %208, align 8, !tbaa !22
  switch i32 %209, label %212 [
    i32 0, label %213
    i32 1, label %210
    i32 77, label %211
  ]

210:                                              ; preds = %207
  br label %213

211:                                              ; preds = %207
  br label %213

212:                                              ; preds = %207
  br label %213

213:                                              ; preds = %207, %205, %210, %211, %212
  %.0282 = phi ptr [ @.str.15, %212 ], [ @.str.14, %211 ], [ @.str.13, %210 ], [ @.str.11, %205 ], [ @.str.12, %207 ]
  %214 = load i8, ptr %204, align 8, !tbaa !24, !range !25, !noundef !26
  %215 = trunc nuw i8 %214 to i1
  br i1 %215, label %219, label %216

216:                                              ; preds = %213
  %217 = getelementptr inbounds i8, ptr %206, i64 288
  %218 = load i32, ptr %217, align 8, !tbaa !22
  %.not340 = icmp ne i32 %218, 0
  %spec.select = or i1 %.not340, %.0357
  br label %219

219:                                              ; preds = %216, %213
  %.1 = phi i1 [ %.0357, %213 ], [ %spec.select, %216 ]
  %220 = load ptr, ptr %206, align 8, !tbaa !27
  %221 = sub i64 %1, %.1286355
  %222 = add i64 %221, 1
  %223 = call i64 @strnlen(ptr noundef %220, i64 noundef %222) #6
  %.not341 = icmp ult i64 %223, %221
  br i1 %.not341, label %224, label %.loopexit353

224:                                              ; preds = %219
  %225 = getelementptr inbounds i8, ptr %0, i64 %.1286355
  %226 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %225, ptr noundef nonnull dereferenceable(1) %220) #5
  %227 = add i64 %223, %.1286355
  %228 = sub i64 %1, %227
  %229 = add i64 %228, 1
  %230 = call i64 @strnlen(ptr noundef nonnull @.str.16, i64 noundef %229) #6
  %.not342 = icmp ult i64 %230, %228
  br i1 %.not342, label %231, label %.loopexit353

231:                                              ; preds = %224
  %232 = getelementptr inbounds i8, ptr %0, i64 %227
  %233 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %232, ptr noundef nonnull dereferenceable(1) @.str.16) #5
  %234 = add i64 %230, %227
  %235 = sub i64 %1, %234
  %236 = add i64 %235, 1
  %237 = call i64 @strnlen(ptr noundef nonnull %.0282, i64 noundef %236) #6
  %.not343 = icmp ult i64 %237, %235
  br i1 %.not343, label %238, label %.loopexit353

238:                                              ; preds = %231
  %239 = getelementptr inbounds i8, ptr %0, i64 %234
  %240 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %239, ptr noundef nonnull dereferenceable(1) %.0282) #5
  %241 = add i64 %237, %234
  %242 = sub i64 %1, %241
  %243 = add i64 %242, 1
  %244 = call i64 @strnlen(ptr noundef nonnull @.str.1, i64 noundef %243) #6
  %.not344 = icmp ult i64 %244, %242
  br i1 %.not344, label %245, label %.loopexit353

245:                                              ; preds = %238
  %246 = getelementptr inbounds i8, ptr %0, i64 %241
  %247 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %246, ptr noundef nonnull dereferenceable(1) @.str.1) #5
  %248 = add i64 %244, %241
  %249 = getelementptr inbounds i8, ptr %206, i64 32
  %250 = load i8, ptr %249, align 8, !tbaa !28
  %251 = icmp eq i8 %250, 0
  br i1 %251, label %267, label %252

252:                                              ; preds = %245
  %253 = sub i64 %1, %248
  %254 = add i64 %253, 1
  %255 = call i64 @strnlen(ptr noundef nonnull %249, i64 noundef %254) #6
  %.not345 = icmp ult i64 %255, %253
  br i1 %.not345, label %256, label %.loopexit353

256:                                              ; preds = %252
  %257 = getelementptr inbounds i8, ptr %0, i64 %248
  %258 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %257, ptr noundef nonnull dereferenceable(1) %249) #5
  %259 = add i64 %255, %248
  %260 = sub i64 %1, %259
  %261 = add i64 %260, 1
  %262 = call i64 @strnlen(ptr noundef nonnull @.str.1, i64 noundef %261) #6
  %.not346 = icmp ult i64 %262, %260
  br i1 %.not346, label %263, label %.loopexit353

263:                                              ; preds = %256
  %264 = getelementptr inbounds i8, ptr %0, i64 %259
  %265 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %264, ptr noundef nonnull dereferenceable(1) @.str.1) #5
  %266 = add i64 %262, %259
  br label %267

267:                                              ; preds = %245, %263
  %.2 = phi i64 [ %248, %245 ], [ %266, %263 ]
  %268 = getelementptr inbounds i8, ptr %.0284356, i64 8
  %269 = load ptr, ptr %268, align 8, !tbaa !21
  %.not339 = icmp eq ptr %269, null
  br i1 %.not339, label %.loopexit, label %205, !llvm.loop !29

.loopexit353:                                     ; preds = %256, %252, %238, %231, %224, %219, %192, %174, %161, %154, %147, %140, %133, %126, %119, %112, %105, %98, %91, %84, %77, %70, %63, %56, %50, %47
  store <8 x i8> <i8 78, i8 79, i8 77, i8 69, i8 77, i8 114, i8 10, i8 0>, ptr %0, align 1, !tbaa !28
  br label %.loopexit

.loopexit:                                        ; preds = %267, %200, %186, %.loopexit353, %178
  %.0283 = phi i32 [ 12, %.loopexit353 ], [ 0, %178 ], [ 0, %186 ], [ 0, %200 ], [ 0, %267 ]
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 11, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 13, ptr nonnull %5) #5
  ret i32 %.0283
}

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @ut_utoa(i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strnlen(ptr nocapture noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #4

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

attributes #0 = { 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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 memory(argmem: readwrite) "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 }
attributes #6 = { nounwind willreturn memory(read) }

!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, !11, i64 68}
!6 = !{!"ut_suite", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !7, i64 40, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"_Bool", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !11, i64 72}
!13 = !{!6, !11, i64 56}
!14 = !{!6, !11, i64 64}
!15 = !{!6, !11, i64 60}
!16 = !{!6, !11, i64 76}
!17 = !{!6, !7, i64 0}
!18 = !{!6, !11, i64 48}
!19 = !{!6, !11, i64 52}
!20 = !{!6, !7, i64 32}
!21 = !{!7, !7, i64 0}
!22 = !{!23, !11, i64 288}
!23 = !{!"ut_tcase", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !8, i64 32, !11, i64 288}
!24 = !{!6, !10, i64 24}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!23, !7, i64 0}
!28 = !{!8, !8, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass