; LLVM IR from DanEngelbrecht/longtail :: test/test.ll/ZN51Longtail_Longtail_TestGetFilesRecursively (TestCase8TestBodyEv)

; 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.TestFileFilter = type { %struct.Longtail_PathFilterAPI }
%struct.Longtail_PathFilterAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }
%struct.jc_test_fixture = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.jc_test_stats, i32, i32, i32, i32 }
%struct.jc_test_stats = type { i32, i32, i32, i32, i64 }
%struct.Longtail_StorageAPI = type { %struct.Longtail_API, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.Longtail_FileInfos = type { i32, i32, ptr, ptr, ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [10 x ptr], align 16
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [10 x ptr], align 16
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_PERMISSIONS = external hidden unnamed_addr constant [10 x i16], align 16
@.str.386 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.390 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.391 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.392 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.393 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.394 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.395 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.396 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.397 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.398 = external hidden unnamed_addr constant [29 x i8], align 1

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZL19jc_test_get_fixturev() #1

declare void @_Z28jc_test_increment_assertionsv() #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) #2

declare void @Longtail_Free(ptr noundef) #2

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

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

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

declare void @Longtail_DisposeAPI(ptr noundef) #2

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

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

declare i32 @Longtail_GetFilesRecursively2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare ptr @Longtail_CreateInMemStorageAPI() #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv(ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca [10 x ptr], align 16
  %6 = alloca [10 x ptr], align 16
  %7 = alloca [10 x i64], align 16
  %8 = alloca [10 x i16], align 16
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.TestFileFilter, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %26 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %27 = call ptr @Longtail_CreateInMemStorageAPI()
  store ptr %27, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  store i32 10, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 80, ptr %5) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %5, ptr align 16 @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_FILENAMES, i64 80, i1 false)
  call void @llvm.lifetime.start.p0(i64 80, ptr %6) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %6, ptr align 16 @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 80, i1 false)
  call void @llvm.lifetime.start.p0(i64 80, ptr %7) #7
  %28 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 0
  %29 = load ptr, ptr %28, align 16, !tbaa !5
  %30 = call i64 @strlen(ptr noundef %29) #8
  %31 = add i64 %30, 1
  store i64 %31, ptr %7, align 8, !tbaa !11
  %32 = getelementptr inbounds i64, ptr %7, i64 1
  %33 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 1
  %34 = load ptr, ptr %33, align 8, !tbaa !5
  %35 = call i64 @strlen(ptr noundef %34) #8
  %36 = add i64 %35, 1
  store i64 %36, ptr %32, align 8, !tbaa !11
  %37 = getelementptr inbounds i64, ptr %7, i64 2
  %38 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 2
  %39 = load ptr, ptr %38, align 16, !tbaa !5
  %40 = call i64 @strlen(ptr noundef %39) #8
  %41 = add i64 %40, 1
  store i64 %41, ptr %37, align 8, !tbaa !11
  %42 = getelementptr inbounds i64, ptr %7, i64 3
  %43 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 3
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = call i64 @strlen(ptr noundef %44) #8
  %46 = add i64 %45, 1
  store i64 %46, ptr %42, align 8, !tbaa !11
  %47 = getelementptr inbounds i64, ptr %7, i64 4
  %48 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 4
  %49 = load ptr, ptr %48, align 16, !tbaa !5
  %50 = call i64 @strlen(ptr noundef %49) #8
  %51 = add i64 %50, 1
  store i64 %51, ptr %47, align 8, !tbaa !11
  %52 = getelementptr inbounds i64, ptr %7, i64 5
  %53 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 5
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  %55 = call i64 @strlen(ptr noundef %54) #8
  %56 = add i64 %55, 1
  store i64 %56, ptr %52, align 8, !tbaa !11
  %57 = getelementptr inbounds i64, ptr %7, i64 6
  %58 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 6
  %59 = load ptr, ptr %58, align 16, !tbaa !5
  %60 = call i64 @strlen(ptr noundef %59) #8
  %61 = add i64 %60, 1
  store i64 %61, ptr %57, align 8, !tbaa !11
  %62 = getelementptr inbounds i64, ptr %7, i64 7
  %63 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 7
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  %65 = call i64 @strlen(ptr noundef %64) #8
  %66 = add i64 %65, 1
  store i64 %66, ptr %62, align 8, !tbaa !11
  %67 = getelementptr inbounds i64, ptr %7, i64 8
  %68 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 8
  %69 = load ptr, ptr %68, align 16, !tbaa !5
  %70 = call i64 @strlen(ptr noundef %69) #8
  %71 = add i64 %70, 1
  store i64 %71, ptr %67, align 8, !tbaa !11
  %72 = getelementptr inbounds i64, ptr %7, i64 9
  %73 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 9
  %74 = load ptr, ptr %73, align 8, !tbaa !5
  %75 = call i64 @strlen(ptr noundef %74) #8
  %76 = add i64 %75, 1
  store i64 %76, ptr %72, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 20, ptr %8) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_PERMISSIONS, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %77

77:                                               ; preds = %192, %1
  %78 = load i32, ptr %9, align 4, !tbaa !9
  %79 = icmp ult i32 %78, 10
  br i1 %79, label %81, label %80

80:                                               ; preds = %77
  store i32 2, ptr %10, align 4
  br label %195

81:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %82 = load i32, ptr %9, align 4, !tbaa !9
  %83 = zext i32 %82 to i64
  %84 = getelementptr inbounds [10 x ptr], ptr %5, i64 0, i64 %83
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  store ptr %85, ptr %11, align 8, !tbaa !5
  br label %86

86:                                               ; preds = %81
  %87 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %88 = getelementptr inbounds %struct.jc_test_fixture, ptr %87, i32 0, i32 11
  %89 = load i32, ptr %88, align 8
  %90 = and i32 %89, -16776961
  %91 = or i32 %90, 586496
  store i32 %91, ptr %88, align 8
  %92 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %93 = getelementptr inbounds %struct.jc_test_fixture, ptr %92, i32 0, i32 4
  store ptr @.str.3, ptr %93, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %94, ptr noundef %95)
  %97 = call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %96, ptr noundef @.str.46, ptr noundef @.str.386)
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %100

99:                                               ; preds = %86
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %189

100:                                              ; preds = %86
  br label %101

101:                                              ; preds = %100
  br label %102

102:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  br label %103

103:                                              ; preds = %102
  %104 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %105 = getelementptr inbounds %struct.jc_test_fixture, ptr %104, i32 0, i32 11
  %106 = load i32, ptr %105, align 8
  %107 = and i32 %106, -16776961
  %108 = or i32 %107, 587008
  store i32 %108, ptr %105, align 8
  %109 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %110 = getelementptr inbounds %struct.jc_test_fixture, ptr %109, i32 0, i32 4
  store ptr @.str.3, ptr %110, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %111, i32 0, i32 4
  %113 = load ptr, ptr %112, align 8, !tbaa !16
  %114 = load ptr, ptr %3, align 8, !tbaa !5
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = call noundef i32 %113(ptr noundef %114, ptr noundef %115, i64 noundef 0, ptr noundef %12)
  store i32 %116, ptr %14, align 4, !tbaa !9
  %117 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef @.str.46, ptr noundef @.str.387, ptr noundef null)
  %118 = icmp eq i32 %117, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br i1 %118, label %119, label %120

119:                                              ; preds = %103
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %188

120:                                              ; preds = %103
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  br label %123

123:                                              ; preds = %122
  %124 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %125 = getelementptr inbounds %struct.jc_test_fixture, ptr %124, i32 0, i32 11
  %126 = load i32, ptr %125, align 8
  %127 = and i32 %126, -16776961
  %128 = or i32 %127, 587264
  store i32 %128, ptr %125, align 8
  %129 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %130 = getelementptr inbounds %struct.jc_test_fixture, ptr %129, i32 0, i32 4
  store ptr @.str.3, ptr %130, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %131, ptr noundef @.str.388, ptr noundef @.str.389)
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %123
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %188

135:                                              ; preds = %123
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136
  %138 = load i32, ptr %9, align 4, !tbaa !9
  %139 = zext i32 %138 to i64
  %140 = getelementptr inbounds [10 x i64], ptr %7, i64 0, i64 %139
  %141 = load i64, ptr %140, align 8, !tbaa !11
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %143, label %172

143:                                              ; preds = %137
  br label %144

144:                                              ; preds = %143
  %145 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %146 = getelementptr inbounds %struct.jc_test_fixture, ptr %145, i32 0, i32 11
  %147 = load i32, ptr %146, align 8
  %148 = and i32 %147, -16776961
  %149 = or i32 %148, 588032
  store i32 %149, ptr %146, align 8
  %150 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %151 = getelementptr inbounds %struct.jc_test_fixture, ptr %150, i32 0, i32 4
  store ptr @.str.3, ptr %151, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %152 = load ptr, ptr %3, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %152, i32 0, i32 5
  %154 = load ptr, ptr %153, align 8, !tbaa !19
  %155 = load ptr, ptr %3, align 8, !tbaa !5
  %156 = load ptr, ptr %12, align 8, !tbaa !5
  %157 = load i32, ptr %9, align 4, !tbaa !9
  %158 = zext i32 %157 to i64
  %159 = getelementptr inbounds [10 x i64], ptr %7, i64 0, i64 %158
  %160 = load i64, ptr %159, align 8, !tbaa !11
  %161 = load i32, ptr %9, align 4, !tbaa !9
  %162 = zext i32 %161 to i64
  %163 = getelementptr inbounds [10 x ptr], ptr %6, i64 0, i64 %162
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  %165 = call noundef i32 %154(ptr noundef %155, ptr noundef %156, i64 noundef 0, i64 noundef %160, ptr noundef %164)
  store i32 %165, ptr %16, align 4, !tbaa !9
  %166 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef @.str.46, ptr noundef @.str.390, ptr noundef null)
  %167 = icmp eq i32 %166, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br i1 %167, label %168, label %169

168:                                              ; preds = %144
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %188

169:                                              ; preds = %144
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  br label %172

172:                                              ; preds = %171, %137
  %173 = load ptr, ptr %3, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %173, i32 0, i32 9
  %175 = load ptr, ptr %174, align 8, !tbaa !20
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  call void %175(ptr noundef %176, ptr noundef %177)
  store ptr null, ptr %12, align 8, !tbaa !5
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %178, i32 0, i32 7
  %180 = load ptr, ptr %179, align 8, !tbaa !21
  %181 = load ptr, ptr %3, align 8, !tbaa !5
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = load i32, ptr %9, align 4, !tbaa !9
  %184 = zext i32 %183 to i64
  %185 = getelementptr inbounds [10 x i16], ptr %8, i64 0, i64 %184
  %186 = load i16, ptr %185, align 2, !tbaa !22
  %187 = call noundef i32 %180(ptr noundef %181, ptr noundef %182, i16 noundef zeroext %186)
  store i32 0, ptr %10, align 4
  br label %188

188:                                              ; preds = %172, %168, %134, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %189

189:                                              ; preds = %188, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  %190 = load i32, ptr %10, align 4
  switch i32 %190, label %195 [
    i32 0, label %191
  ]

191:                                              ; preds = %189
  br label %192

192:                                              ; preds = %191
  %193 = load i32, ptr %9, align 4, !tbaa !9
  %194 = add i32 %193, 1
  store i32 %194, ptr %9, align 4, !tbaa !9
  br label %77, !llvm.loop !24

195:                                              ; preds = %189, %80
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  %196 = load i32, ptr %10, align 4
  switch i32 %196, label %308 [
    i32 2, label %197
  ]

197:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  br label %198

198:                                              ; preds = %197
  %199 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %200 = getelementptr inbounds %struct.jc_test_fixture, ptr %199, i32 0, i32 11
  %201 = load i32, ptr %200, align 8
  %202 = and i32 %201, -16776961
  %203 = or i32 %202, 590080
  store i32 %203, ptr %200, align 8
  %204 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %205 = getelementptr inbounds %struct.jc_test_fixture, ptr %204, i32 0, i32 4
  store ptr @.str.3, ptr %205, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  %207 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %206, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef @.str.8, ptr noundef %17)
  store i32 %207, ptr %19, align 4, !tbaa !9
  %208 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef @.str.46, ptr noundef @.str.391, ptr noundef null)
  %209 = icmp eq i32 %208, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br i1 %209, label %210, label %211

210:                                              ; preds = %198
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %307

211:                                              ; preds = %198
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  %215 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %216 = getelementptr inbounds %struct.jc_test_fixture, ptr %215, i32 0, i32 11
  %217 = load i32, ptr %216, align 8
  %218 = and i32 %217, -16776961
  %219 = or i32 %218, 590336
  store i32 %219, ptr %216, align 8
  %220 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %221 = getelementptr inbounds %struct.jc_test_fixture, ptr %220, i32 0, i32 4
  store ptr @.str.3, ptr %221, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %222, ptr noundef @.str.253, ptr noundef @.str.392)
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %226

225:                                              ; preds = %214
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %307

226:                                              ; preds = %214
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228
  %230 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %231 = getelementptr inbounds %struct.jc_test_fixture, ptr %230, i32 0, i32 11
  %232 = load i32, ptr %231, align 8
  %233 = and i32 %232, -16776961
  %234 = or i32 %233, 590592
  store i32 %234, ptr %231, align 8
  %235 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %236 = getelementptr inbounds %struct.jc_test_fixture, ptr %235, i32 0, i32 4
  store ptr @.str.3, ptr %236, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 19, ptr %20, align 4, !tbaa !9
  %237 = load ptr, ptr %17, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %237, i32 0, i32 0
  %239 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %238, ptr noundef @.str.393, ptr noundef @.str.394)
  %240 = icmp eq i32 %239, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br i1 %240, label %241, label %242

241:                                              ; preds = %229
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %307

242:                                              ; preds = %229
  br label %243

243:                                              ; preds = %242
  br label %244

244:                                              ; preds = %243
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %245)
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #7
  %246 = getelementptr inbounds %struct.TestFileFilter, ptr %21, i32 0, i32 0
  %247 = getelementptr inbounds %struct.Longtail_PathFilterAPI, ptr %246, i32 0, i32 0
  %248 = getelementptr inbounds %struct.Longtail_API, ptr %247, i32 0, i32 0
  store ptr null, ptr %248, align 8, !tbaa !26
  %249 = getelementptr inbounds %struct.TestFileFilter, ptr %21, i32 0, i32 0
  %250 = getelementptr inbounds %struct.Longtail_PathFilterAPI, ptr %249, i32 0, i32 1
  store ptr @_ZZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvEN14TestFileFilter11IncludeFuncEP22Longtail_PathFilterAPIPKcS4_S4_imt, ptr %250, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  br label %251

251:                                              ; preds = %244
  %252 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %253 = getelementptr inbounds %struct.jc_test_fixture, ptr %252, i32 0, i32 11
  %254 = load i32, ptr %253, align 8
  %255 = and i32 %254, -16776961
  %256 = or i32 %255, 598016
  store i32 %256, ptr %253, align 8
  %257 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %258 = getelementptr inbounds %struct.jc_test_fixture, ptr %257, i32 0, i32 4
  store ptr @.str.3, ptr %258, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %259 = load ptr, ptr %3, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.TestFileFilter, ptr %21, i32 0, i32 0
  %261 = call i32 @Longtail_GetFilesRecursively2(ptr noundef %259, ptr noundef null, ptr noundef %260, ptr noundef null, ptr noundef null, ptr noundef @.str.8, ptr noundef %22)
  store i32 %261, ptr %24, align 4, !tbaa !9
  %262 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef @.str.46, ptr noundef @.str.395, ptr noundef null)
  %263 = icmp eq i32 %262, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br i1 %263, label %264, label %265

264:                                              ; preds = %251
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %306

265:                                              ; preds = %251
  br label %266

266:                                              ; preds = %265
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267
  %269 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %270 = getelementptr inbounds %struct.jc_test_fixture, ptr %269, i32 0, i32 11
  %271 = load i32, ptr %270, align 8
  %272 = and i32 %271, -16776961
  %273 = or i32 %272, 598272
  store i32 %273, ptr %270, align 8
  %274 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %275 = getelementptr inbounds %struct.jc_test_fixture, ptr %274, i32 0, i32 4
  store ptr @.str.3, ptr %275, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  %276 = load ptr, ptr %22, align 8, !tbaa !5
  %277 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %276, ptr noundef @.str.253, ptr noundef @.str.396)
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %279, label %280

279:                                              ; preds = %268
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %306

280:                                              ; preds = %268
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  br label %283

283:                                              ; preds = %282
  %284 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %285 = getelementptr inbounds %struct.jc_test_fixture, ptr %284, i32 0, i32 11
  %286 = load i32, ptr %285, align 8
  %287 = and i32 %286, -16776961
  %288 = or i32 %287, 598528
  store i32 %288, ptr %285, align 8
  %289 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %290 = getelementptr inbounds %struct.jc_test_fixture, ptr %289, i32 0, i32 4
  store ptr @.str.3, ptr %290, align 8, !tbaa !13
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 11, ptr %25, align 4, !tbaa !9
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.Longtail_FileInfos, ptr %291, i32 0, i32 0
  %293 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %292, ptr noundef @.str.397, ptr noundef @.str.398)
  %294 = icmp eq i32 %293, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br i1 %294, label %295, label %296

295:                                              ; preds = %283
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  store i32 1, ptr %10, align 4
  br label %306

296:                                              ; preds = %283
  br label %297

297:                                              ; preds = %296
  br label %298

298:                                              ; preds = %297
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %299)
  %300 = load ptr, ptr %3, align 8, !tbaa !5
  %301 = icmp ne ptr %300, null
  br i1 %301, label %302, label %305

302:                                              ; preds = %298
  %303 = load ptr, ptr %3, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.Longtail_StorageAPI, ptr %303, i32 0, i32 0
  call void @Longtail_DisposeAPI(ptr noundef %304)
  br label %305

305:                                              ; preds = %302, %298
  store i32 0, ptr %10, align 4
  br label %306

306:                                              ; preds = %305, %295, %279, %264
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  br label %307

307:                                              ; preds = %306, %241, %225, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %308

308:                                              ; preds = %307, %195
  call void @llvm.lifetime.end.p0(i64 20, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  %309 = load i32, ptr %10, align 4
  switch i32 %309, label %311 [
    i32 0, label %310
    i32 1, label %310
  ]

310:                                              ; preds = %308, %308
  ret void

311:                                              ; preds = %308
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef, i32 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvEN14TestFileFilter11IncludeFuncEP22Longtail_PathFilterAPIPKcS4_S4_imt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i64 noundef, i16 noundef zeroext) #6 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !6, i64 32}
!14 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !15, i64 64, !10, i64 88, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 91, !10, i64 92, !10, i64 96, !10, i64 97, !10, i64 99, !10, i64 100}
!15 = !{!"_ZTS13jc_test_stats", !10, i64 0, !10, i64 4, !10, i64 6, !10, i64 8, !10, i64 12, !12, i64 16}
!16 = !{!17, !6, i64 32}
!17 = !{!"_ZTS19Longtail_StorageAPI", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!18 = !{!"_ZTS12Longtail_API", !6, i64 0}
!19 = !{!17, !6, i64 40}
!20 = !{!17, !6, i64 72}
!21 = !{!17, !6, i64 56}
!22 = !{!23, !23, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!27, !6, i64 0}
!27 = !{!"_ZTSZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvE14TestFileFilter", !28, i64 0}
!28 = !{!"_ZTS22Longtail_PathFilterAPI", !18, i64 0, !6, i64 8}
!29 = !{!27, !6, i64 8}


; 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.TestFileFilter = type { %struct.Longtail_PathFilterAPI }
%struct.Longtail_PathFilterAPI = type { %struct.Longtail_API, ptr }
%struct.Longtail_API = type { ptr }

@.str.3 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [23 x i8], align 1
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_FILENAMES = external hidden unnamed_addr constant [10 x ptr], align 16
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS = external hidden unnamed_addr constant [10 x ptr], align 16
@__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_PERMISSIONS = external hidden unnamed_addr constant [10 x i16], align 16
@.str.386 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.387 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.388 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.389 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.390 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.391 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.392 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.393 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.394 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.395 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.396 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.397 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.398 = external hidden unnamed_addr constant [29 x i8], align 1

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZL19jc_test_get_fixturev() local_unnamed_addr #1

declare void @_Z28jc_test_increment_assertionsv() local_unnamed_addr #2

declare void @_Z21jc_test_set_test_faili(i32 noundef) local_unnamed_addr #2

declare void @Longtail_Free(ptr noundef) local_unnamed_addr #2

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

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

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

declare void @Longtail_DisposeAPI(ptr noundef) local_unnamed_addr #2

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

declare i32 @Longtail_GetFilesRecursively2(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare ptr @Longtail_CreateInMemStorageAPI() local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(8) %0) unnamed_addr #4 align 2 {
  %2 = alloca [10 x i64], align 16
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %struct.TestFileFilter, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = tail call ptr @Longtail_CreateInMemStorageAPI()
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %2) #6
  %18 = load ptr, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, align 16, !tbaa !5
  %19 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %18) #7
  %20 = add i64 %19, 1
  store i64 %20, ptr %2, align 16, !tbaa !9
  %21 = getelementptr inbounds i8, ptr %2, i64 8
  %22 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 8), align 8, !tbaa !5
  %23 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %22) #7
  %24 = add i64 %23, 1
  store i64 %24, ptr %21, align 8, !tbaa !9
  %25 = getelementptr inbounds i8, ptr %2, i64 16
  %26 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 16), align 16, !tbaa !5
  %27 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #7
  %28 = add i64 %27, 1
  store i64 %28, ptr %25, align 16, !tbaa !9
  %29 = getelementptr inbounds i8, ptr %2, i64 24
  %30 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 24), align 8, !tbaa !5
  %31 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %30) #7
  %32 = add i64 %31, 1
  store i64 %32, ptr %29, align 8, !tbaa !9
  %33 = getelementptr inbounds i8, ptr %2, i64 32
  %34 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 32), align 16, !tbaa !5
  %35 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %34) #7
  %36 = add i64 %35, 1
  store i64 %36, ptr %33, align 16, !tbaa !9
  %37 = getelementptr inbounds i8, ptr %2, i64 40
  %38 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 40), align 8, !tbaa !5
  %39 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %38) #7
  %40 = add i64 %39, 1
  store i64 %40, ptr %37, align 8, !tbaa !9
  %41 = getelementptr inbounds i8, ptr %2, i64 48
  %42 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 48), align 16, !tbaa !5
  %43 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %42) #7
  %44 = add i64 %43, 1
  store i64 %44, ptr %41, align 16, !tbaa !9
  %45 = getelementptr inbounds i8, ptr %2, i64 56
  %46 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 56), align 8, !tbaa !5
  %47 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %46) #7
  %48 = add i64 %47, 1
  store i64 %48, ptr %45, align 8, !tbaa !9
  %49 = getelementptr inbounds i8, ptr %2, i64 64
  %50 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 64), align 16, !tbaa !5
  %51 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %50) #7
  %52 = add i64 %51, 1
  store i64 %52, ptr %49, align 16, !tbaa !9
  %53 = getelementptr inbounds i8, ptr %2, i64 72
  %54 = load ptr, ptr getelementptr inbounds (i8, ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 72), align 8, !tbaa !5
  %55 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %54) #7
  %56 = add i64 %55, 1
  store i64 %56, ptr %53, align 8, !tbaa !9
  %57 = getelementptr inbounds i8, ptr %17, i64 32
  %58 = getelementptr inbounds i8, ptr %17, i64 40
  %59 = getelementptr inbounds i8, ptr %17, i64 72
  %60 = getelementptr inbounds i8, ptr %17, i64 56
  br label %61

61:                                               ; preds = %1, %115
  %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %115 ]
  %62 = getelementptr inbounds [10 x ptr], ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_FILENAMES, i64 0, i64 %indvars.iv
  %63 = load ptr, ptr %62, align 8, !tbaa !5
  %64 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %65 = getelementptr inbounds i8, ptr %64, i64 96
  %66 = load i32, ptr %65, align 8
  %67 = and i32 %66, -16776961
  %68 = or disjoint i32 %67, 586496
  store i32 %68, ptr %65, align 8
  %69 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %70 = getelementptr inbounds i8, ptr %69, i64 32
  store ptr @.str.3, ptr %70, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %71 = call noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef %17, ptr noundef %63)
  %72 = call noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef 0, i32 noundef %71, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.386)
  %73 = icmp eq i32 %72, 0
  br i1 %73, label %.thread, label %74

.thread:                                          ; preds = %61
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %199

74:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %75 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %76 = getelementptr inbounds i8, ptr %75, i64 96
  %77 = load i32, ptr %76, align 8
  %78 = and i32 %77, -16776961
  %79 = or disjoint i32 %78, 587008
  store i32 %79, ptr %76, align 8
  %80 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %81 = getelementptr inbounds i8, ptr %80, i64 32
  store ptr @.str.3, ptr %81, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 0, ptr %4, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %82 = load ptr, ptr %57, align 8, !tbaa !16
  %83 = call noundef i32 %82(ptr noundef %17, ptr noundef %63, i64 noundef 0, ptr noundef nonnull %3)
  store i32 %83, ptr %5, align 4, !tbaa !15
  %84 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.387, ptr noundef null)
  %85 = icmp eq i32 %84, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br i1 %85, label %.thread31, label %86

86:                                               ; preds = %74
  %87 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %88 = getelementptr inbounds i8, ptr %87, i64 96
  %89 = load i32, ptr %88, align 8
  %90 = and i32 %89, -16776961
  %91 = or disjoint i32 %90, 587264
  store i32 %91, ptr %88, align 8
  %92 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %93 = getelementptr inbounds i8, ptr %92, i64 32
  store ptr @.str.3, ptr %93, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = call noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %94, ptr noundef nonnull @.str.388, ptr noundef nonnull @.str.389)
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %.thread31, label %97

97:                                               ; preds = %86
  %98 = getelementptr inbounds [10 x i64], ptr %2, i64 0, i64 %indvars.iv
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %.not = icmp eq i64 %99, 0
  br i1 %.not, label %115, label %100

100:                                              ; preds = %97
  %101 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %102 = getelementptr inbounds i8, ptr %101, i64 96
  %103 = load i32, ptr %102, align 8
  %104 = and i32 %103, -16776961
  %105 = or disjoint i32 %104, 588032
  store i32 %105, ptr %102, align 8
  %106 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %107 = getelementptr inbounds i8, ptr %106, i64 32
  store ptr @.str.3, ptr %107, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 0, ptr %6, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  %108 = load ptr, ptr %58, align 8, !tbaa !19
  %109 = load ptr, ptr %3, align 8, !tbaa !5
  %110 = getelementptr inbounds [10 x ptr], ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_STRINGS, i64 0, i64 %indvars.iv
  %111 = load ptr, ptr %110, align 8, !tbaa !5
  %112 = call noundef i32 %108(ptr noundef nonnull %17, ptr noundef %109, i64 noundef 0, i64 noundef %99, ptr noundef %111)
  store i32 %112, ptr %7, align 4, !tbaa !15
  %113 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.390, ptr noundef null)
  %114 = icmp eq i32 %113, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br i1 %114, label %.thread31, label %115

.thread31:                                        ; preds = %100, %86, %74
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %199

115:                                              ; preds = %100, %97
  %116 = load ptr, ptr %59, align 8, !tbaa !20
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  call void %116(ptr noundef nonnull %17, ptr noundef %117)
  store ptr null, ptr %3, align 8, !tbaa !5
  %118 = load ptr, ptr %60, align 8, !tbaa !21
  %119 = getelementptr inbounds [10 x i16], ptr @__const._ZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEv.TEST_PERMISSIONS, i64 0, i64 %indvars.iv
  %120 = load i16, ptr %119, align 2, !tbaa !22
  %121 = call noundef i32 %118(ptr noundef nonnull %17, ptr noundef %63, i16 noundef zeroext %120)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond = icmp eq i64 %indvars.iv.next, 10
  br i1 %exitcond, label %.critedge, label %61, !llvm.loop !24

.critedge:                                        ; preds = %115
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %122 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %123 = getelementptr inbounds i8, ptr %122, i64 96
  %124 = load i32, ptr %123, align 8
  %125 = and i32 %124, -16776961
  %126 = or disjoint i32 %125, 590080
  store i32 %126, ptr %123, align 8
  %127 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %128 = getelementptr inbounds i8, ptr %127, i64 32
  store ptr @.str.3, ptr %128, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 0, ptr %9, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  %129 = call i32 @Longtail_GetFilesRecursively2(ptr noundef nonnull %17, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.8, ptr noundef nonnull %8)
  store i32 %129, ptr %10, align 4, !tbaa !15
  %130 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.391, ptr noundef null)
  %131 = icmp eq i32 %130, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br i1 %131, label %132, label %133

132:                                              ; preds = %.critedge
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %198

133:                                              ; preds = %.critedge
  %134 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %135 = getelementptr inbounds i8, ptr %134, i64 96
  %136 = load i32, ptr %135, align 8
  %137 = and i32 %136, -16776961
  %138 = or disjoint i32 %137, 590336
  store i32 %138, ptr %135, align 8
  %139 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %140 = getelementptr inbounds i8, ptr %139, i64 32
  store ptr @.str.3, ptr %140, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %141, ptr noundef nonnull @.str.253, ptr noundef nonnull @.str.392)
  %143 = icmp eq i32 %142, 0
  br i1 %143, label %144, label %145

144:                                              ; preds = %133
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %198

145:                                              ; preds = %133
  %146 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %147 = getelementptr inbounds i8, ptr %146, i64 96
  %148 = load i32, ptr %147, align 8
  %149 = and i32 %148, -16776961
  %150 = or disjoint i32 %149, 590592
  store i32 %150, ptr %147, align 8
  %151 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %152 = getelementptr inbounds i8, ptr %151, i64 32
  store ptr @.str.3, ptr %152, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 19, ptr %11, align 4, !tbaa !15
  %153 = load ptr, ptr %8, align 8, !tbaa !5
  %154 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %153, ptr noundef nonnull @.str.393, ptr noundef nonnull @.str.394)
  %155 = icmp eq i32 %154, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br i1 %155, label %156, label %157

156:                                              ; preds = %145
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %198

157:                                              ; preds = %145
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %158)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #6
  store ptr null, ptr %12, align 8, !tbaa !26
  %159 = getelementptr inbounds i8, ptr %12, i64 8
  store ptr @_ZZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvEN14TestFileFilter11IncludeFuncEP22Longtail_PathFilterAPIPKcS4_S4_imt, ptr %159, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %160 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %161 = getelementptr inbounds i8, ptr %160, i64 96
  %162 = load i32, ptr %161, align 8
  %163 = and i32 %162, -16776961
  %164 = or disjoint i32 %163, 598016
  store i32 %164, ptr %161, align 8
  %165 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %166 = getelementptr inbounds i8, ptr %165, i64 32
  store ptr @.str.3, ptr %166, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  store i32 0, ptr %14, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  %167 = call i32 @Longtail_GetFilesRecursively2(ptr noundef nonnull %17, ptr noundef null, ptr noundef nonnull %12, ptr noundef null, ptr noundef null, ptr noundef nonnull @.str.8, ptr noundef nonnull %13)
  store i32 %167, ptr %15, align 4, !tbaa !15
  %168 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb1EE7compareIiiEEiRKT_RKT0_PKcS9_PN23jc_test_enable_argumentIXntsr18jc_test_is_pointerIS5_EE5valueEE4typeE(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.395, ptr noundef null)
  %169 = icmp eq i32 %168, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br i1 %169, label %170, label %171

170:                                              ; preds = %157
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %197

171:                                              ; preds = %157
  %172 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %173 = getelementptr inbounds i8, ptr %172, i64 96
  %174 = load i32, ptr %173, align 8
  %175 = and i32 %174, -16776961
  %176 = or disjoint i32 %175, 598272
  store i32 %176, ptr %173, align 8
  %177 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %178 = getelementptr inbounds i8, ptr %177, i64 32
  store ptr @.str.3, ptr %178, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  %179 = load ptr, ptr %13, align 8, !tbaa !5
  %180 = call noundef i32 @_Z14jc_test_cmp_NEIP18Longtail_FileInfosS1_EiT_T0_PKcS5_(ptr noundef null, ptr noundef %179, ptr noundef nonnull @.str.253, ptr noundef nonnull @.str.396)
  %181 = icmp eq i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %171
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %197

183:                                              ; preds = %171
  %184 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %185 = getelementptr inbounds i8, ptr %184, i64 96
  %186 = load i32, ptr %185, align 8
  %187 = and i32 %186, -16776961
  %188 = or disjoint i32 %187, 598528
  store i32 %188, ptr %185, align 8
  %189 = call noundef ptr @_ZL19jc_test_get_fixturev()
  %190 = getelementptr inbounds i8, ptr %189, i64 32
  store ptr @.str.3, ptr %190, align 8, !tbaa !11
  call void @_Z28jc_test_increment_assertionsv()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  store i32 11, ptr %16, align 4, !tbaa !15
  %191 = load ptr, ptr %13, align 8, !tbaa !5
  %192 = call noundef i32 @_ZN21jc_test_cmp_eq_helperILb0EE7compareIjjEEiRKT_RKT0_PKcS9_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %191, ptr noundef nonnull @.str.397, ptr noundef nonnull @.str.398)
  %193 = icmp eq i32 %192, 0
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br i1 %193, label %194, label %195

194:                                              ; preds = %183
  call void @_Z21jc_test_set_test_faili(i32 noundef 1)
  br label %197

195:                                              ; preds = %183
  %196 = load ptr, ptr %13, align 8, !tbaa !5
  call void @Longtail_Free(ptr noundef %196)
  call void @Longtail_DisposeAPI(ptr noundef nonnull %17)
  br label %197

197:                                              ; preds = %195, %194, %182, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #6
  br label %198

198:                                              ; preds = %197, %156, %144, %132
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  br label %199

199:                                              ; preds = %.thread, %.thread31, %198
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %2) #6
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIiiEiT_T0_PKcS3_(i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16CreateParentPathP19Longtail_StorageAPIPKc(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z14jc_test_cmp_NEIP28Longtail_StorageAPI_OpenFileS1_EiT_T0_PKcS5_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvEN14TestFileFilter11IncludeFuncEP22Longtail_PathFilterAPIPKcS4_S4_imt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i64 noundef, i16 noundef zeroext) #5 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 32}
!12 = !{!"_ZTS15jc_test_fixture", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !13, i64 64, !14, i64 88, !14, i64 91, !14, i64 91, !14, i64 91, !14, i64 91, !14, i64 92, !14, i64 96, !14, i64 97, !14, i64 99, !14, i64 100}
!13 = !{!"_ZTS13jc_test_stats", !14, i64 0, !14, i64 4, !14, i64 6, !14, i64 8, !14, i64 12, !10, i64 16}
!14 = !{!"int", !7, i64 0}
!15 = !{!14, !14, i64 0}
!16 = !{!17, !6, i64 32}
!17 = !{!"_ZTS19Longtail_StorageAPI", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!18 = !{!"_ZTS12Longtail_API", !6, i64 0}
!19 = !{!17, !6, i64 40}
!20 = !{!17, !6, i64 72}
!21 = !{!17, !6, i64 56}
!22 = !{!23, !23, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!27, !6, i64 0}
!27 = !{!"_ZTSZN51Longtail_Longtail_TestGetFilesRecursively__TestCase8TestBodyEvE14TestFileFilter", !28, i64 0}
!28 = !{!"_ZTS22Longtail_PathFilterAPI", !18, i64 0, !6, i64 8}
!29 = !{!27, !6, i64 8}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass