; LLVM IR from tensorflow/tflite-micro :: tensorflow/lite/experimental/microfrontend/lib (window_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"

%"class.(anonymous namespace)::WindowTestConfig" = type { %struct.WindowConfig }
%struct.WindowConfig = type { i64, i64 }
%struct.WindowState = type { i64, ptr, i64, ptr, i64, ptr, i16 }

@_ZN10micro_test12tests_passedE = external dso_local global i32, align 4
@_ZN10micro_test12tests_failedE = external dso_local global i32, align 4
@_ZN10micro_test16is_test_completeE = external dso_local global i8, align 1
@_ZN10micro_test13did_test_failE = external dso_local global i8, align 1
@.str = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [119 x i8], align 1
@__const.main.expected = external hidden unnamed_addr constant [25 x i16], align 16
@.str.3 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZN12_GLOBAL__N_114kFakeAudioDataE = external hidden constant [36 x i16], align 16
@.str.10 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [38 x i8], align 1
@__const.main.expected.14 = external hidden unnamed_addr constant [25 x i16], align 16
@.str.15 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [167 x i8], align 1
@__const.main.expected.22 = external hidden unnamed_addr constant [25 x i16], align 16
@.str.23 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [217 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [217 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %7 = alloca %struct.WindowState, align 8
  %8 = alloca [25 x i16], align 16
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i16, align 2
  %16 = alloca i16, align 2
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %21 = alloca %struct.WindowState, align 8
  %22 = alloca i64, align 8
  %23 = alloca i32, align 4
  %24 = alloca i16, align 2
  %25 = alloca i16, align 2
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  %29 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %30 = alloca %struct.WindowState, align 8
  %31 = alloca i64, align 8
  %32 = alloca [25 x i16], align 16
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i16, align 2
  %40 = alloca i16, align 2
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i32, align 4
  %44 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %45 = alloca %struct.WindowState, align 8
  %46 = alloca i64, align 8
  %47 = alloca i16, align 2
  %48 = alloca i32, align 4
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca i32, align 4
  %52 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %53 = alloca %struct.WindowState, align 8
  %54 = alloca i64, align 8
  %55 = alloca [25 x i16], align 16
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i8, align 1
  %59 = alloca i8, align 1
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i16, align 2
  %63 = alloca i16, align 2
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca i32, align 4
  %67 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %68 = alloca %struct.WindowState, align 8
  %69 = alloca i64, align 8
  %70 = alloca i8, align 1
  %71 = alloca i32, align 4
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca i32, align 4
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i8, align 1
  %78 = alloca i8, align 1
  %79 = alloca i64, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  store i32 0, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  store i32 0, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void @_ZN6tflite14InitializeTestEv()
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %80

80:                                               ; preds = %220, %2
  %81 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %82 = trunc i8 %81 to i1
  %83 = xor i1 %82, true
  br i1 %83, label %84, label %233

84:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6)
  call void @llvm.lifetime.start.p0(i64 56, ptr %7) #6
  br label %85

85:                                               ; preds = %84
  %86 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %6, i32 0, i32 0
  %87 = call i32 @WindowPopulateState(ptr noundef %86, ptr noundef %7, i32 noundef 1000)
  %88 = icmp ne i32 %87, 0
  br i1 %88, label %90, label %89

89:                                               ; preds = %85
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 49)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %90

90:                                               ; preds = %89, %85
  br label %91

91:                                               ; preds = %90
  br label %92

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 50, ptr %8) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const.main.expected, i64 50, i1 false)
  br label %93

93:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %94 = getelementptr inbounds %struct.WindowState, ptr %7, i32 0, i32 0
  %95 = load i64, ptr %94, align 8, !tbaa !15
  store i64 %95, ptr %9, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store i64 25, ptr %10, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  store i8 0, ptr %11, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  store i8 0, ptr %12, align 1, !tbaa !11
  %96 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %97 = trunc i8 %96 to i1
  br i1 %97, label %98, label %124

98:                                               ; preds = %93
  %99 = load i8, ptr %12, align 1, !tbaa !11, !range !13, !noundef !14
  %100 = trunc i8 %99 to i1
  br i1 %100, label %101, label %124

101:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %102 = load i64, ptr %9, align 8, !tbaa !19
  %103 = load i64, ptr %10, align 8, !tbaa !19
  %104 = icmp ugt i64 %102, %103
  br i1 %104, label %105, label %109

105:                                              ; preds = %101
  %106 = load i64, ptr %9, align 8, !tbaa !19
  %107 = load i64, ptr %10, align 8, !tbaa !19
  %108 = sub i64 %106, %107
  br label %113

109:                                              ; preds = %101
  %110 = load i64, ptr %10, align 8, !tbaa !19
  %111 = load i64, ptr %9, align 8, !tbaa !19
  %112 = sub i64 %110, %111
  br label %113

113:                                              ; preds = %109, %105
  %114 = phi i64 [ %108, %105 ], [ %112, %109 ]
  store i64 %114, ptr %13, align 8, !tbaa !19
  %115 = load i64, ptr %13, align 8, !tbaa !19
  %116 = call noundef i64 @_ZNSt14numeric_limitsImE7epsilonEv() #6
  %117 = icmp ugt i64 %115, %116
  br i1 %117, label %118, label %123

118:                                              ; preds = %113
  %119 = load i64, ptr %9, align 8, !tbaa !19
  %120 = uitofp i64 %119 to double
  %121 = load i64, ptr %10, align 8, !tbaa !19
  %122 = uitofp i64 %121 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 55, double noundef %120, double noundef %122)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %123

123:                                              ; preds = %118, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %141

124:                                              ; preds = %98, %93
  %125 = load i64, ptr %9, align 8, !tbaa !19
  %126 = load i64, ptr %10, align 8, !tbaa !19
  %127 = icmp ne i64 %125, %126
  br i1 %127, label %128, label %140

128:                                              ; preds = %124
  %129 = load i64, ptr %9, align 8, !tbaa !19
  %130 = trunc i64 %129 to i32
  %131 = load i64, ptr %10, align 8, !tbaa !19
  %132 = trunc i64 %131 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 55, i32 noundef %130, i32 noundef %132)
  %133 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %134 = trunc i8 %133 to i1
  br i1 %134, label %138, label %135

135:                                              ; preds = %128
  %136 = load i8, ptr %12, align 1, !tbaa !11, !range !13, !noundef !14
  %137 = trunc i8 %136 to i1
  br i1 %137, label %138, label %139

138:                                              ; preds = %135, %128
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %139

139:                                              ; preds = %138, %135
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %140

140:                                              ; preds = %139, %124
  br label %141

141:                                              ; preds = %140, %123
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %142

142:                                              ; preds = %141
  br label %143

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store i64 0, ptr %14, align 8, !tbaa !19
  br label %144

144:                                              ; preds = %216, %143
  %145 = load i64, ptr %14, align 8, !tbaa !19
  %146 = getelementptr inbounds %struct.WindowState, ptr %7, i32 0, i32 0
  %147 = load i64, ptr %146, align 8, !tbaa !15
  %148 = icmp ult i64 %145, %147
  br i1 %148, label %150, label %149

149:                                              ; preds = %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %219

150:                                              ; preds = %144
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 2, ptr %15) #6
  %152 = getelementptr inbounds %struct.WindowState, ptr %7, i32 0, i32 1
  %153 = load ptr, ptr %152, align 8, !tbaa !20
  %154 = load i64, ptr %14, align 8, !tbaa !19
  %155 = getelementptr inbounds i16, ptr %153, i64 %154
  %156 = load i16, ptr %155, align 2, !tbaa !21
  store i16 %156, ptr %15, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 2, ptr %16) #6
  %157 = load i64, ptr %14, align 8, !tbaa !19
  %158 = getelementptr inbounds [25 x i16], ptr %8, i64 0, i64 %157
  %159 = load i16, ptr %158, align 2, !tbaa !21
  store i16 %159, ptr %16, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  store i8 0, ptr %17, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  store i8 0, ptr %18, align 1, !tbaa !11
  %160 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %161 = trunc i8 %160 to i1
  br i1 %161, label %162, label %194

162:                                              ; preds = %151
  %163 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %164 = trunc i8 %163 to i1
  br i1 %164, label %165, label %194

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %166 = load i16, ptr %15, align 2, !tbaa !21
  %167 = sext i16 %166 to i32
  %168 = load i16, ptr %16, align 2, !tbaa !21
  %169 = sext i16 %168 to i32
  %170 = icmp sgt i32 %167, %169
  br i1 %170, label %171, label %177

171:                                              ; preds = %165
  %172 = load i16, ptr %15, align 2, !tbaa !21
  %173 = sext i16 %172 to i32
  %174 = load i16, ptr %16, align 2, !tbaa !21
  %175 = sext i16 %174 to i32
  %176 = sub nsw i32 %173, %175
  br label %183

177:                                              ; preds = %165
  %178 = load i16, ptr %16, align 2, !tbaa !21
  %179 = sext i16 %178 to i32
  %180 = load i16, ptr %15, align 2, !tbaa !21
  %181 = sext i16 %180 to i32
  %182 = sub nsw i32 %179, %181
  br label %183

183:                                              ; preds = %177, %171
  %184 = phi i32 [ %176, %171 ], [ %182, %177 ]
  store i32 %184, ptr %19, align 4, !tbaa !5
  %185 = load i32, ptr %19, align 4, !tbaa !5
  %186 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %187 = icmp sgt i32 %185, %186
  br i1 %187, label %188, label %193

188:                                              ; preds = %183
  %189 = load i16, ptr %15, align 2, !tbaa !21
  %190 = sitofp i16 %189 to double
  %191 = load i16, ptr %16, align 2, !tbaa !21
  %192 = sitofp i16 %191 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 57, double noundef %190, double noundef %192)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %193

193:                                              ; preds = %188, %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %213

194:                                              ; preds = %162, %151
  %195 = load i16, ptr %15, align 2, !tbaa !21
  %196 = sext i16 %195 to i32
  %197 = load i16, ptr %16, align 2, !tbaa !21
  %198 = sext i16 %197 to i32
  %199 = icmp ne i32 %196, %198
  br i1 %199, label %200, label %212

200:                                              ; preds = %194
  %201 = load i16, ptr %15, align 2, !tbaa !21
  %202 = sext i16 %201 to i32
  %203 = load i16, ptr %16, align 2, !tbaa !21
  %204 = sext i16 %203 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.8, ptr noundef @.str.2, i32 noundef 57, i32 noundef %202, i32 noundef %204)
  %205 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %206 = trunc i8 %205 to i1
  br i1 %206, label %210, label %207

207:                                              ; preds = %200
  %208 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %209 = trunc i8 %208 to i1
  br i1 %209, label %210, label %211

210:                                              ; preds = %207, %200
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %211

211:                                              ; preds = %210, %207
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %212

212:                                              ; preds = %211, %194
  br label %213

213:                                              ; preds = %212, %193
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %15) #6
  br label %214

214:                                              ; preds = %213
  br label %215

215:                                              ; preds = %214
  br label %216

216:                                              ; preds = %215
  %217 = load i64, ptr %14, align 8, !tbaa !19
  %218 = add i64 %217, 1
  store i64 %218, ptr %14, align 8, !tbaa !19
  br label %144, !llvm.loop !22

219:                                              ; preds = %149
  call void @WindowFreeStateContents(ptr noundef %7)
  call void @llvm.lifetime.end.p0(i64 50, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #6
  br label %220

220:                                              ; preds = %219
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %221 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %222 = trunc i8 %221 to i1
  %223 = zext i1 %222 to i64
  %224 = select i1 %222, i32 0, i32 1
  %225 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %226 = add nsw i32 %225, %224
  store i32 %226, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %227 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %228 = trunc i8 %227 to i1
  %229 = zext i1 %228 to i64
  %230 = select i1 %228, i32 1, i32 0
  %231 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %232 = add nsw i32 %231, %230
  store i32 %232, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %80, !llvm.loop !24

233:                                              ; preds = %80
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.9)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %234

234:                                              ; preds = %330, %233
  %235 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %236 = trunc i8 %235 to i1
  %237 = xor i1 %236, true
  br i1 %237, label %238, label %343

238:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20)
  call void @llvm.lifetime.start.p0(i64 56, ptr %21) #6
  br label %239

239:                                              ; preds = %238
  %240 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %20, i32 0, i32 0
  %241 = call i32 @WindowPopulateState(ptr noundef %240, ptr noundef %21, i32 noundef 1000)
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %244, label %243

243:                                              ; preds = %239
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 67)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %244

244:                                              ; preds = %243, %239
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  br label %247

247:                                              ; preds = %246
  %248 = call i32 @WindowProcessSamples(ptr noundef %21, ptr noundef @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef %22)
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %251, label %250

250:                                              ; preds = %247
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 72)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %251

251:                                              ; preds = %250, %247
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 10, ptr %23, align 4, !tbaa !5
  br label %254

254:                                              ; preds = %326, %253
  %255 = load i32, ptr %23, align 4, !tbaa !5
  %256 = icmp slt i32 %255, 25
  br i1 %256, label %257, label %329

257:                                              ; preds = %254
  br label %258

258:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 2, ptr %24) #6
  %259 = getelementptr inbounds %struct.WindowState, ptr %21, i32 0, i32 3
  %260 = load ptr, ptr %259, align 8, !tbaa !25
  %261 = load i32, ptr %23, align 4, !tbaa !5
  %262 = sub nsw i32 %261, 10
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i16, ptr %260, i64 %263
  %265 = load i16, ptr %264, align 2, !tbaa !21
  store i16 %265, ptr %24, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 2, ptr %25) #6
  %266 = load i32, ptr %23, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [36 x i16], ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 0, i64 %267
  %269 = load i16, ptr %268, align 2, !tbaa !21
  store i16 %269, ptr %25, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  store i8 0, ptr %26, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  store i8 0, ptr %27, align 1, !tbaa !11
  %270 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %271 = trunc i8 %270 to i1
  br i1 %271, label %272, label %304

272:                                              ; preds = %258
  %273 = load i8, ptr %27, align 1, !tbaa !11, !range !13, !noundef !14
  %274 = trunc i8 %273 to i1
  br i1 %274, label %275, label %304

275:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %276 = load i16, ptr %24, align 2, !tbaa !21
  %277 = sext i16 %276 to i32
  %278 = load i16, ptr %25, align 2, !tbaa !21
  %279 = sext i16 %278 to i32
  %280 = icmp sgt i32 %277, %279
  br i1 %280, label %281, label %287

281:                                              ; preds = %275
  %282 = load i16, ptr %24, align 2, !tbaa !21
  %283 = sext i16 %282 to i32
  %284 = load i16, ptr %25, align 2, !tbaa !21
  %285 = sext i16 %284 to i32
  %286 = sub nsw i32 %283, %285
  br label %293

287:                                              ; preds = %275
  %288 = load i16, ptr %25, align 2, !tbaa !21
  %289 = sext i16 %288 to i32
  %290 = load i16, ptr %24, align 2, !tbaa !21
  %291 = sext i16 %290 to i32
  %292 = sub nsw i32 %289, %291
  br label %293

293:                                              ; preds = %287, %281
  %294 = phi i32 [ %286, %281 ], [ %292, %287 ]
  store i32 %294, ptr %28, align 4, !tbaa !5
  %295 = load i32, ptr %28, align 4, !tbaa !5
  %296 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %297 = icmp sgt i32 %295, %296
  br i1 %297, label %298, label %303

298:                                              ; preds = %293
  %299 = load i16, ptr %24, align 2, !tbaa !21
  %300 = sitofp i16 %299 to double
  %301 = load i16, ptr %25, align 2, !tbaa !21
  %302 = sitofp i16 %301 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 76, double noundef %300, double noundef %302)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %303

303:                                              ; preds = %298, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %323

304:                                              ; preds = %272, %258
  %305 = load i16, ptr %24, align 2, !tbaa !21
  %306 = sext i16 %305 to i32
  %307 = load i16, ptr %25, align 2, !tbaa !21
  %308 = sext i16 %307 to i32
  %309 = icmp ne i32 %306, %308
  br i1 %309, label %310, label %322

310:                                              ; preds = %304
  %311 = load i16, ptr %24, align 2, !tbaa !21
  %312 = sext i16 %311 to i32
  %313 = load i16, ptr %25, align 2, !tbaa !21
  %314 = sext i16 %313 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.12, ptr noundef @.str.2, i32 noundef 76, i32 noundef %312, i32 noundef %314)
  %315 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %316 = trunc i8 %315 to i1
  br i1 %316, label %320, label %317

317:                                              ; preds = %310
  %318 = load i8, ptr %27, align 1, !tbaa !11, !range !13, !noundef !14
  %319 = trunc i8 %318 to i1
  br i1 %319, label %320, label %321

320:                                              ; preds = %317, %310
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %321

321:                                              ; preds = %320, %317
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %322

322:                                              ; preds = %321, %304
  br label %323

323:                                              ; preds = %322, %303
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %24) #6
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  %327 = load i32, ptr %23, align 4, !tbaa !5
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %23, align 4, !tbaa !5
  br label %254, !llvm.loop !26

329:                                              ; preds = %254
  call void @WindowFreeStateContents(ptr noundef %21)
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  br label %330

330:                                              ; preds = %329
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %331 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %332 = trunc i8 %331 to i1
  %333 = zext i1 %332 to i64
  %334 = select i1 %332, i32 0, i32 1
  %335 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %336 = add nsw i32 %335, %334
  store i32 %336, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %337 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %338 = trunc i8 %337 to i1
  %339 = zext i1 %338 to i64
  %340 = select i1 %338, i32 1, i32 0
  %341 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %342 = add nsw i32 %341, %340
  store i32 %342, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %234, !llvm.loop !27

343:                                              ; preds = %234
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.13)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %344

344:                                              ; preds = %491, %343
  %345 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %346 = trunc i8 %345 to i1
  %347 = xor i1 %346, true
  br i1 %347, label %348, label %504

348:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29)
  call void @llvm.lifetime.start.p0(i64 56, ptr %30) #6
  br label %349

349:                                              ; preds = %348
  %350 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %29, i32 0, i32 0
  %351 = call i32 @WindowPopulateState(ptr noundef %350, ptr noundef %30, i32 noundef 1000)
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %354, label %353

353:                                              ; preds = %349
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 86)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %354

354:                                              ; preds = %353, %349
  br label %355

355:                                              ; preds = %354
  br label %356

356:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  br label %357

357:                                              ; preds = %356
  %358 = call i32 @WindowProcessSamples(ptr noundef %30, ptr noundef @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef %31)
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %361, label %360

360:                                              ; preds = %357
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 91)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %361

361:                                              ; preds = %360, %357
  br label %362

362:                                              ; preds = %361
  br label %363

363:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 50, ptr %32) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %32, ptr align 16 @__const.main.expected.14, i64 50, i1 false)
  br label %364

364:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %365 = getelementptr inbounds %struct.WindowState, ptr %30, i32 0, i32 0
  %366 = load i64, ptr %365, align 8, !tbaa !15
  store i64 %366, ptr %33, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  store i64 25, ptr %34, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  store i8 0, ptr %35, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  store i8 0, ptr %36, align 1, !tbaa !11
  %367 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %368 = trunc i8 %367 to i1
  br i1 %368, label %369, label %395

369:                                              ; preds = %364
  %370 = load i8, ptr %36, align 1, !tbaa !11, !range !13, !noundef !14
  %371 = trunc i8 %370 to i1
  br i1 %371, label %372, label %395

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %373 = load i64, ptr %33, align 8, !tbaa !19
  %374 = load i64, ptr %34, align 8, !tbaa !19
  %375 = icmp ugt i64 %373, %374
  br i1 %375, label %376, label %380

376:                                              ; preds = %372
  %377 = load i64, ptr %33, align 8, !tbaa !19
  %378 = load i64, ptr %34, align 8, !tbaa !19
  %379 = sub i64 %377, %378
  br label %384

380:                                              ; preds = %372
  %381 = load i64, ptr %34, align 8, !tbaa !19
  %382 = load i64, ptr %33, align 8, !tbaa !19
  %383 = sub i64 %381, %382
  br label %384

384:                                              ; preds = %380, %376
  %385 = phi i64 [ %379, %376 ], [ %383, %380 ]
  store i64 %385, ptr %37, align 8, !tbaa !19
  %386 = load i64, ptr %37, align 8, !tbaa !19
  %387 = call noundef i64 @_ZNSt14numeric_limitsImE7epsilonEv() #6
  %388 = icmp ugt i64 %386, %387
  br i1 %388, label %389, label %394

389:                                              ; preds = %384
  %390 = load i64, ptr %33, align 8, !tbaa !19
  %391 = uitofp i64 %390 to double
  %392 = load i64, ptr %34, align 8, !tbaa !19
  %393 = uitofp i64 %392 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 96, double noundef %391, double noundef %393)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %394

394:                                              ; preds = %389, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %412

395:                                              ; preds = %369, %364
  %396 = load i64, ptr %33, align 8, !tbaa !19
  %397 = load i64, ptr %34, align 8, !tbaa !19
  %398 = icmp ne i64 %396, %397
  br i1 %398, label %399, label %411

399:                                              ; preds = %395
  %400 = load i64, ptr %33, align 8, !tbaa !19
  %401 = trunc i64 %400 to i32
  %402 = load i64, ptr %34, align 8, !tbaa !19
  %403 = trunc i64 %402 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 96, i32 noundef %401, i32 noundef %403)
  %404 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %405 = trunc i8 %404 to i1
  br i1 %405, label %409, label %406

406:                                              ; preds = %399
  %407 = load i8, ptr %36, align 1, !tbaa !11, !range !13, !noundef !14
  %408 = trunc i8 %407 to i1
  br i1 %408, label %409, label %410

409:                                              ; preds = %406, %399
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %410

410:                                              ; preds = %409, %406
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %411

411:                                              ; preds = %410, %395
  br label %412

412:                                              ; preds = %411, %394
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  br label %413

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  store i64 0, ptr %38, align 8, !tbaa !19
  br label %415

415:                                              ; preds = %487, %414
  %416 = load i64, ptr %38, align 8, !tbaa !19
  %417 = getelementptr inbounds %struct.WindowState, ptr %30, i32 0, i32 0
  %418 = load i64, ptr %417, align 8, !tbaa !15
  %419 = icmp ult i64 %416, %418
  br i1 %419, label %421, label %420

420:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  br label %490

421:                                              ; preds = %415
  br label %422

422:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 2, ptr %39) #6
  %423 = getelementptr inbounds %struct.WindowState, ptr %30, i32 0, i32 5
  %424 = load ptr, ptr %423, align 8, !tbaa !28
  %425 = load i64, ptr %38, align 8, !tbaa !19
  %426 = getelementptr inbounds i16, ptr %424, i64 %425
  %427 = load i16, ptr %426, align 2, !tbaa !21
  store i16 %427, ptr %39, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #6
  %428 = load i64, ptr %38, align 8, !tbaa !19
  %429 = getelementptr inbounds [25 x i16], ptr %32, i64 0, i64 %428
  %430 = load i16, ptr %429, align 2, !tbaa !21
  store i16 %430, ptr %40, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  store i8 0, ptr %41, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  store i8 0, ptr %42, align 1, !tbaa !11
  %431 = load i8, ptr %41, align 1, !tbaa !11, !range !13, !noundef !14
  %432 = trunc i8 %431 to i1
  br i1 %432, label %433, label %465

433:                                              ; preds = %422
  %434 = load i8, ptr %42, align 1, !tbaa !11, !range !13, !noundef !14
  %435 = trunc i8 %434 to i1
  br i1 %435, label %436, label %465

436:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %437 = load i16, ptr %39, align 2, !tbaa !21
  %438 = sext i16 %437 to i32
  %439 = load i16, ptr %40, align 2, !tbaa !21
  %440 = sext i16 %439 to i32
  %441 = icmp sgt i32 %438, %440
  br i1 %441, label %442, label %448

442:                                              ; preds = %436
  %443 = load i16, ptr %39, align 2, !tbaa !21
  %444 = sext i16 %443 to i32
  %445 = load i16, ptr %40, align 2, !tbaa !21
  %446 = sext i16 %445 to i32
  %447 = sub nsw i32 %444, %446
  br label %454

448:                                              ; preds = %436
  %449 = load i16, ptr %40, align 2, !tbaa !21
  %450 = sext i16 %449 to i32
  %451 = load i16, ptr %39, align 2, !tbaa !21
  %452 = sext i16 %451 to i32
  %453 = sub nsw i32 %450, %452
  br label %454

454:                                              ; preds = %448, %442
  %455 = phi i32 [ %447, %442 ], [ %453, %448 ]
  store i32 %455, ptr %43, align 4, !tbaa !5
  %456 = load i32, ptr %43, align 4, !tbaa !5
  %457 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %458 = icmp sgt i32 %456, %457
  br i1 %458, label %459, label %464

459:                                              ; preds = %454
  %460 = load i16, ptr %39, align 2, !tbaa !21
  %461 = sitofp i16 %460 to double
  %462 = load i16, ptr %40, align 2, !tbaa !21
  %463 = sitofp i16 %462 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 98, double noundef %461, double noundef %463)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %464

464:                                              ; preds = %459, %454
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %484

465:                                              ; preds = %433, %422
  %466 = load i16, ptr %39, align 2, !tbaa !21
  %467 = sext i16 %466 to i32
  %468 = load i16, ptr %40, align 2, !tbaa !21
  %469 = sext i16 %468 to i32
  %470 = icmp ne i32 %467, %469
  br i1 %470, label %471, label %483

471:                                              ; preds = %465
  %472 = load i16, ptr %39, align 2, !tbaa !21
  %473 = sext i16 %472 to i32
  %474 = load i16, ptr %40, align 2, !tbaa !21
  %475 = sext i16 %474 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 98, i32 noundef %473, i32 noundef %475)
  %476 = load i8, ptr %41, align 1, !tbaa !11, !range !13, !noundef !14
  %477 = trunc i8 %476 to i1
  br i1 %477, label %481, label %478

478:                                              ; preds = %471
  %479 = load i8, ptr %42, align 1, !tbaa !11, !range !13, !noundef !14
  %480 = trunc i8 %479 to i1
  br i1 %480, label %481, label %482

481:                                              ; preds = %478, %471
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %482

482:                                              ; preds = %481, %478
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %483

483:                                              ; preds = %482, %465
  br label %484

484:                                              ; preds = %483, %464
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %39) #6
  br label %485

485:                                              ; preds = %484
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  %488 = load i64, ptr %38, align 8, !tbaa !19
  %489 = add i64 %488, 1
  store i64 %489, ptr %38, align 8, !tbaa !19
  br label %415, !llvm.loop !29

490:                                              ; preds = %420
  call void @WindowFreeStateContents(ptr noundef %30)
  call void @llvm.lifetime.end.p0(i64 50, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #6
  br label %491

491:                                              ; preds = %490
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %492 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %493 = trunc i8 %492 to i1
  %494 = zext i1 %493 to i64
  %495 = select i1 %493, i32 0, i32 1
  %496 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %497 = add nsw i32 %496, %495
  store i32 %497, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %498 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %499 = trunc i8 %498 to i1
  %500 = zext i1 %499 to i64
  %501 = select i1 %499, i32 1, i32 0
  %502 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %503 = add nsw i32 %502, %501
  store i32 %503, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %344, !llvm.loop !30

504:                                              ; preds = %344
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.17)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %505

505:                                              ; preds = %579, %504
  %506 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %507 = trunc i8 %506 to i1
  %508 = xor i1 %507, true
  br i1 %508, label %509, label %592

509:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44)
  call void @llvm.lifetime.start.p0(i64 56, ptr %45) #6
  br label %510

510:                                              ; preds = %509
  %511 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %44, i32 0, i32 0
  %512 = call i32 @WindowPopulateState(ptr noundef %511, ptr noundef %45, i32 noundef 1000)
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %515, label %514

514:                                              ; preds = %510
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 108)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %515

515:                                              ; preds = %514, %510
  br label %516

516:                                              ; preds = %515
  br label %517

517:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  br label %518

518:                                              ; preds = %517
  %519 = call i32 @WindowProcessSamples(ptr noundef %45, ptr noundef @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef %46)
  %520 = icmp ne i32 %519, 0
  br i1 %520, label %522, label %521

521:                                              ; preds = %518
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 113)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %522

522:                                              ; preds = %521, %518
  br label %523

523:                                              ; preds = %522
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 2, ptr %47) #6
  %526 = getelementptr inbounds %struct.WindowState, ptr %45, i32 0, i32 6
  %527 = load i16, ptr %526, align 8, !tbaa !31
  store i16 %527, ptr %47, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  store i32 32256, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #6
  store i8 0, ptr %49, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #6
  store i8 0, ptr %50, align 1, !tbaa !11
  %528 = load i8, ptr %49, align 1, !tbaa !11, !range !13, !noundef !14
  %529 = trunc i8 %528 to i1
  br i1 %529, label %530, label %559

530:                                              ; preds = %525
  %531 = load i8, ptr %50, align 1, !tbaa !11, !range !13, !noundef !14
  %532 = trunc i8 %531 to i1
  br i1 %532, label %533, label %559

533:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %534 = load i16, ptr %47, align 2, !tbaa !21
  %535 = sext i16 %534 to i32
  %536 = load i32, ptr %48, align 4, !tbaa !5
  %537 = icmp sgt i32 %535, %536
  br i1 %537, label %538, label %543

538:                                              ; preds = %533
  %539 = load i16, ptr %47, align 2, !tbaa !21
  %540 = sext i16 %539 to i32
  %541 = load i32, ptr %48, align 4, !tbaa !5
  %542 = sub nsw i32 %540, %541
  br label %548

543:                                              ; preds = %533
  %544 = load i32, ptr %48, align 4, !tbaa !5
  %545 = load i16, ptr %47, align 2, !tbaa !21
  %546 = sext i16 %545 to i32
  %547 = sub nsw i32 %544, %546
  br label %548

548:                                              ; preds = %543, %538
  %549 = phi i32 [ %542, %538 ], [ %547, %543 ]
  store i32 %549, ptr %51, align 4, !tbaa !5
  %550 = load i32, ptr %51, align 4, !tbaa !5
  %551 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %552 = icmp sgt i32 %550, %551
  br i1 %552, label %553, label %558

553:                                              ; preds = %548
  %554 = load i16, ptr %47, align 2, !tbaa !21
  %555 = sitofp i16 %554 to double
  %556 = load i32, ptr %48, align 4, !tbaa !5
  %557 = sitofp i32 %556 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 115, double noundef %555, double noundef %557)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %558

558:                                              ; preds = %553, %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  br label %576

559:                                              ; preds = %530, %525
  %560 = load i16, ptr %47, align 2, !tbaa !21
  %561 = sext i16 %560 to i32
  %562 = load i32, ptr %48, align 4, !tbaa !5
  %563 = icmp ne i32 %561, %562
  br i1 %563, label %564, label %575

564:                                              ; preds = %559
  %565 = load i16, ptr %47, align 2, !tbaa !21
  %566 = sext i16 %565 to i32
  %567 = load i32, ptr %48, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 115, i32 noundef %566, i32 noundef %567)
  %568 = load i8, ptr %49, align 1, !tbaa !11, !range !13, !noundef !14
  %569 = trunc i8 %568 to i1
  br i1 %569, label %573, label %570

570:                                              ; preds = %564
  %571 = load i8, ptr %50, align 1, !tbaa !11, !range !13, !noundef !14
  %572 = trunc i8 %571 to i1
  br i1 %572, label %573, label %574

573:                                              ; preds = %570, %564
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %574

574:                                              ; preds = %573, %570
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %575

575:                                              ; preds = %574, %559
  br label %576

576:                                              ; preds = %575, %558
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %47) #6
  br label %577

577:                                              ; preds = %576
  br label %578

578:                                              ; preds = %577
  call void @WindowFreeStateContents(ptr noundef %45)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  br label %579

579:                                              ; preds = %578
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %580 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %581 = trunc i8 %580 to i1
  %582 = zext i1 %581 to i64
  %583 = select i1 %581, i32 0, i32 1
  %584 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %585 = add nsw i32 %584, %583
  store i32 %585, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %586 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %587 = trunc i8 %586 to i1
  %588 = zext i1 %587 to i64
  %589 = select i1 %587, i32 1, i32 0
  %590 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %591 = add nsw i32 %590, %589
  store i32 %591, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %505, !llvm.loop !32

592:                                              ; preds = %505
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.20)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %593

593:                                              ; preds = %747, %592
  %594 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %595 = trunc i8 %594 to i1
  %596 = xor i1 %595, true
  br i1 %596, label %597, label %760

597:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52)
  call void @llvm.lifetime.start.p0(i64 56, ptr %53) #6
  br label %598

598:                                              ; preds = %597
  %599 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %52, i32 0, i32 0
  %600 = call i32 @WindowPopulateState(ptr noundef %599, ptr noundef %53, i32 noundef 1000)
  %601 = icmp ne i32 %600, 0
  br i1 %601, label %603, label %602

602:                                              ; preds = %598
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 124)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %603

603:                                              ; preds = %602, %598
  br label %604

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  br label %606

606:                                              ; preds = %605
  %607 = call i32 @WindowProcessSamples(ptr noundef %53, ptr noundef @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef %54)
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %610, label %609

609:                                              ; preds = %606
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 129)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %610

610:                                              ; preds = %609, %606
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  br label %613

613:                                              ; preds = %612
  %614 = call i32 @WindowProcessSamples(ptr noundef %53, ptr noundef getelementptr inbounds (i16, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 25), i64 noundef 11, ptr noundef %54)
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %617, label %616

616:                                              ; preds = %613
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 133)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %617

617:                                              ; preds = %616, %613
  br label %618

618:                                              ; preds = %617
  br label %619

619:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 50, ptr %55) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %55, ptr align 16 @__const.main.expected.22, i64 50, i1 false)
  br label %620

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  %621 = getelementptr inbounds %struct.WindowState, ptr %53, i32 0, i32 0
  %622 = load i64, ptr %621, align 8, !tbaa !15
  store i64 %622, ptr %56, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  store i64 25, ptr %57, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  store i8 0, ptr %58, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #6
  store i8 0, ptr %59, align 1, !tbaa !11
  %623 = load i8, ptr %58, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc i8 %623 to i1
  br i1 %624, label %625, label %651

625:                                              ; preds = %620
  %626 = load i8, ptr %59, align 1, !tbaa !11, !range !13, !noundef !14
  %627 = trunc i8 %626 to i1
  br i1 %627, label %628, label %651

628:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %629 = load i64, ptr %56, align 8, !tbaa !19
  %630 = load i64, ptr %57, align 8, !tbaa !19
  %631 = icmp ugt i64 %629, %630
  br i1 %631, label %632, label %636

632:                                              ; preds = %628
  %633 = load i64, ptr %56, align 8, !tbaa !19
  %634 = load i64, ptr %57, align 8, !tbaa !19
  %635 = sub i64 %633, %634
  br label %640

636:                                              ; preds = %628
  %637 = load i64, ptr %57, align 8, !tbaa !19
  %638 = load i64, ptr %56, align 8, !tbaa !19
  %639 = sub i64 %637, %638
  br label %640

640:                                              ; preds = %636, %632
  %641 = phi i64 [ %635, %632 ], [ %639, %636 ]
  store i64 %641, ptr %60, align 8, !tbaa !19
  %642 = load i64, ptr %60, align 8, !tbaa !19
  %643 = call noundef i64 @_ZNSt14numeric_limitsImE7epsilonEv() #6
  %644 = icmp ugt i64 %642, %643
  br i1 %644, label %645, label %650

645:                                              ; preds = %640
  %646 = load i64, ptr %56, align 8, !tbaa !19
  %647 = uitofp i64 %646 to double
  %648 = load i64, ptr %57, align 8, !tbaa !19
  %649 = uitofp i64 %648 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.3, ptr noundef @.str.2, i32 noundef 138, double noundef %647, double noundef %649)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %650

650:                                              ; preds = %645, %640
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  br label %668

651:                                              ; preds = %625, %620
  %652 = load i64, ptr %56, align 8, !tbaa !19
  %653 = load i64, ptr %57, align 8, !tbaa !19
  %654 = icmp ne i64 %652, %653
  br i1 %654, label %655, label %667

655:                                              ; preds = %651
  %656 = load i64, ptr %56, align 8, !tbaa !19
  %657 = trunc i64 %656 to i32
  %658 = load i64, ptr %57, align 8, !tbaa !19
  %659 = trunc i64 %658 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 138, i32 noundef %657, i32 noundef %659)
  %660 = load i8, ptr %58, align 1, !tbaa !11, !range !13, !noundef !14
  %661 = trunc i8 %660 to i1
  br i1 %661, label %665, label %662

662:                                              ; preds = %655
  %663 = load i8, ptr %59, align 1, !tbaa !11, !range !13, !noundef !14
  %664 = trunc i8 %663 to i1
  br i1 %664, label %665, label %666

665:                                              ; preds = %662, %655
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %666

666:                                              ; preds = %665, %662
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %667

667:                                              ; preds = %666, %651
  br label %668

668:                                              ; preds = %667, %650
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  br label %669

669:                                              ; preds = %668
  br label %670

670:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  store i64 0, ptr %61, align 8, !tbaa !19
  br label %671

671:                                              ; preds = %743, %670
  %672 = load i64, ptr %61, align 8, !tbaa !19
  %673 = getelementptr inbounds %struct.WindowState, ptr %53, i32 0, i32 0
  %674 = load i64, ptr %673, align 8, !tbaa !15
  %675 = icmp ult i64 %672, %674
  br i1 %675, label %677, label %676

676:                                              ; preds = %671
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  br label %746

677:                                              ; preds = %671
  br label %678

678:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 2, ptr %62) #6
  %679 = getelementptr inbounds %struct.WindowState, ptr %53, i32 0, i32 5
  %680 = load ptr, ptr %679, align 8, !tbaa !28
  %681 = load i64, ptr %61, align 8, !tbaa !19
  %682 = getelementptr inbounds i16, ptr %680, i64 %681
  %683 = load i16, ptr %682, align 2, !tbaa !21
  store i16 %683, ptr %62, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 2, ptr %63) #6
  %684 = load i64, ptr %61, align 8, !tbaa !19
  %685 = getelementptr inbounds [25 x i16], ptr %55, i64 0, i64 %684
  %686 = load i16, ptr %685, align 2, !tbaa !21
  store i16 %686, ptr %63, align 2, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #6
  store i8 0, ptr %64, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #6
  store i8 0, ptr %65, align 1, !tbaa !11
  %687 = load i8, ptr %64, align 1, !tbaa !11, !range !13, !noundef !14
  %688 = trunc i8 %687 to i1
  br i1 %688, label %689, label %721

689:                                              ; preds = %678
  %690 = load i8, ptr %65, align 1, !tbaa !11, !range !13, !noundef !14
  %691 = trunc i8 %690 to i1
  br i1 %691, label %692, label %721

692:                                              ; preds = %689
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %693 = load i16, ptr %62, align 2, !tbaa !21
  %694 = sext i16 %693 to i32
  %695 = load i16, ptr %63, align 2, !tbaa !21
  %696 = sext i16 %695 to i32
  %697 = icmp sgt i32 %694, %696
  br i1 %697, label %698, label %704

698:                                              ; preds = %692
  %699 = load i16, ptr %62, align 2, !tbaa !21
  %700 = sext i16 %699 to i32
  %701 = load i16, ptr %63, align 2, !tbaa !21
  %702 = sext i16 %701 to i32
  %703 = sub nsw i32 %700, %702
  br label %710

704:                                              ; preds = %692
  %705 = load i16, ptr %63, align 2, !tbaa !21
  %706 = sext i16 %705 to i32
  %707 = load i16, ptr %62, align 2, !tbaa !21
  %708 = sext i16 %707 to i32
  %709 = sub nsw i32 %706, %708
  br label %710

710:                                              ; preds = %704, %698
  %711 = phi i32 [ %703, %698 ], [ %709, %704 ]
  store i32 %711, ptr %66, align 4, !tbaa !5
  %712 = load i32, ptr %66, align 4, !tbaa !5
  %713 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %714 = icmp sgt i32 %712, %713
  br i1 %714, label %715, label %720

715:                                              ; preds = %710
  %716 = load i16, ptr %62, align 2, !tbaa !21
  %717 = sitofp i16 %716 to double
  %718 = load i16, ptr %63, align 2, !tbaa !21
  %719 = sitofp i16 %718 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 140, double noundef %717, double noundef %719)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %720

720:                                              ; preds = %715, %710
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %740

721:                                              ; preds = %689, %678
  %722 = load i16, ptr %62, align 2, !tbaa !21
  %723 = sext i16 %722 to i32
  %724 = load i16, ptr %63, align 2, !tbaa !21
  %725 = sext i16 %724 to i32
  %726 = icmp ne i32 %723, %725
  br i1 %726, label %727, label %739

727:                                              ; preds = %721
  %728 = load i16, ptr %62, align 2, !tbaa !21
  %729 = sext i16 %728 to i32
  %730 = load i16, ptr %63, align 2, !tbaa !21
  %731 = sext i16 %730 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 140, i32 noundef %729, i32 noundef %731)
  %732 = load i8, ptr %64, align 1, !tbaa !11, !range !13, !noundef !14
  %733 = trunc i8 %732 to i1
  br i1 %733, label %737, label %734

734:                                              ; preds = %727
  %735 = load i8, ptr %65, align 1, !tbaa !11, !range !13, !noundef !14
  %736 = trunc i8 %735 to i1
  br i1 %736, label %737, label %738

737:                                              ; preds = %734, %727
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %738

738:                                              ; preds = %737, %734
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %739

739:                                              ; preds = %738, %721
  br label %740

740:                                              ; preds = %739, %720
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr %62) #6
  br label %741

741:                                              ; preds = %740
  br label %742

742:                                              ; preds = %741
  br label %743

743:                                              ; preds = %742
  %744 = load i64, ptr %61, align 8, !tbaa !19
  %745 = add i64 %744, 1
  store i64 %745, ptr %61, align 8, !tbaa !19
  br label %671, !llvm.loop !33

746:                                              ; preds = %676
  call void @WindowFreeStateContents(ptr noundef %53)
  call void @llvm.lifetime.end.p0(i64 50, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  br label %747

747:                                              ; preds = %746
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %748 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %749 = trunc i8 %748 to i1
  %750 = zext i1 %749 to i64
  %751 = select i1 %749, i32 0, i32 1
  %752 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %753 = add nsw i32 %752, %751
  store i32 %753, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %754 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %755 = trunc i8 %754 to i1
  %756 = zext i1 %755 to i64
  %757 = select i1 %755, i32 1, i32 0
  %758 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %759 = add nsw i32 %758, %757
  store i32 %759, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %593, !llvm.loop !34

760:                                              ; preds = %593
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.23)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %761

761:                                              ; preds = %898, %760
  %762 = load i8, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11, !range !13, !noundef !14
  %763 = trunc i8 %762 to i1
  %764 = xor i1 %763, true
  br i1 %764, label %765, label %911

765:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67)
  call void @llvm.lifetime.start.p0(i64 56, ptr %68) #6
  br label %766

766:                                              ; preds = %765
  %767 = getelementptr inbounds %"class.(anonymous namespace)::WindowTestConfig", ptr %67, i32 0, i32 0
  %768 = call i32 @WindowPopulateState(ptr noundef %767, ptr noundef %68, i32 noundef 1000)
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %771, label %770

770:                                              ; preds = %766
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 150)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %771

771:                                              ; preds = %770, %766
  br label %772

772:                                              ; preds = %771
  br label %773

773:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #6
  br label %774

774:                                              ; preds = %773
  %775 = call i32 @WindowProcessSamples(ptr noundef %68, ptr noundef @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef %69)
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %778, label %777

777:                                              ; preds = %774
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 155)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %778

778:                                              ; preds = %777, %774
  br label %779

779:                                              ; preds = %778
  br label %780

780:                                              ; preds = %779
  br label %781

781:                                              ; preds = %780
  %782 = call i32 @WindowProcessSamples(ptr noundef %68, ptr noundef getelementptr inbounds (i16, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 25), i64 noundef 11, ptr noundef %69)
  %783 = icmp ne i32 %782, 0
  br i1 %783, label %785, label %784

784:                                              ; preds = %781
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 159)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %785

785:                                              ; preds = %784, %781
  br label %786

786:                                              ; preds = %785
  br label %787

787:                                              ; preds = %786
  br label %788

788:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #6
  store i8 0, ptr %70, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  %789 = call i32 @WindowProcessSamples(ptr noundef %68, ptr noundef getelementptr inbounds (i16, ptr getelementptr inbounds (i16, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 25), i64 10), i64 noundef 1, ptr noundef %69)
  store i32 %789, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #6
  store i8 0, ptr %72, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #6
  store i8 0, ptr %73, align 1, !tbaa !11
  %790 = load i8, ptr %72, align 1, !tbaa !11, !range !13, !noundef !14
  %791 = trunc i8 %790 to i1
  br i1 %791, label %792, label %825

792:                                              ; preds = %788
  %793 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %794 = trunc i8 %793 to i1
  br i1 %794, label %795, label %825

795:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  %796 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %797 = trunc i8 %796 to i1
  %798 = zext i1 %797 to i32
  %799 = load i32, ptr %71, align 4, !tbaa !5
  %800 = icmp sgt i32 %798, %799
  br i1 %800, label %801, label %807

801:                                              ; preds = %795
  %802 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %803 = trunc i8 %802 to i1
  %804 = zext i1 %803 to i32
  %805 = load i32, ptr %71, align 4, !tbaa !5
  %806 = sub nsw i32 %804, %805
  br label %813

807:                                              ; preds = %795
  %808 = load i32, ptr %71, align 4, !tbaa !5
  %809 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %810 = trunc i8 %809 to i1
  %811 = zext i1 %810 to i32
  %812 = sub nsw i32 %808, %811
  br label %813

813:                                              ; preds = %807, %801
  %814 = phi i32 [ %806, %801 ], [ %812, %807 ]
  store i32 %814, ptr %74, align 4, !tbaa !5
  %815 = load i32, ptr %74, align 4, !tbaa !5
  %816 = call noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #6
  %817 = icmp sgt i32 %815, %816
  br i1 %817, label %818, label %824

818:                                              ; preds = %813
  %819 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %820 = trunc i8 %819 to i1
  %821 = uitofp i1 %820 to double
  %822 = load i32, ptr %71, align 4, !tbaa !5
  %823 = sitofp i32 %822 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 165, double noundef %821, double noundef %823)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %824

824:                                              ; preds = %818, %813
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  br label %844

825:                                              ; preds = %792, %788
  %826 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %827 = trunc i8 %826 to i1
  %828 = zext i1 %827 to i32
  %829 = load i32, ptr %71, align 4, !tbaa !5
  %830 = icmp ne i32 %828, %829
  br i1 %830, label %831, label %843

831:                                              ; preds = %825
  %832 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %833 = trunc i8 %832 to i1
  %834 = zext i1 %833 to i32
  %835 = load i32, ptr %71, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 165, i32 noundef %834, i32 noundef %835)
  %836 = load i8, ptr %72, align 1, !tbaa !11, !range !13, !noundef !14
  %837 = trunc i8 %836 to i1
  br i1 %837, label %841, label %838

838:                                              ; preds = %831
  %839 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %840 = trunc i8 %839 to i1
  br i1 %840, label %841, label %842

841:                                              ; preds = %838, %831
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %842

842:                                              ; preds = %841, %838
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %843

843:                                              ; preds = %842, %825
  br label %844

844:                                              ; preds = %843, %824
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #6
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845
  br label %847

847:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %848 = getelementptr inbounds %struct.WindowState, ptr %68, i32 0, i32 4
  %849 = load i64, ptr %848, align 8, !tbaa !35
  store i64 %849, ptr %75, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  store i64 16, ptr %76, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #6
  store i8 0, ptr %77, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #6
  store i8 0, ptr %78, align 1, !tbaa !11
  %850 = load i8, ptr %77, align 1, !tbaa !11, !range !13, !noundef !14
  %851 = trunc i8 %850 to i1
  br i1 %851, label %852, label %878

852:                                              ; preds = %847
  %853 = load i8, ptr %78, align 1, !tbaa !11, !range !13, !noundef !14
  %854 = trunc i8 %853 to i1
  br i1 %854, label %855, label %878

855:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #6
  %856 = load i64, ptr %75, align 8, !tbaa !19
  %857 = load i64, ptr %76, align 8, !tbaa !19
  %858 = icmp ugt i64 %856, %857
  br i1 %858, label %859, label %863

859:                                              ; preds = %855
  %860 = load i64, ptr %75, align 8, !tbaa !19
  %861 = load i64, ptr %76, align 8, !tbaa !19
  %862 = sub i64 %860, %861
  br label %867

863:                                              ; preds = %855
  %864 = load i64, ptr %76, align 8, !tbaa !19
  %865 = load i64, ptr %75, align 8, !tbaa !19
  %866 = sub i64 %864, %865
  br label %867

867:                                              ; preds = %863, %859
  %868 = phi i64 [ %862, %859 ], [ %866, %863 ]
  store i64 %868, ptr %79, align 8, !tbaa !19
  %869 = load i64, ptr %79, align 8, !tbaa !19
  %870 = call noundef i64 @_ZNSt14numeric_limitsImE7epsilonEv() #6
  %871 = icmp ugt i64 %869, %870
  br i1 %871, label %872, label %877

872:                                              ; preds = %867
  %873 = load i64, ptr %75, align 8, !tbaa !19
  %874 = uitofp i64 %873 to double
  %875 = load i64, ptr %76, align 8, !tbaa !19
  %876 = uitofp i64 %875 to double
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 169, double noundef %874, double noundef %876)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %877

877:                                              ; preds = %872, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #6
  br label %895

878:                                              ; preds = %852, %847
  %879 = load i64, ptr %75, align 8, !tbaa !19
  %880 = load i64, ptr %76, align 8, !tbaa !19
  %881 = icmp ne i64 %879, %880
  br i1 %881, label %882, label %894

882:                                              ; preds = %878
  %883 = load i64, ptr %75, align 8, !tbaa !19
  %884 = trunc i64 %883 to i32
  %885 = load i64, ptr %76, align 8, !tbaa !19
  %886 = trunc i64 %885 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 169, i32 noundef %884, i32 noundef %886)
  %887 = load i8, ptr %77, align 1, !tbaa !11, !range !13, !noundef !14
  %888 = trunc i8 %887 to i1
  br i1 %888, label %892, label %889

889:                                              ; preds = %882
  %890 = load i8, ptr %78, align 1, !tbaa !11, !range !13, !noundef !14
  %891 = trunc i8 %890 to i1
  br i1 %891, label %892, label %893

892:                                              ; preds = %889, %882
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.5)
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.6)
  br label %893

893:                                              ; preds = %892, %889
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11
  br label %894

894:                                              ; preds = %893, %878
  br label %895

895:                                              ; preds = %894, %877
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  br label %896

896:                                              ; preds = %895
  br label %897

897:                                              ; preds = %896
  call void @WindowFreeStateContents(ptr noundef %68)
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  br label %898

898:                                              ; preds = %897
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !11
  %899 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %900 = trunc i8 %899 to i1
  %901 = zext i1 %900 to i64
  %902 = select i1 %900, i32 0, i32 1
  %903 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %904 = add nsw i32 %903, %902
  store i32 %904, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %905 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !11, !range !13, !noundef !14
  %906 = trunc i8 %905 to i1
  %907 = zext i1 %906 to i64
  %908 = select i1 %906, i32 1, i32 0
  %909 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %910 = add nsw i32 %909, %908
  store i32 %910, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  br label %761, !llvm.loop !36

911:                                              ; preds = %761
  %912 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %913 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %914 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %915 = add nsw i32 %913, %914
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.28, i32 noundef %912, i32 noundef %915)
  %916 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %917 = icmp eq i32 %916, 0
  br i1 %917, label %918, label %919

918:                                              ; preds = %911
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.29)
  store i32 0, ptr %3, align 4
  br label %920

919:                                              ; preds = %911
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef @.str.30)
  store i32 1, ptr %3, align 4
  br label %920

920:                                              ; preds = %919, %918
  %921 = load i32, ptr %3, align 4
  ret i32 %921
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite14InitializeTestEv() #1

declare void @_Z11MicroPrintfPKcz(ptr noundef, ...) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

declare i32 @WindowPopulateState(ptr noundef, ptr noundef, i32 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 nounwind uwtable
declare dso_local noundef i64 @_ZNSt14numeric_limitsImE7epsilonEv() #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIiE7epsilonEv() #4 align 2

declare void @WindowFreeStateContents(ptr noundef) #2

declare i32 @WindowProcessSamples(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #2

attributes #0 = { mustprogress norecurse 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 = { 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !17, i64 0}
!16 = !{!"_ZTS11WindowState", !17, i64 0, !10, i64 8, !17, i64 16, !10, i64 24, !17, i64 32, !10, i64 40, !18, i64 48}
!17 = !{!"long", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!17, !17, i64 0}
!20 = !{!16, !10, i64 8}
!21 = !{!18, !18, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = !{!16, !10, i64 24}
!26 = distinct !{!26, !23}
!27 = distinct !{!27, !23}
!28 = !{!16, !10, i64 40}
!29 = distinct !{!29, !23}
!30 = distinct !{!30, !23}
!31 = !{!16, !18, i64 48}
!32 = distinct !{!32, !23}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !23}
!35 = !{!16, !17, i64 32}
!36 = distinct !{!36, !23}


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

%"class.(anonymous namespace)::WindowTestConfig" = type { %struct.WindowConfig }
%struct.WindowConfig = type { i64, i64 }
%struct.WindowState = type { i64, ptr, i64, ptr, i64, ptr, i16 }

@_ZN10micro_test12tests_passedE = external dso_local local_unnamed_addr global i32, align 4
@_ZN10micro_test12tests_failedE = external dso_local local_unnamed_addr global i32, align 4
@_ZN10micro_test16is_test_completeE = external dso_local local_unnamed_addr global i8, align 1
@_ZN10micro_test13did_test_failE = external dso_local local_unnamed_addr global i8, align 1
@.str = external hidden unnamed_addr constant [38 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [119 x i8], align 1
@__const.main.expected = external hidden unnamed_addr constant [25 x i16], align 16
@.str.4 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZN12_GLOBAL__N_114kFakeAudioDataE = external hidden constant [36 x i16], align 16
@.str.10 = external hidden unnamed_addr constant [133 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [38 x i8], align 1
@__const.main.expected.14 = external hidden unnamed_addr constant [25 x i16], align 16
@.str.16 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [167 x i8], align 1
@__const.main.expected.22 = external hidden unnamed_addr constant [25 x i16], align 16
@.str.23 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [217 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %4 = alloca %struct.WindowState, align 8
  %5 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %6 = alloca %struct.WindowState, align 8
  %7 = alloca i64, align 8
  %8 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %9 = alloca %struct.WindowState, align 8
  %10 = alloca i64, align 8
  %11 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %12 = alloca %struct.WindowState, align 8
  %13 = alloca i64, align 8
  %14 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %15 = alloca %struct.WindowState, align 8
  %16 = alloca i64, align 8
  %17 = alloca %"class.(anonymous namespace)::WindowTestConfig", align 8
  %18 = alloca %struct.WindowState, align 8
  %19 = alloca i64, align 8
  store i32 0, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  store i32 0, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  tail call void @_ZN6tflite14InitializeTestEv()
  tail call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %20 = getelementptr inbounds i8, ptr %4, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %4) #5
  %21 = call i32 @WindowPopulateState(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 1000)
  %.not254 = icmp eq i32 %21, 0
  br i1 %.not254, label %22, label %23

22:                                               ; preds = %2
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 49)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %23

23:                                               ; preds = %22, %2
  %24 = load i64, ptr %4, align 8, !tbaa !11
  %.not255 = icmp eq i64 %24, 25
  br i1 %.not255, label %.lr.ph.preheader, label %25

25:                                               ; preds = %23
  %26 = trunc i64 %24 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 55, i32 noundef %26, i32 noundef 25)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre = load i64, ptr %4, align 8, !tbaa !11
  %.not286 = icmp eq i64 %.pre, 0
  br i1 %.not286, label %.loopexit320, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %23, %25
  %.ph323 = phi i64 [ 25, %23 ], [ %.pre, %25 ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %36
  %27 = phi i64 [ %37, %36 ], [ %.ph323, %.lr.ph.preheader ]
  %.0187258 = phi i64 [ %38, %36 ], [ 0, %.lr.ph.preheader ]
  %28 = getelementptr inbounds [25 x i16], ptr @__const.main.expected, i64 0, i64 %.0187258
  %29 = load i16, ptr %28, align 2, !tbaa !16
  %30 = load ptr, ptr %20, align 8, !tbaa !17
  %31 = getelementptr inbounds i16, ptr %30, i64 %.0187258
  %32 = load i16, ptr %31, align 2, !tbaa !16
  %.not257 = icmp eq i16 %32, %29
  br i1 %.not257, label %36, label %33

33:                                               ; preds = %.lr.ph
  %34 = sext i16 %29 to i32
  %35 = sext i16 %32 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.2, i32 noundef 57, i32 noundef %35, i32 noundef %34)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre290 = load i64, ptr %4, align 8, !tbaa !11
  br label %36

36:                                               ; preds = %.lr.ph, %33
  %37 = phi i64 [ %27, %.lr.ph ], [ %.pre290, %33 ]
  %38 = add nuw i64 %.0187258, 1
  %39 = icmp ult i64 %38, %37
  br i1 %39, label %.lr.ph, label %.loopexit320, !llvm.loop !18

.loopexit320:                                     ; preds = %36, %25
  call void @WindowFreeStateContents(ptr noundef nonnull %4)
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %40 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %41 = xor i8 %40, 1
  %not.256 = zext nneg i8 %41 to i32
  %42 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %43 = add nsw i32 %42, %not.256
  store i32 %43, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %44 = zext nneg i8 %40 to i32
  %45 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %46 = add nsw i32 %45, %44
  store i32 %46, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.9)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %47 = getelementptr inbounds i8, ptr %6, i64 24
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #5
  %48 = call i32 @WindowPopulateState(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef 1000)
  %.not250 = icmp eq i32 %48, 0
  br i1 %.not250, label %49, label %50

49:                                               ; preds = %.loopexit320
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 67)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %50

50:                                               ; preds = %49, %.loopexit320
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %51 = call i32 @WindowProcessSamples(ptr noundef nonnull %6, ptr noundef nonnull @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef nonnull %7)
  %.not251 = icmp eq i32 %51, 0
  br i1 %.not251, label %52, label %53

52:                                               ; preds = %50
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 72)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %53

53:                                               ; preds = %52, %50
  %54 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 20), align 4, !tbaa !16
  %55 = load ptr, ptr %47, align 8, !tbaa !22
  %56 = load i16, ptr %55, align 2, !tbaa !16
  %.not253 = icmp eq i16 %56, %54
  br i1 %.not253, label %60, label %57

57:                                               ; preds = %53
  %58 = sext i16 %54 to i32
  %59 = sext i16 %56 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %59, i32 noundef %58)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre291 = load ptr, ptr %47, align 8, !tbaa !22
  br label %60

60:                                               ; preds = %53, %57
  %61 = phi ptr [ %55, %53 ], [ %.pre291, %57 ]
  %62 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 22), align 2, !tbaa !16
  %63 = getelementptr i8, ptr %61, i64 2
  %64 = load i16, ptr %63, align 2, !tbaa !16
  %.not253.1 = icmp eq i16 %64, %62
  br i1 %.not253.1, label %68, label %65

65:                                               ; preds = %60
  %66 = sext i16 %62 to i32
  %67 = sext i16 %64 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %67, i32 noundef %66)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre292 = load ptr, ptr %47, align 8, !tbaa !22
  br label %68

68:                                               ; preds = %65, %60
  %69 = phi ptr [ %.pre292, %65 ], [ %61, %60 ]
  %70 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 24), align 8, !tbaa !16
  %71 = getelementptr i8, ptr %69, i64 4
  %72 = load i16, ptr %71, align 2, !tbaa !16
  %.not253.2 = icmp eq i16 %72, %70
  br i1 %.not253.2, label %76, label %73

73:                                               ; preds = %68
  %74 = sext i16 %70 to i32
  %75 = sext i16 %72 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %75, i32 noundef %74)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre293 = load ptr, ptr %47, align 8, !tbaa !22
  br label %76

76:                                               ; preds = %73, %68
  %77 = phi ptr [ %.pre293, %73 ], [ %69, %68 ]
  %78 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 26), align 2, !tbaa !16
  %79 = getelementptr i8, ptr %77, i64 6
  %80 = load i16, ptr %79, align 2, !tbaa !16
  %.not253.3 = icmp eq i16 %80, %78
  br i1 %.not253.3, label %84, label %81

81:                                               ; preds = %76
  %82 = sext i16 %78 to i32
  %83 = sext i16 %80 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %83, i32 noundef %82)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre294 = load ptr, ptr %47, align 8, !tbaa !22
  br label %84

84:                                               ; preds = %81, %76
  %85 = phi ptr [ %.pre294, %81 ], [ %77, %76 ]
  %86 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 28), align 4, !tbaa !16
  %87 = getelementptr i8, ptr %85, i64 8
  %88 = load i16, ptr %87, align 2, !tbaa !16
  %.not253.4 = icmp eq i16 %88, %86
  br i1 %.not253.4, label %92, label %89

89:                                               ; preds = %84
  %90 = sext i16 %86 to i32
  %91 = sext i16 %88 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %91, i32 noundef %90)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre295 = load ptr, ptr %47, align 8, !tbaa !22
  br label %92

92:                                               ; preds = %89, %84
  %93 = phi ptr [ %.pre295, %89 ], [ %85, %84 ]
  %94 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 30), align 2, !tbaa !16
  %95 = getelementptr i8, ptr %93, i64 10
  %96 = load i16, ptr %95, align 2, !tbaa !16
  %.not253.5 = icmp eq i16 %96, %94
  br i1 %.not253.5, label %100, label %97

97:                                               ; preds = %92
  %98 = sext i16 %94 to i32
  %99 = sext i16 %96 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %99, i32 noundef %98)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre296 = load ptr, ptr %47, align 8, !tbaa !22
  br label %100

100:                                              ; preds = %97, %92
  %101 = phi ptr [ %.pre296, %97 ], [ %93, %92 ]
  %102 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 32), align 16, !tbaa !16
  %103 = getelementptr i8, ptr %101, i64 12
  %104 = load i16, ptr %103, align 2, !tbaa !16
  %.not253.6 = icmp eq i16 %104, %102
  br i1 %.not253.6, label %108, label %105

105:                                              ; preds = %100
  %106 = sext i16 %102 to i32
  %107 = sext i16 %104 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %107, i32 noundef %106)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre297 = load ptr, ptr %47, align 8, !tbaa !22
  br label %108

108:                                              ; preds = %105, %100
  %109 = phi ptr [ %.pre297, %105 ], [ %101, %100 ]
  %110 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 34), align 2, !tbaa !16
  %111 = getelementptr i8, ptr %109, i64 14
  %112 = load i16, ptr %111, align 2, !tbaa !16
  %.not253.7 = icmp eq i16 %112, %110
  br i1 %.not253.7, label %116, label %113

113:                                              ; preds = %108
  %114 = sext i16 %110 to i32
  %115 = sext i16 %112 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %115, i32 noundef %114)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre298 = load ptr, ptr %47, align 8, !tbaa !22
  br label %116

116:                                              ; preds = %113, %108
  %117 = phi ptr [ %.pre298, %113 ], [ %109, %108 ]
  %118 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 36), align 4, !tbaa !16
  %119 = getelementptr i8, ptr %117, i64 16
  %120 = load i16, ptr %119, align 2, !tbaa !16
  %.not253.8 = icmp eq i16 %120, %118
  br i1 %.not253.8, label %124, label %121

121:                                              ; preds = %116
  %122 = sext i16 %118 to i32
  %123 = sext i16 %120 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %123, i32 noundef %122)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre299 = load ptr, ptr %47, align 8, !tbaa !22
  br label %124

124:                                              ; preds = %121, %116
  %125 = phi ptr [ %.pre299, %121 ], [ %117, %116 ]
  %126 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 38), align 2, !tbaa !16
  %127 = getelementptr i8, ptr %125, i64 18
  %128 = load i16, ptr %127, align 2, !tbaa !16
  %.not253.9 = icmp eq i16 %128, %126
  br i1 %.not253.9, label %132, label %129

129:                                              ; preds = %124
  %130 = sext i16 %126 to i32
  %131 = sext i16 %128 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %131, i32 noundef %130)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre300 = load ptr, ptr %47, align 8, !tbaa !22
  br label %132

132:                                              ; preds = %129, %124
  %133 = phi ptr [ %.pre300, %129 ], [ %125, %124 ]
  %134 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 40), align 8, !tbaa !16
  %135 = getelementptr i8, ptr %133, i64 20
  %136 = load i16, ptr %135, align 2, !tbaa !16
  %.not253.10 = icmp eq i16 %136, %134
  br i1 %.not253.10, label %140, label %137

137:                                              ; preds = %132
  %138 = sext i16 %134 to i32
  %139 = sext i16 %136 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %139, i32 noundef %138)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre301 = load ptr, ptr %47, align 8, !tbaa !22
  br label %140

140:                                              ; preds = %137, %132
  %141 = phi ptr [ %.pre301, %137 ], [ %133, %132 ]
  %142 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 42), align 2, !tbaa !16
  %143 = getelementptr i8, ptr %141, i64 22
  %144 = load i16, ptr %143, align 2, !tbaa !16
  %.not253.11 = icmp eq i16 %144, %142
  br i1 %.not253.11, label %148, label %145

145:                                              ; preds = %140
  %146 = sext i16 %142 to i32
  %147 = sext i16 %144 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %147, i32 noundef %146)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre302 = load ptr, ptr %47, align 8, !tbaa !22
  br label %148

148:                                              ; preds = %145, %140
  %149 = phi ptr [ %.pre302, %145 ], [ %141, %140 ]
  %150 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 44), align 4, !tbaa !16
  %151 = getelementptr i8, ptr %149, i64 24
  %152 = load i16, ptr %151, align 2, !tbaa !16
  %.not253.12 = icmp eq i16 %152, %150
  br i1 %.not253.12, label %156, label %153

153:                                              ; preds = %148
  %154 = sext i16 %150 to i32
  %155 = sext i16 %152 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %155, i32 noundef %154)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre303 = load ptr, ptr %47, align 8, !tbaa !22
  br label %156

156:                                              ; preds = %153, %148
  %157 = phi ptr [ %.pre303, %153 ], [ %149, %148 ]
  %158 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 46), align 2, !tbaa !16
  %159 = getelementptr i8, ptr %157, i64 26
  %160 = load i16, ptr %159, align 2, !tbaa !16
  %.not253.13 = icmp eq i16 %160, %158
  br i1 %.not253.13, label %164, label %161

161:                                              ; preds = %156
  %162 = sext i16 %158 to i32
  %163 = sext i16 %160 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %163, i32 noundef %162)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre304 = load ptr, ptr %47, align 8, !tbaa !22
  br label %164

164:                                              ; preds = %161, %156
  %165 = phi ptr [ %.pre304, %161 ], [ %157, %156 ]
  %166 = load i16, ptr getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 48), align 16, !tbaa !16
  %167 = getelementptr i8, ptr %165, i64 28
  %168 = load i16, ptr %167, align 2, !tbaa !16
  %.not253.14 = icmp eq i16 %168, %166
  br i1 %.not253.14, label %172, label %169

169:                                              ; preds = %164
  %170 = sext i16 %166 to i32
  %171 = sext i16 %168 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2, i32 noundef 76, i32 noundef %171, i32 noundef %170)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %172

172:                                              ; preds = %169, %164
  call void @WindowFreeStateContents(ptr noundef nonnull %6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %173 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %174 = xor i8 %173, 1
  %not.252 = zext nneg i8 %174 to i32
  %175 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %176 = add nsw i32 %175, %not.252
  store i32 %176, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %177 = zext nneg i8 %173 to i32
  %178 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %179 = add nsw i32 %178, %177
  store i32 %179, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.13)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %180 = getelementptr inbounds i8, ptr %9, i64 40
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %9) #5
  %181 = call i32 @WindowPopulateState(ptr noundef nonnull %8, ptr noundef nonnull %9, i32 noundef 1000)
  %.not245 = icmp eq i32 %181, 0
  br i1 %.not245, label %182, label %183

182:                                              ; preds = %172
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 86)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %183

183:                                              ; preds = %182, %172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  %184 = call i32 @WindowProcessSamples(ptr noundef nonnull %9, ptr noundef nonnull @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef nonnull %10)
  %.not246 = icmp eq i32 %184, 0
  br i1 %.not246, label %185, label %186

185:                                              ; preds = %183
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 91)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %186

186:                                              ; preds = %185, %183
  %187 = load i64, ptr %9, align 8, !tbaa !11
  %.not247 = icmp eq i64 %187, 25
  br i1 %.not247, label %.lr.ph268.preheader, label %188

188:                                              ; preds = %186
  %189 = trunc i64 %187 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 96, i32 noundef %189, i32 noundef 25)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre306 = load i64, ptr %9, align 8, !tbaa !11
  %.not287 = icmp eq i64 %.pre306, 0
  br i1 %.not287, label %.loopexit319, label %.lr.ph268.preheader

.lr.ph268.preheader:                              ; preds = %186, %188
  %.ph322 = phi i64 [ 25, %186 ], [ %.pre306, %188 ]
  br label %.lr.ph268

.lr.ph268:                                        ; preds = %.lr.ph268.preheader, %199
  %190 = phi i64 [ %200, %199 ], [ %.ph322, %.lr.ph268.preheader ]
  %.0189266 = phi i64 [ %201, %199 ], [ 0, %.lr.ph268.preheader ]
  %191 = getelementptr inbounds [25 x i16], ptr @__const.main.expected.14, i64 0, i64 %.0189266
  %192 = load i16, ptr %191, align 2, !tbaa !16
  %193 = load ptr, ptr %180, align 8, !tbaa !23
  %194 = getelementptr inbounds i16, ptr %193, i64 %.0189266
  %195 = load i16, ptr %194, align 2, !tbaa !16
  %.not249 = icmp eq i16 %195, %192
  br i1 %.not249, label %199, label %196

196:                                              ; preds = %.lr.ph268
  %197 = sext i16 %192 to i32
  %198 = sext i16 %195 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 98, i32 noundef %198, i32 noundef %197)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre307 = load i64, ptr %9, align 8, !tbaa !11
  br label %199

199:                                              ; preds = %.lr.ph268, %196
  %200 = phi i64 [ %190, %.lr.ph268 ], [ %.pre307, %196 ]
  %201 = add nuw i64 %.0189266, 1
  %202 = icmp ult i64 %201, %200
  br i1 %202, label %.lr.ph268, label %.loopexit319, !llvm.loop !24

.loopexit319:                                     ; preds = %199, %188
  call void @WindowFreeStateContents(ptr noundef nonnull %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %203 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %204 = xor i8 %203, 1
  %not.248 = zext nneg i8 %204 to i32
  %205 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %206 = add nsw i32 %205, %not.248
  store i32 %206, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %207 = zext nneg i8 %203 to i32
  %208 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %209 = add nsw i32 %208, %207
  store i32 %209, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.17)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %210 = getelementptr inbounds i8, ptr %12, i64 48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %12) #5
  %211 = call i32 @WindowPopulateState(ptr noundef nonnull %11, ptr noundef nonnull %12, i32 noundef 1000)
  %.not241 = icmp eq i32 %211, 0
  br i1 %.not241, label %212, label %213

212:                                              ; preds = %.loopexit319
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 108)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %213

213:                                              ; preds = %212, %.loopexit319
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  %214 = call i32 @WindowProcessSamples(ptr noundef nonnull %12, ptr noundef nonnull @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef nonnull %13)
  %.not242 = icmp eq i32 %214, 0
  br i1 %.not242, label %215, label %216

215:                                              ; preds = %213
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 113)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %216

216:                                              ; preds = %215, %213
  %217 = load i16, ptr %210, align 8, !tbaa !25
  %.not243 = icmp eq i16 %217, 32256
  br i1 %.not243, label %220, label %218

218:                                              ; preds = %216
  %219 = sext i16 %217 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 115, i32 noundef %219, i32 noundef 32256)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %220

220:                                              ; preds = %216, %218
  call void @WindowFreeStateContents(ptr noundef nonnull %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %221 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %222 = xor i8 %221, 1
  %not.244 = zext nneg i8 %222 to i32
  %223 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %224 = add nsw i32 %223, %not.244
  store i32 %224, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %225 = zext nneg i8 %221 to i32
  %226 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %227 = add nsw i32 %226, %225
  store i32 %227, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.20)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %228 = getelementptr inbounds i8, ptr %15, i64 40
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %15) #5
  %229 = call i32 @WindowPopulateState(ptr noundef nonnull %14, ptr noundef nonnull %15, i32 noundef 1000)
  %.not235 = icmp eq i32 %229, 0
  br i1 %.not235, label %230, label %231

230:                                              ; preds = %220
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 124)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %231

231:                                              ; preds = %230, %220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %232 = call i32 @WindowProcessSamples(ptr noundef nonnull %15, ptr noundef nonnull @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef nonnull %16)
  %.not236 = icmp eq i32 %232, 0
  br i1 %.not236, label %233, label %234

233:                                              ; preds = %231
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 129)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %234

234:                                              ; preds = %231, %233
  %235 = call i32 @WindowProcessSamples(ptr noundef nonnull %15, ptr noundef nonnull getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 50), i64 noundef 11, ptr noundef nonnull %16)
  %.not237 = icmp eq i32 %235, 0
  br i1 %.not237, label %236, label %237

236:                                              ; preds = %234
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 133)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %237

237:                                              ; preds = %236, %234
  %238 = load i64, ptr %15, align 8, !tbaa !11
  %.not238 = icmp eq i64 %238, 25
  br i1 %.not238, label %.lr.ph278.preheader, label %239

239:                                              ; preds = %237
  %240 = trunc i64 %238 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 138, i32 noundef %240, i32 noundef 25)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre309 = load i64, ptr %15, align 8, !tbaa !11
  %.not288 = icmp eq i64 %.pre309, 0
  br i1 %.not288, label %.loopexit, label %.lr.ph278.preheader

.lr.ph278.preheader:                              ; preds = %237, %239
  %.ph = phi i64 [ 25, %237 ], [ %.pre309, %239 ]
  br label %.lr.ph278

.lr.ph278:                                        ; preds = %.lr.ph278.preheader, %250
  %241 = phi i64 [ %251, %250 ], [ %.ph, %.lr.ph278.preheader ]
  %.0190276 = phi i64 [ %252, %250 ], [ 0, %.lr.ph278.preheader ]
  %242 = getelementptr inbounds [25 x i16], ptr @__const.main.expected.22, i64 0, i64 %.0190276
  %243 = load i16, ptr %242, align 2, !tbaa !16
  %244 = load ptr, ptr %228, align 8, !tbaa !23
  %245 = getelementptr inbounds i16, ptr %244, i64 %.0190276
  %246 = load i16, ptr %245, align 2, !tbaa !16
  %.not240 = icmp eq i16 %246, %243
  br i1 %.not240, label %250, label %247

247:                                              ; preds = %.lr.ph278
  %248 = sext i16 %243 to i32
  %249 = sext i16 %246 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 140, i32 noundef %249, i32 noundef %248)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %.pre310 = load i64, ptr %15, align 8, !tbaa !11
  br label %250

250:                                              ; preds = %.lr.ph278, %247
  %251 = phi i64 [ %241, %.lr.ph278 ], [ %.pre310, %247 ]
  %252 = add nuw i64 %.0190276, 1
  %253 = icmp ult i64 %252, %251
  br i1 %253, label %.lr.ph278, label %.loopexit, !llvm.loop !26

.loopexit:                                        ; preds = %250, %239
  call void @WindowFreeStateContents(ptr noundef nonnull %15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %254 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %255 = xor i8 %254, 1
  %not.239 = zext nneg i8 %255 to i32
  %256 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %257 = add nsw i32 %256, %not.239
  store i32 %257, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %258 = zext nneg i8 %254 to i32
  %259 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %260 = add nsw i32 %259, %258
  store i32 %260, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.23)
  store i8 0, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  store i8 0, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  %261 = getelementptr inbounds i8, ptr %18, i64 32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %18) #5
  %262 = call i32 @WindowPopulateState(ptr noundef nonnull %17, ptr noundef nonnull %18, i32 noundef 1000)
  %.not = icmp eq i32 %262, 0
  br i1 %.not, label %263, label %264

263:                                              ; preds = %.loopexit
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 150)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %264

264:                                              ; preds = %263, %.loopexit
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  %265 = call i32 @WindowProcessSamples(ptr noundef nonnull %18, ptr noundef nonnull @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 noundef 36, ptr noundef nonnull %19)
  %.not231 = icmp eq i32 %265, 0
  br i1 %.not231, label %266, label %267

266:                                              ; preds = %264
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 155)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %267

267:                                              ; preds = %264, %266
  %268 = call i32 @WindowProcessSamples(ptr noundef nonnull %18, ptr noundef nonnull getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 50), i64 noundef 11, ptr noundef nonnull %19)
  %.not232 = icmp eq i32 %268, 0
  br i1 %.not232, label %269, label %270

269:                                              ; preds = %267
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 159)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %270

270:                                              ; preds = %267, %269
  %271 = call i32 @WindowProcessSamples(ptr noundef nonnull %18, ptr noundef nonnull getelementptr inbounds (i8, ptr @_ZN12_GLOBAL__N_114kFakeAudioDataE, i64 70), i64 noundef 1, ptr noundef nonnull %19)
  %.not233 = icmp eq i32 %271, 0
  br i1 %.not233, label %273, label %272

272:                                              ; preds = %270
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 165, i32 noundef 0, i32 noundef %271)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %273

273:                                              ; preds = %270, %272
  %274 = load i64, ptr %261, align 8, !tbaa !27
  %.not234 = icmp eq i64 %274, 16
  br i1 %.not234, label %._crit_edge285, label %275

275:                                              ; preds = %273
  %276 = trunc i64 %274 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 169, i32 noundef %276, i32 noundef 16)
  store i8 1, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9
  br label %._crit_edge285

._crit_edge285:                                   ; preds = %273, %275
  call void @WindowFreeStateContents(ptr noundef nonnull %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  store i8 1, ptr @_ZN10micro_test16is_test_completeE, align 1, !tbaa !9
  %277 = load i8, ptr @_ZN10micro_test13did_test_failE, align 1, !tbaa !9, !range !20, !noundef !21
  %278 = xor i8 %277, 1
  %not. = zext nneg i8 %278 to i32
  %279 = load i32, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %280 = add nsw i32 %279, %not.
  store i32 %280, ptr @_ZN10micro_test12tests_passedE, align 4, !tbaa !5
  %281 = zext nneg i8 %277 to i32
  %282 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %283 = add nsw i32 %282, %281
  store i32 %283, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %284 = add nsw i32 %283, %280
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull @.str.28, i32 noundef %280, i32 noundef %284)
  %285 = load i32, ptr @_ZN10micro_test12tests_failedE, align 4, !tbaa !5
  %286 = icmp ne i32 %285, 0
  %.str.29..str.30 = select i1 %286, ptr @.str.30, ptr @.str.29
  %. = zext i1 %286 to i32
  call void (ptr, ...) @_Z11MicroPrintfPKcz(ptr noundef nonnull %.str.29..str.30)
  ret i32 %.
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite14InitializeTestEv() local_unnamed_addr #1

declare void @_Z11MicroPrintfPKcz(ptr noundef, ...) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_116WindowTestConfigC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

declare i32 @WindowPopulateState(ptr noundef, ptr noundef, i32 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) #3

declare void @WindowFreeStateContents(ptr noundef) local_unnamed_addr #2

declare i32 @WindowProcessSamples(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress norecurse 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 = { 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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { nounwind }

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

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


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