; LLVM IR from seppo0010/rlite :: tests (multi_string-test)

; 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.greatest_run_info = type { i32, i32, i32, i32, i32, i32, %struct.greatest_suite_info, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i64, i64, [1 x %struct.__jmp_buf_tag] }
%struct.greatest_suite_info = type { i32, i32, i32, i32, i64, i64, i64, i64 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@greatest_info = external global %struct.greatest_run_info, align 8
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @multi_string_test() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %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
  br label %24

24:                                               ; preds = %0
  %25 = call i32 @greatest_pre_test(ptr noundef @.str)
  %26 = icmp eq i32 %25, 1
  br i1 %26, label %27, label %35

27:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 4, ptr %1) #5
  %28 = call i32 @_setjmp(ptr noundef getelementptr inbounds (%struct.greatest_run_info, ptr @greatest_info, i32 0, i32 20)) #6
  store i32 %28, ptr %1, align 4, !tbaa !5
  %29 = load i32, ptr %1, align 4, !tbaa !5
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %33

31:                                               ; preds = %27
  %32 = call i32 @basic_set_get()
  store i32 %32, ptr %1, align 4, !tbaa !5
  br label %33

33:                                               ; preds = %31, %27
  %34 = load i32, ptr %1, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str, i32 noundef %34)
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #5
  br label %43

35:                                               ; preds = %24
  %36 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %37 = and i32 %36, 4
  %38 = icmp ne i32 %37, 0
  br i1 %38, label %39, label %42

39:                                               ; preds = %35
  %40 = load ptr, ptr @stdout, align 8, !tbaa !14
  %41 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %40, ptr noundef @.str.1, ptr noundef @.str) #5
  br label %42

42:                                               ; preds = %39, %35
  br label %43

43:                                               ; preds = %42, %33
  br label %44

44:                                               ; preds = %43
  br label %45

45:                                               ; preds = %44
  %46 = call i32 @greatest_pre_test(ptr noundef @.str.2)
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %56

48:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #5
  %49 = call i32 @_setjmp(ptr noundef getelementptr inbounds (%struct.greatest_run_info, ptr @greatest_info, i32 0, i32 20)) #6
  store i32 %49, ptr %2, align 4, !tbaa !5
  %50 = load i32, ptr %2, align 4, !tbaa !5
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %52, label %54

52:                                               ; preds = %48
  %53 = call i32 @empty_set_get()
  store i32 %53, ptr %2, align 4, !tbaa !5
  br label %54

54:                                               ; preds = %52, %48
  %55 = load i32, ptr %2, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.2, i32 noundef %55)
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #5
  br label %64

56:                                               ; preds = %45
  %57 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %58 = and i32 %57, 4
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %60, label %63

60:                                               ; preds = %56
  %61 = load ptr, ptr @stdout, align 8, !tbaa !14
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef @.str.1, ptr noundef @.str.2) #5
  br label %63

63:                                               ; preds = %60, %56
  br label %64

64:                                               ; preds = %63, %54
  br label %65

65:                                               ; preds = %64
  br label %66

66:                                               ; preds = %65
  %67 = call i32 @greatest_pre_test(ptr noundef @.str.3)
  %68 = icmp eq i32 %67, 1
  br i1 %68, label %69, label %77

69:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #5
  %70 = call i32 @_setjmp(ptr noundef getelementptr inbounds (%struct.greatest_run_info, ptr @greatest_info, i32 0, i32 20)) #6
  store i32 %70, ptr %3, align 4, !tbaa !5
  %71 = load i32, ptr %3, align 4, !tbaa !5
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %73, label %75

73:                                               ; preds = %69
  %74 = call i32 @test_cmp_different_length()
  store i32 %74, ptr %3, align 4, !tbaa !5
  br label %75

75:                                               ; preds = %73, %69
  %76 = load i32, ptr %3, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.3, i32 noundef %76)
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #5
  br label %85

77:                                               ; preds = %66
  %78 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %79 = and i32 %78, 4
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %77
  %82 = load ptr, ptr @stdout, align 8, !tbaa !14
  %83 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %82, ptr noundef @.str.1, ptr noundef @.str.3) #5
  br label %84

84:                                               ; preds = %81, %77
  br label %85

85:                                               ; preds = %84, %75
  br label %86

86:                                               ; preds = %85
  br label %87

87:                                               ; preds = %86
  %88 = call i32 @greatest_pre_test(ptr noundef @.str.4)
  %89 = icmp eq i32 %88, 1
  br i1 %89, label %90, label %93

90:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  %91 = call i32 @test_cmp(i32 noundef 0, i64 noundef 0, i64 noundef 1)
  store i32 %91, ptr %4, align 4, !tbaa !5
  %92 = load i32, ptr %4, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.4, i32 noundef %92)
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  br label %101

93:                                               ; preds = %87
  %94 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %95 = and i32 %94, 4
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %100

97:                                               ; preds = %93
  %98 = load ptr, ptr @stdout, align 8, !tbaa !14
  %99 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %98, ptr noundef @.str.1, ptr noundef @.str.4) #5
  br label %100

100:                                              ; preds = %97, %93
  br label %101

101:                                              ; preds = %100, %90
  br label %102

102:                                              ; preds = %101
  br label %103

103:                                              ; preds = %102
  %104 = call i32 @greatest_pre_test(ptr noundef @.str.5)
  %105 = icmp eq i32 %104, 1
  br i1 %105, label %106, label %109

106:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #5
  %107 = call i32 @test_sha(i64 noundef 100)
  store i32 %107, ptr %5, align 4, !tbaa !5
  %108 = load i32, ptr %5, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.5, i32 noundef %108)
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #5
  br label %117

109:                                              ; preds = %103
  %110 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %111 = and i32 %110, 4
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %116

113:                                              ; preds = %109
  %114 = load ptr, ptr @stdout, align 8, !tbaa !14
  %115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %114, ptr noundef @.str.1, ptr noundef @.str.5) #5
  br label %116

116:                                              ; preds = %113, %109
  br label %117

117:                                              ; preds = %116, %106
  br label %118

118:                                              ; preds = %117
  br label %119

119:                                              ; preds = %118
  %120 = call i32 @greatest_pre_test(ptr noundef @.str.5)
  %121 = icmp eq i32 %120, 1
  br i1 %121, label %122, label %125

122:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  %123 = call i32 @test_sha(i64 noundef 1000)
  store i32 %123, ptr %6, align 4, !tbaa !5
  %124 = load i32, ptr %6, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.5, i32 noundef %124)
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  br label %133

125:                                              ; preds = %119
  %126 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %127 = and i32 %126, 4
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %132

129:                                              ; preds = %125
  %130 = load ptr, ptr @stdout, align 8, !tbaa !14
  %131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %130, ptr noundef @.str.1, ptr noundef @.str.5) #5
  br label %132

132:                                              ; preds = %129, %125
  br label %133

133:                                              ; preds = %132, %122
  br label %134

134:                                              ; preds = %133
  br label %135

135:                                              ; preds = %134
  %136 = call i32 @greatest_pre_test(ptr noundef @.str.6)
  %137 = icmp eq i32 %136, 1
  br i1 %137, label %138, label %141

138:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  %139 = call i32 @test_append(i64 noundef 10, i64 noundef 20)
  store i32 %139, ptr %7, align 4, !tbaa !5
  %140 = load i32, ptr %7, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.6, i32 noundef %140)
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  br label %149

141:                                              ; preds = %135
  %142 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %143 = and i32 %142, 4
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %148

145:                                              ; preds = %141
  %146 = load ptr, ptr @stdout, align 8, !tbaa !14
  %147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %146, ptr noundef @.str.1, ptr noundef @.str.6) #5
  br label %148

148:                                              ; preds = %145, %141
  br label %149

149:                                              ; preds = %148, %138
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  %152 = call i32 @greatest_pre_test(ptr noundef @.str.6)
  %153 = icmp eq i32 %152, 1
  br i1 %153, label %154, label %157

154:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  %155 = call i32 @test_append(i64 noundef 10, i64 noundef 1200)
  store i32 %155, ptr %8, align 4, !tbaa !5
  %156 = load i32, ptr %8, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.6, i32 noundef %156)
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %165

157:                                              ; preds = %151
  %158 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %159 = and i32 %158, 4
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %164

161:                                              ; preds = %157
  %162 = load ptr, ptr @stdout, align 8, !tbaa !14
  %163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef @.str.1, ptr noundef @.str.6) #5
  br label %164

164:                                              ; preds = %161, %157
  br label %165

165:                                              ; preds = %164, %154
  br label %166

166:                                              ; preds = %165
  br label %167

167:                                              ; preds = %166
  %168 = call i32 @greatest_pre_test(ptr noundef @.str.6)
  %169 = icmp eq i32 %168, 1
  br i1 %169, label %170, label %173

170:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %171 = call i32 @test_append(i64 noundef 1200, i64 noundef 10)
  store i32 %171, ptr %9, align 4, !tbaa !5
  %172 = load i32, ptr %9, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.6, i32 noundef %172)
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %181

173:                                              ; preds = %167
  %174 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %175 = and i32 %174, 4
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %180

177:                                              ; preds = %173
  %178 = load ptr, ptr @stdout, align 8, !tbaa !14
  %179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %178, ptr noundef @.str.1, ptr noundef @.str.6) #5
  br label %180

180:                                              ; preds = %177, %173
  br label %181

181:                                              ; preds = %180, %170
  br label %182

182:                                              ; preds = %181
  br label %183

183:                                              ; preds = %182
  %184 = call i32 @greatest_pre_test(ptr noundef @.str.6)
  %185 = icmp eq i32 %184, 1
  br i1 %185, label %186, label %189

186:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %187 = call i32 @test_append(i64 noundef 1000, i64 noundef 2000)
  store i32 %187, ptr %10, align 4, !tbaa !5
  %188 = load i32, ptr %10, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.6, i32 noundef %188)
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %197

189:                                              ; preds = %183
  %190 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %191 = and i32 %190, 4
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %196

193:                                              ; preds = %189
  %194 = load ptr, ptr @stdout, align 8, !tbaa !14
  %195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %194, ptr noundef @.str.1, ptr noundef @.str.6) #5
  br label %196

196:                                              ; preds = %193, %189
  br label %197

197:                                              ; preds = %196, %186
  br label %198

198:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  store i64 0, ptr %11, align 8, !tbaa !15
  br label %199

199:                                              ; preds = %263, %198
  %200 = load i64, ptr %11, align 8, !tbaa !15
  %201 = icmp slt i64 %200, 2
  br i1 %201, label %202, label %266

202:                                              ; preds = %199
  store i64 0, ptr %12, align 8, !tbaa !15
  br label %203

203:                                              ; preds = %259, %202
  %204 = load i64, ptr %12, align 8, !tbaa !15
  %205 = icmp slt i64 %204, 4
  br i1 %205, label %206, label %262

206:                                              ; preds = %203
  br label %207

207:                                              ; preds = %206
  %208 = call i32 @greatest_pre_test(ptr noundef @.str.4)
  %209 = icmp eq i32 %208, 1
  br i1 %209, label %210, label %222

210:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %211 = load i64, ptr %11, align 8, !tbaa !15
  %212 = mul nsw i64 %211, 2
  %213 = sub nsw i64 %212, 1
  %214 = trunc i64 %213 to i32
  %215 = load i64, ptr %12, align 8, !tbaa !15
  %216 = mul nsw i64 %215, 500
  %217 = load i64, ptr %12, align 8, !tbaa !15
  %218 = add nsw i64 %217, 1
  %219 = mul nsw i64 %218, 500
  %220 = call i32 @test_cmp(i32 noundef %214, i64 noundef %216, i64 noundef %219)
  store i32 %220, ptr %13, align 4, !tbaa !5
  %221 = load i32, ptr %13, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.4, i32 noundef %221)
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %230

222:                                              ; preds = %207
  %223 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %224 = and i32 %223, 4
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %229

226:                                              ; preds = %222
  %227 = load ptr, ptr @stdout, align 8, !tbaa !14
  %228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef @.str.1, ptr noundef @.str.4) #5
  br label %229

229:                                              ; preds = %226, %222
  br label %230

230:                                              ; preds = %229, %210
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  %234 = call i32 @greatest_pre_test(ptr noundef @.str.7)
  %235 = icmp eq i32 %234, 1
  br i1 %235, label %236, label %248

236:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %237 = load i64, ptr %11, align 8, !tbaa !15
  %238 = mul nsw i64 %237, 2
  %239 = sub nsw i64 %238, 1
  %240 = trunc i64 %239 to i32
  %241 = load i64, ptr %12, align 8, !tbaa !15
  %242 = mul nsw i64 %241, 500
  %243 = load i64, ptr %12, align 8, !tbaa !15
  %244 = add nsw i64 %243, 1
  %245 = mul nsw i64 %244, 500
  %246 = call i32 @test_cmp2(i32 noundef %240, i64 noundef %242, i64 noundef %245)
  store i32 %246, ptr %14, align 4, !tbaa !5
  %247 = load i32, ptr %14, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.7, i32 noundef %247)
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %256

248:                                              ; preds = %233
  %249 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %250 = and i32 %249, 4
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %255

252:                                              ; preds = %248
  %253 = load ptr, ptr @stdout, align 8, !tbaa !14
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef @.str.1, ptr noundef @.str.7) #5
  br label %255

255:                                              ; preds = %252, %248
  br label %256

256:                                              ; preds = %255, %236
  br label %257

257:                                              ; preds = %256
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  %260 = load i64, ptr %12, align 8, !tbaa !15
  %261 = add nsw i64 %260, 1
  store i64 %261, ptr %12, align 8, !tbaa !15
  br label %203, !llvm.loop !16

262:                                              ; preds = %203
  br label %263

263:                                              ; preds = %262
  %264 = load i64, ptr %11, align 8, !tbaa !15
  %265 = add nsw i64 %264, 1
  store i64 %265, ptr %11, align 8, !tbaa !15
  br label %199, !llvm.loop !18

266:                                              ; preds = %199
  br label %267

267:                                              ; preds = %266
  %268 = call i32 @greatest_pre_test(ptr noundef @.str.8)
  %269 = icmp eq i32 %268, 1
  br i1 %269, label %270, label %273

270:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %271 = call i32 @test_substr(i64 noundef 20, i64 noundef 0, i64 noundef 10, i64 noundef 0, i64 noundef 11)
  store i32 %271, ptr %15, align 4, !tbaa !5
  %272 = load i32, ptr %15, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.8, i32 noundef %272)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %281

273:                                              ; preds = %267
  %274 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %275 = and i32 %274, 4
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %277, label %280

277:                                              ; preds = %273
  %278 = load ptr, ptr @stdout, align 8, !tbaa !14
  %279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %278, ptr noundef @.str.1, ptr noundef @.str.8) #5
  br label %280

280:                                              ; preds = %277, %273
  br label %281

281:                                              ; preds = %280, %270
  br label %282

282:                                              ; preds = %281
  br label %283

283:                                              ; preds = %282
  br label %284

284:                                              ; preds = %283
  %285 = call i32 @greatest_pre_test(ptr noundef @.str.8)
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %290

287:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %288 = call i32 @test_substr(i64 noundef 2000, i64 noundef 1, i64 noundef -1, i64 noundef 1, i64 noundef 1999)
  store i32 %288, ptr %16, align 4, !tbaa !5
  %289 = load i32, ptr %16, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.8, i32 noundef %289)
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %298

290:                                              ; preds = %284
  %291 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %292 = and i32 %291, 4
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %297

294:                                              ; preds = %290
  %295 = load ptr, ptr @stdout, align 8, !tbaa !14
  %296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %295, ptr noundef @.str.1, ptr noundef @.str.8) #5
  br label %297

297:                                              ; preds = %294, %290
  br label %298

298:                                              ; preds = %297, %287
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  %302 = call i32 @greatest_pre_test(ptr noundef @.str.8)
  %303 = icmp eq i32 %302, 1
  br i1 %303, label %304, label %307

304:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %305 = call i32 @test_substr(i64 noundef 2000, i64 noundef -10, i64 noundef -1, i64 noundef 1990, i64 noundef 10)
  store i32 %305, ptr %17, align 4, !tbaa !5
  %306 = load i32, ptr %17, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.8, i32 noundef %306)
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %315

307:                                              ; preds = %301
  %308 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %309 = and i32 %308, 4
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %314

311:                                              ; preds = %307
  %312 = load ptr, ptr @stdout, align 8, !tbaa !14
  %313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %312, ptr noundef @.str.1, ptr noundef @.str.8) #5
  br label %314

314:                                              ; preds = %311, %307
  br label %315

315:                                              ; preds = %314, %304
  br label %316

316:                                              ; preds = %315
  br label %317

317:                                              ; preds = %316
  br label %318

318:                                              ; preds = %317
  %319 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %320 = icmp eq i32 %319, 1
  br i1 %320, label %321, label %324

321:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %322 = call i32 @test_setrange(i64 noundef 10, i64 noundef 5, i64 noundef 3)
  store i32 %322, ptr %18, align 4, !tbaa !5
  %323 = load i32, ptr %18, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %323)
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %332

324:                                              ; preds = %318
  %325 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %326 = and i32 %325, 4
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %331

328:                                              ; preds = %324
  %329 = load ptr, ptr @stdout, align 8, !tbaa !14
  %330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %329, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %331

331:                                              ; preds = %328, %324
  br label %332

332:                                              ; preds = %331, %321
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  %336 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %337 = icmp eq i32 %336, 1
  br i1 %337, label %338, label %341

338:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %339 = call i32 @test_setrange(i64 noundef 10, i64 noundef 5, i64 noundef 20)
  store i32 %339, ptr %19, align 4, !tbaa !5
  %340 = load i32, ptr %19, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %340)
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %349

341:                                              ; preds = %335
  %342 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %343 = and i32 %342, 4
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %348

345:                                              ; preds = %341
  %346 = load ptr, ptr @stdout, align 8, !tbaa !14
  %347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %348

348:                                              ; preds = %345, %341
  br label %349

349:                                              ; preds = %348, %338
  br label %350

350:                                              ; preds = %349
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  %353 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %354 = icmp eq i32 %353, 1
  br i1 %354, label %355, label %358

355:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %356 = call i32 @test_setrange(i64 noundef 10, i64 noundef 20, i64 noundef 5)
  store i32 %356, ptr %20, align 4, !tbaa !5
  %357 = load i32, ptr %20, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %357)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %366

358:                                              ; preds = %352
  %359 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %360 = and i32 %359, 4
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %365

362:                                              ; preds = %358
  %363 = load ptr, ptr @stdout, align 8, !tbaa !14
  %364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %363, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %365

365:                                              ; preds = %362, %358
  br label %366

366:                                              ; preds = %365, %355
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  br label %369

369:                                              ; preds = %368
  %370 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %371 = icmp eq i32 %370, 1
  br i1 %371, label %372, label %375

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %373 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 1024, i64 noundef 1024)
  store i32 %373, ptr %21, align 4, !tbaa !5
  %374 = load i32, ptr %21, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %374)
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %383

375:                                              ; preds = %369
  %376 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %377 = and i32 %376, 4
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %382

379:                                              ; preds = %375
  %380 = load ptr, ptr @stdout, align 8, !tbaa !14
  %381 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %380, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %382

382:                                              ; preds = %379, %375
  br label %383

383:                                              ; preds = %382, %372
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  br label %386

386:                                              ; preds = %385
  %387 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %388 = icmp eq i32 %387, 1
  br i1 %388, label %389, label %392

389:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %390 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 100, i64 noundef 1024)
  store i32 %390, ptr %22, align 4, !tbaa !5
  %391 = load i32, ptr %22, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %391)
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %400

392:                                              ; preds = %386
  %393 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %394 = and i32 %393, 4
  %395 = icmp ne i32 %394, 0
  br i1 %395, label %396, label %399

396:                                              ; preds = %392
  %397 = load ptr, ptr @stdout, align 8, !tbaa !14
  %398 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %399

399:                                              ; preds = %396, %392
  br label %400

400:                                              ; preds = %399, %389
  br label %401

401:                                              ; preds = %400
  br label %402

402:                                              ; preds = %401
  br label %403

403:                                              ; preds = %402
  %404 = call i32 @greatest_pre_test(ptr noundef @.str.9)
  %405 = icmp eq i32 %404, 1
  br i1 %405, label %406, label %409

406:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  %407 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 1024, i64 noundef 100)
  store i32 %407, ptr %23, align 4, !tbaa !5
  %408 = load i32, ptr %23, align 4, !tbaa !5
  call void @greatest_post_test(ptr noundef @.str.9, i32 noundef %408)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br label %417

409:                                              ; preds = %403
  %410 = load i32, ptr @greatest_info, align 8, !tbaa !9
  %411 = and i32 %410, 4
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %416

413:                                              ; preds = %409
  %414 = load ptr, ptr @stdout, align 8, !tbaa !14
  %415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef @.str.1, ptr noundef @.str.9) #5
  br label %416

416:                                              ; preds = %413, %409
  br label %417

417:                                              ; preds = %416, %406
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  ret void
}

declare i32 @greatest_pre_test(ptr noundef) #1

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

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) #3

declare void @greatest_post_test(ptr noundef, i32 noundef) #1

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

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #4

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

; Function Attrs: nounwind uwtable
declare hidden i32 @test_sha(i64 noundef) #0

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @basic_set_get() #0

; Function Attrs: nounwind uwtable
declare hidden i32 @empty_set_get() #0

; Function Attrs: nounwind uwtable
declare hidden i32 @test_cmp_different_length() #0

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

!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/C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"greatest_run_info", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !11, i64 24, !13, i64 72, !6, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !6, i64 128, !6, i64 132, !13, i64 136, !13, i64 144, !12, i64 152, !12, i64 160, !7, i64 168}
!11 = !{!"greatest_suite_info", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40}
!12 = !{!"long", !7, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!12, !12, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}


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

%struct.greatest_run_info = type { i32, i32, i32, i32, i32, i32, %struct.greatest_suite_info, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i64, i64, [1 x %struct.__jmp_buf_tag] }
%struct.greatest_suite_info = type { i32, i32, i32, i32, i64, i64, i64, i64 }
%struct.__jmp_buf_tag = type { [8 x i64], i32, %struct.__sigset_t }
%struct.__sigset_t = type { [16 x i64] }

@.str = external hidden unnamed_addr constant [14 x i8], align 1
@greatest_info = external global %struct.greatest_run_info, align 8
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @multi_string_test() local_unnamed_addr #0 {
  %1 = call i32 @greatest_pre_test(ptr noundef nonnull @.str) #4
  %2 = icmp eq i32 %1, 1
  br i1 %2, label %3, label %9

3:                                                ; preds = %0
  %4 = call i32 @_setjmp(ptr noundef nonnull getelementptr inbounds (i8, ptr @greatest_info, i64 168)) #5
  %5 = icmp eq i32 %4, 0
  br i1 %5, label %6, label %8

6:                                                ; preds = %3
  %7 = call i32 @basic_set_get()
  br label %8

8:                                                ; preds = %6, %3
  %.0 = phi i32 [ %7, %6 ], [ %4, %3 ]
  call void @greatest_post_test(ptr noundef nonnull @.str, i32 noundef %.0) #4
  br label %15

9:                                                ; preds = %0
  %10 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %11 = and i32 %10, 4
  %.not = icmp eq i32 %11, 0
  br i1 %.not, label %15, label %12

12:                                               ; preds = %9
  %13 = load ptr, ptr @stdout, align 8, !tbaa !13
  %14 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %13, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str) #4
  br label %15

15:                                               ; preds = %9, %12, %8
  %16 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.2) #4
  %17 = icmp eq i32 %16, 1
  br i1 %17, label %18, label %24

18:                                               ; preds = %15
  %19 = call i32 @_setjmp(ptr noundef nonnull getelementptr inbounds (i8, ptr @greatest_info, i64 168)) #5
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %21, label %23

21:                                               ; preds = %18
  %22 = call i32 @empty_set_get()
  br label %23

23:                                               ; preds = %21, %18
  %.034 = phi i32 [ %22, %21 ], [ %19, %18 ]
  call void @greatest_post_test(ptr noundef nonnull @.str.2, i32 noundef %.034) #4
  br label %30

24:                                               ; preds = %15
  %25 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %26 = and i32 %25, 4
  %.not41 = icmp eq i32 %26, 0
  br i1 %.not41, label %30, label %27

27:                                               ; preds = %24
  %28 = load ptr, ptr @stdout, align 8, !tbaa !13
  %29 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2) #4
  br label %30

30:                                               ; preds = %24, %27, %23
  %31 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.3) #4
  %32 = icmp eq i32 %31, 1
  br i1 %32, label %33, label %39

33:                                               ; preds = %30
  %34 = call i32 @_setjmp(ptr noundef nonnull getelementptr inbounds (i8, ptr @greatest_info, i64 168)) #5
  %35 = icmp eq i32 %34, 0
  br i1 %35, label %36, label %38

36:                                               ; preds = %33
  %37 = call i32 @test_cmp_different_length()
  br label %38

38:                                               ; preds = %36, %33
  %.035 = phi i32 [ %37, %36 ], [ %34, %33 ]
  call void @greatest_post_test(ptr noundef nonnull @.str.3, i32 noundef %.035) #4
  br label %45

39:                                               ; preds = %30
  %40 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %41 = and i32 %40, 4
  %.not42 = icmp eq i32 %41, 0
  br i1 %.not42, label %45, label %42

42:                                               ; preds = %39
  %43 = load ptr, ptr @stdout, align 8, !tbaa !13
  %44 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %43, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.3) #4
  br label %45

45:                                               ; preds = %39, %42, %38
  %46 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.4) #4
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %50

48:                                               ; preds = %45
  %49 = call i32 @test_cmp(i32 noundef 0, i64 noundef 0, i64 noundef 1)
  call void @greatest_post_test(ptr noundef nonnull @.str.4, i32 noundef %49) #4
  br label %56

50:                                               ; preds = %45
  %51 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %52 = and i32 %51, 4
  %.not43 = icmp eq i32 %52, 0
  br i1 %.not43, label %56, label %53

53:                                               ; preds = %50
  %54 = load ptr, ptr @stdout, align 8, !tbaa !13
  %55 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #4
  br label %56

56:                                               ; preds = %50, %53, %48
  %57 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.5) #4
  %58 = icmp eq i32 %57, 1
  br i1 %58, label %59, label %61

59:                                               ; preds = %56
  %60 = call i32 @test_sha(i64 noundef 100)
  call void @greatest_post_test(ptr noundef nonnull @.str.5, i32 noundef %60) #4
  br label %67

61:                                               ; preds = %56
  %62 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %63 = and i32 %62, 4
  %.not44 = icmp eq i32 %63, 0
  br i1 %.not44, label %67, label %64

64:                                               ; preds = %61
  %65 = load ptr, ptr @stdout, align 8, !tbaa !13
  %66 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #4
  br label %67

67:                                               ; preds = %61, %64, %59
  %68 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.5) #4
  %69 = icmp eq i32 %68, 1
  br i1 %69, label %70, label %72

70:                                               ; preds = %67
  %71 = call i32 @test_sha(i64 noundef 1000)
  call void @greatest_post_test(ptr noundef nonnull @.str.5, i32 noundef %71) #4
  br label %78

72:                                               ; preds = %67
  %73 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %74 = and i32 %73, 4
  %.not45 = icmp eq i32 %74, 0
  br i1 %.not45, label %78, label %75

75:                                               ; preds = %72
  %76 = load ptr, ptr @stdout, align 8, !tbaa !13
  %77 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.5) #4
  br label %78

78:                                               ; preds = %72, %75, %70
  %79 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.6) #4
  %80 = icmp eq i32 %79, 1
  br i1 %80, label %81, label %83

81:                                               ; preds = %78
  %82 = call i32 @test_append(i64 noundef 10, i64 noundef 20)
  call void @greatest_post_test(ptr noundef nonnull @.str.6, i32 noundef %82) #4
  br label %89

83:                                               ; preds = %78
  %84 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %85 = and i32 %84, 4
  %.not46 = icmp eq i32 %85, 0
  br i1 %.not46, label %89, label %86

86:                                               ; preds = %83
  %87 = load ptr, ptr @stdout, align 8, !tbaa !13
  %88 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %87, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #4
  br label %89

89:                                               ; preds = %83, %86, %81
  %90 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.6) #4
  %91 = icmp eq i32 %90, 1
  br i1 %91, label %92, label %94

92:                                               ; preds = %89
  %93 = call i32 @test_append(i64 noundef 10, i64 noundef 1200)
  call void @greatest_post_test(ptr noundef nonnull @.str.6, i32 noundef %93) #4
  br label %100

94:                                               ; preds = %89
  %95 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %96 = and i32 %95, 4
  %.not47 = icmp eq i32 %96, 0
  br i1 %.not47, label %100, label %97

97:                                               ; preds = %94
  %98 = load ptr, ptr @stdout, align 8, !tbaa !13
  %99 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %98, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #4
  br label %100

100:                                              ; preds = %94, %97, %92
  %101 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.6) #4
  %102 = icmp eq i32 %101, 1
  br i1 %102, label %103, label %105

103:                                              ; preds = %100
  %104 = call i32 @test_append(i64 noundef 1200, i64 noundef 10)
  call void @greatest_post_test(ptr noundef nonnull @.str.6, i32 noundef %104) #4
  br label %111

105:                                              ; preds = %100
  %106 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %107 = and i32 %106, 4
  %.not48 = icmp eq i32 %107, 0
  br i1 %.not48, label %111, label %108

108:                                              ; preds = %105
  %109 = load ptr, ptr @stdout, align 8, !tbaa !13
  %110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %109, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #4
  br label %111

111:                                              ; preds = %105, %108, %103
  %112 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.6) #4
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = call i32 @test_append(i64 noundef 1000, i64 noundef 2000)
  call void @greatest_post_test(ptr noundef nonnull @.str.6, i32 noundef %115) #4
  br label %.preheader.preheader

116:                                              ; preds = %111
  %117 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %118 = and i32 %117, 4
  %.not49 = icmp eq i32 %118, 0
  br i1 %.not49, label %.preheader.preheader, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr @stdout, align 8, !tbaa !13
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #4
  br label %.preheader.preheader

.preheader.preheader:                             ; preds = %114, %119, %116
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %210
  %122 = phi i1 [ false, %210 ], [ true, %.preheader.preheader ]
  %.03663 = phi i32 [ 1, %210 ], [ -1, %.preheader.preheader ]
  %123 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.4) #4
  %124 = icmp eq i32 %123, 1
  br i1 %124, label %125, label %127

125:                                              ; preds = %.preheader
  %126 = call i32 @test_cmp(i32 noundef %.03663, i64 noundef 0, i64 noundef 500)
  call void @greatest_post_test(ptr noundef nonnull @.str.4, i32 noundef %126) #4
  br label %133

127:                                              ; preds = %.preheader
  %128 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %129 = and i32 %128, 4
  %.not59 = icmp eq i32 %129, 0
  br i1 %.not59, label %133, label %130

130:                                              ; preds = %127
  %131 = load ptr, ptr @stdout, align 8, !tbaa !13
  %132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %131, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #4
  br label %133

133:                                              ; preds = %125, %130, %127
  %134 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.7) #4
  %135 = icmp eq i32 %134, 1
  br i1 %135, label %136, label %138

136:                                              ; preds = %133
  %137 = call i32 @test_cmp2(i32 noundef %.03663, i64 noundef 0, i64 noundef 500)
  call void @greatest_post_test(ptr noundef nonnull @.str.7, i32 noundef %137) #4
  br label %144

138:                                              ; preds = %133
  %139 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %140 = and i32 %139, 4
  %.not60 = icmp eq i32 %140, 0
  br i1 %.not60, label %144, label %141

141:                                              ; preds = %138
  %142 = load ptr, ptr @stdout, align 8, !tbaa !13
  %143 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.7) #4
  br label %144

144:                                              ; preds = %136, %141, %138
  %145 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.4) #4
  %146 = icmp eq i32 %145, 1
  br i1 %146, label %153, label %147

147:                                              ; preds = %144
  %148 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %149 = and i32 %148, 4
  %.not59.1 = icmp eq i32 %149, 0
  br i1 %.not59.1, label %155, label %150

150:                                              ; preds = %147
  %151 = load ptr, ptr @stdout, align 8, !tbaa !13
  %152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %151, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #4
  br label %155

153:                                              ; preds = %144
  %154 = call i32 @test_cmp(i32 noundef %.03663, i64 noundef 500, i64 noundef 1000)
  call void @greatest_post_test(ptr noundef nonnull @.str.4, i32 noundef %154) #4
  br label %155

155:                                              ; preds = %153, %150, %147
  %156 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.7) #4
  %157 = icmp eq i32 %156, 1
  br i1 %157, label %164, label %158

158:                                              ; preds = %155
  %159 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %160 = and i32 %159, 4
  %.not60.1 = icmp eq i32 %160, 0
  br i1 %.not60.1, label %166, label %161

161:                                              ; preds = %158
  %162 = load ptr, ptr @stdout, align 8, !tbaa !13
  %163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.7) #4
  br label %166

164:                                              ; preds = %155
  %165 = call i32 @test_cmp2(i32 noundef %.03663, i64 noundef 500, i64 noundef 1000)
  call void @greatest_post_test(ptr noundef nonnull @.str.7, i32 noundef %165) #4
  br label %166

166:                                              ; preds = %164, %161, %158
  %167 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.4) #4
  %168 = icmp eq i32 %167, 1
  br i1 %168, label %175, label %169

169:                                              ; preds = %166
  %170 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %171 = and i32 %170, 4
  %.not59.2 = icmp eq i32 %171, 0
  br i1 %.not59.2, label %177, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr @stdout, align 8, !tbaa !13
  %174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %173, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #4
  br label %177

175:                                              ; preds = %166
  %176 = call i32 @test_cmp(i32 noundef %.03663, i64 noundef 1000, i64 noundef 1500)
  call void @greatest_post_test(ptr noundef nonnull @.str.4, i32 noundef %176) #4
  br label %177

177:                                              ; preds = %175, %172, %169
  %178 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.7) #4
  %179 = icmp eq i32 %178, 1
  br i1 %179, label %186, label %180

180:                                              ; preds = %177
  %181 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %182 = and i32 %181, 4
  %.not60.2 = icmp eq i32 %182, 0
  br i1 %.not60.2, label %188, label %183

183:                                              ; preds = %180
  %184 = load ptr, ptr @stdout, align 8, !tbaa !13
  %185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %184, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.7) #4
  br label %188

186:                                              ; preds = %177
  %187 = call i32 @test_cmp2(i32 noundef %.03663, i64 noundef 1000, i64 noundef 1500)
  call void @greatest_post_test(ptr noundef nonnull @.str.7, i32 noundef %187) #4
  br label %188

188:                                              ; preds = %186, %183, %180
  %189 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.4) #4
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %197, label %191

191:                                              ; preds = %188
  %192 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %193 = and i32 %192, 4
  %.not59.3 = icmp eq i32 %193, 0
  br i1 %.not59.3, label %199, label %194

194:                                              ; preds = %191
  %195 = load ptr, ptr @stdout, align 8, !tbaa !13
  %196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %195, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.4) #4
  br label %199

197:                                              ; preds = %188
  %198 = call i32 @test_cmp(i32 noundef %.03663, i64 noundef 1500, i64 noundef 2000)
  call void @greatest_post_test(ptr noundef nonnull @.str.4, i32 noundef %198) #4
  br label %199

199:                                              ; preds = %197, %194, %191
  %200 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.7) #4
  %201 = icmp eq i32 %200, 1
  br i1 %201, label %208, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %204 = and i32 %203, 4
  %.not60.3 = icmp eq i32 %204, 0
  br i1 %.not60.3, label %210, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr @stdout, align 8, !tbaa !13
  %207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %206, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.7) #4
  br label %210

208:                                              ; preds = %199
  %209 = call i32 @test_cmp2(i32 noundef %.03663, i64 noundef 1500, i64 noundef 2000)
  call void @greatest_post_test(ptr noundef nonnull @.str.7, i32 noundef %209) #4
  br label %210

210:                                              ; preds = %208, %205, %202
  br i1 %122, label %.preheader, label %211, !llvm.loop !14

211:                                              ; preds = %210
  %212 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.8) #4
  %213 = icmp eq i32 %212, 1
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = call i32 @test_substr(i64 noundef 20, i64 noundef 0, i64 noundef 10, i64 noundef 0, i64 noundef 11)
  call void @greatest_post_test(ptr noundef nonnull @.str.8, i32 noundef %215) #4
  br label %222

216:                                              ; preds = %211
  %217 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %218 = and i32 %217, 4
  %.not50 = icmp eq i32 %218, 0
  br i1 %.not50, label %222, label %219

219:                                              ; preds = %216
  %220 = load ptr, ptr @stdout, align 8, !tbaa !13
  %221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %220, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.8) #4
  br label %222

222:                                              ; preds = %214, %219, %216
  %223 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.8) #4
  %224 = icmp eq i32 %223, 1
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = call i32 @test_substr(i64 noundef 2000, i64 noundef 1, i64 noundef -1, i64 noundef 1, i64 noundef 1999)
  call void @greatest_post_test(ptr noundef nonnull @.str.8, i32 noundef %226) #4
  br label %233

227:                                              ; preds = %222
  %228 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %229 = and i32 %228, 4
  %.not51 = icmp eq i32 %229, 0
  br i1 %.not51, label %233, label %230

230:                                              ; preds = %227
  %231 = load ptr, ptr @stdout, align 8, !tbaa !13
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %231, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.8) #4
  br label %233

233:                                              ; preds = %225, %230, %227
  %234 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.8) #4
  %235 = icmp eq i32 %234, 1
  br i1 %235, label %236, label %238

236:                                              ; preds = %233
  %237 = call i32 @test_substr(i64 noundef 2000, i64 noundef -10, i64 noundef -1, i64 noundef 1990, i64 noundef 10)
  call void @greatest_post_test(ptr noundef nonnull @.str.8, i32 noundef %237) #4
  br label %244

238:                                              ; preds = %233
  %239 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %240 = and i32 %239, 4
  %.not52 = icmp eq i32 %240, 0
  br i1 %.not52, label %244, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr @stdout, align 8, !tbaa !13
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.8) #4
  br label %244

244:                                              ; preds = %236, %241, %238
  %245 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %246 = icmp eq i32 %245, 1
  br i1 %246, label %247, label %249

247:                                              ; preds = %244
  %248 = call i32 @test_setrange(i64 noundef 10, i64 noundef 5, i64 noundef 3)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %248) #4
  br label %255

249:                                              ; preds = %244
  %250 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %251 = and i32 %250, 4
  %.not53 = icmp eq i32 %251, 0
  br i1 %.not53, label %255, label %252

252:                                              ; preds = %249
  %253 = load ptr, ptr @stdout, align 8, !tbaa !13
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %255

255:                                              ; preds = %247, %252, %249
  %256 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %257 = icmp eq i32 %256, 1
  br i1 %257, label %258, label %260

258:                                              ; preds = %255
  %259 = call i32 @test_setrange(i64 noundef 10, i64 noundef 5, i64 noundef 20)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %259) #4
  br label %266

260:                                              ; preds = %255
  %261 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %262 = and i32 %261, 4
  %.not54 = icmp eq i32 %262, 0
  br i1 %.not54, label %266, label %263

263:                                              ; preds = %260
  %264 = load ptr, ptr @stdout, align 8, !tbaa !13
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %266

266:                                              ; preds = %258, %263, %260
  %267 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %268 = icmp eq i32 %267, 1
  br i1 %268, label %269, label %271

269:                                              ; preds = %266
  %270 = call i32 @test_setrange(i64 noundef 10, i64 noundef 20, i64 noundef 5)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %270) #4
  br label %277

271:                                              ; preds = %266
  %272 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %273 = and i32 %272, 4
  %.not55 = icmp eq i32 %273, 0
  br i1 %.not55, label %277, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr @stdout, align 8, !tbaa !13
  %276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %275, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %277

277:                                              ; preds = %269, %274, %271
  %278 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %279 = icmp eq i32 %278, 1
  br i1 %279, label %280, label %282

280:                                              ; preds = %277
  %281 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 1024, i64 noundef 1024)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %281) #4
  br label %288

282:                                              ; preds = %277
  %283 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %284 = and i32 %283, 4
  %.not56 = icmp eq i32 %284, 0
  br i1 %.not56, label %288, label %285

285:                                              ; preds = %282
  %286 = load ptr, ptr @stdout, align 8, !tbaa !13
  %287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %286, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %288

288:                                              ; preds = %280, %285, %282
  %289 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %290 = icmp eq i32 %289, 1
  br i1 %290, label %291, label %293

291:                                              ; preds = %288
  %292 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 100, i64 noundef 1024)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %292) #4
  br label %299

293:                                              ; preds = %288
  %294 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %295 = and i32 %294, 4
  %.not57 = icmp eq i32 %295, 0
  br i1 %.not57, label %299, label %296

296:                                              ; preds = %293
  %297 = load ptr, ptr @stdout, align 8, !tbaa !13
  %298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %299

299:                                              ; preds = %291, %296, %293
  %300 = call i32 @greatest_pre_test(ptr noundef nonnull @.str.9) #4
  %301 = icmp eq i32 %300, 1
  br i1 %301, label %302, label %304

302:                                              ; preds = %299
  %303 = call i32 @test_setrange(i64 noundef 1024, i64 noundef 1024, i64 noundef 100)
  call void @greatest_post_test(ptr noundef nonnull @.str.9, i32 noundef %303) #4
  br label %310

304:                                              ; preds = %299
  %305 = load i32, ptr @greatest_info, align 8, !tbaa !5
  %306 = and i32 %305, 4
  %.not58 = icmp eq i32 %306, 0
  br i1 %.not58, label %310, label %307

307:                                              ; preds = %304
  %308 = load ptr, ptr @stdout, align 8, !tbaa !13
  %309 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %308, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.9) #4
  br label %310

310:                                              ; preds = %304, %307, %302
  ret void
}

declare i32 @greatest_pre_test(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind returns_twice
declare i32 @_setjmp(ptr noundef) local_unnamed_addr #2

declare void @greatest_post_test(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

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

; Function Attrs: nounwind uwtable
declare hidden i32 @test_sha(i64 noundef) local_unnamed_addr #0

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

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

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @basic_set_get() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @empty_set_get() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @test_cmp_different_length() local_unnamed_addr #0

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind returns_twice "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 = { nofree 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 #4 = { nounwind }
attributes #5 = { nounwind returns_twice }

!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, !7, i64 0}
!6 = !{!"greatest_run_info", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !10, i64 24, !12, i64 72, !7, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !7, i64 128, !7, i64 132, !12, i64 136, !12, i64 144, !11, i64 152, !11, i64 160, !8, i64 168}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"greatest_suite_info", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40}
!11 = !{!"long", !8, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!12, !12, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}


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