; LLVM IR from aap/pdp6 :: emu (apr)

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

%struct.Apr = type { %struct.Device, %struct.IOBus, %struct.Membus, i32, %struct.AprState, %struct.AprState, i32, i64, i64, i32, i32, i32, i8, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, i32, i8, [20 x %struct.TPulse], ptr, ptr }
%struct.Device = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.IOBus = type { i64, i64, i64, i64, i64, i64, i32, [128 x %struct.Busdev] }
%struct.Busdev = type { ptr, ptr, i8 }
%struct.Membus = type { i64, i64, i64, i64, i64, i64, ptr, [16 x ptr] }
%struct.AprState = type { i64, i64, i64 }
%struct.TPulse = type { ptr, ptr, i32 }

@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@mnemonics = external global [448 x ptr], align 16
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @decodeir(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @testinst(ptr noundef %0) #1 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  store i32 0, ptr %3, align 4, !tbaa !9
  br label %4

4:                                                ; preds = %429, %1
  %5 = load i32, ptr %3, align 4, !tbaa !9
  %6 = icmp slt i32 %5, 448
  br i1 %6, label %7, label %432

7:                                                ; preds = %4
  %8 = load i32, ptr %3, align 4, !tbaa !9
  %9 = shl i32 %8, 9
  %10 = or i32 %9, 32
  %11 = load ptr, ptr %2, align 8, !tbaa !5
  %12 = getelementptr inbounds %struct.Apr, ptr %11, i32 0, i32 6
  store i32 %10, ptr %12, align 8, !tbaa !11
  %13 = load ptr, ptr %2, align 8, !tbaa !5
  call void @decodeir(ptr noundef %13)
  %14 = load ptr, ptr %2, align 8, !tbaa !5
  %15 = getelementptr inbounds %struct.Apr, ptr %14, i32 0, i32 6
  %16 = load i32, ptr %15, align 8, !tbaa !11
  %17 = load i32, ptr %3, align 4, !tbaa !9
  %18 = sext i32 %17 to i64
  %19 = getelementptr inbounds [448 x ptr], ptr @mnemonics, i64 0, i64 %18
  %20 = load ptr, ptr %19, align 8, !tbaa !5
  call void (ptr, ...) @debug(ptr noundef @.str.1, i32 noundef %16, ptr noundef %20)
  %21 = load ptr, ptr %2, align 8, !tbaa !5
  %22 = getelementptr inbounds %struct.Apr, ptr %21, i32 0, i32 168
  %23 = load i8, ptr %22, align 1, !tbaa !19
  %24 = zext i8 %23 to i32
  %25 = icmp ne i32 %24, 0
  br i1 %25, label %136, label %26

26:                                               ; preds = %7
  %27 = load ptr, ptr %2, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.Apr, ptr %27, i32 0, i32 169
  %29 = load i8, ptr %28, align 4, !tbaa !20
  %30 = zext i8 %29 to i32
  %31 = icmp ne i32 %30, 0
  br i1 %31, label %136, label %32

32:                                               ; preds = %26
  %33 = load ptr, ptr %2, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.Apr, ptr %33, i32 0, i32 154
  %35 = load i8, ptr %34, align 1, !tbaa !21
  %36 = zext i8 %35 to i32
  %37 = icmp ne i32 %36, 0
  br i1 %37, label %136, label %38

38:                                               ; preds = %32
  %39 = load ptr, ptr %2, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.Apr, ptr %39, i32 0, i32 172
  %41 = load i8, ptr %40, align 1, !tbaa !22
  %42 = zext i8 %41 to i32
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %44, label %54

44:                                               ; preds = %38
  %45 = load ptr, ptr %2, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.Apr, ptr %45, i32 0, i32 148
  %47 = load i32, ptr %46, align 8, !tbaa !23
  %48 = icmp eq i32 %47, 229376
  br i1 %48, label %136, label %49

49:                                               ; preds = %44
  %50 = load ptr, ptr %2, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.Apr, ptr %50, i32 0, i32 148
  %52 = load i32, ptr %51, align 8, !tbaa !23
  %53 = icmp eq i32 %52, 229440
  br i1 %53, label %136, label %54

54:                                               ; preds = %49, %38
  %55 = load ptr, ptr %2, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.Apr, ptr %55, i32 0, i32 147
  %57 = load i32, ptr %56, align 4, !tbaa !24
  %58 = icmp eq i32 %57, 168
  br i1 %58, label %136, label %59

59:                                               ; preds = %54
  %60 = load ptr, ptr %2, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.Apr, ptr %60, i32 0, i32 147
  %62 = load i32, ptr %61, align 4, !tbaa !24
  %63 = icmp eq i32 %62, 94
  br i1 %63, label %69, label %64

64:                                               ; preds = %59
  %65 = load ptr, ptr %2, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.Apr, ptr %65, i32 0, i32 147
  %67 = load i32, ptr %66, align 4, !tbaa !24
  %68 = icmp eq i32 %67, 95
  br i1 %68, label %69, label %75

69:                                               ; preds = %64, %59
  %70 = load ptr, ptr %2, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.Apr, ptr %70, i32 0, i32 105
  %72 = load i8, ptr %71, align 2, !tbaa !25
  %73 = zext i8 %72 to i32
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %136, label %75

75:                                               ; preds = %69, %64
  %76 = load ptr, ptr %2, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.Apr, ptr %76, i32 0, i32 147
  %78 = load i32, ptr %77, align 4, !tbaa !24
  %79 = icmp eq i32 %78, 91
  br i1 %79, label %90, label %80

80:                                               ; preds = %75
  %81 = load ptr, ptr %2, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.Apr, ptr %81, i32 0, i32 147
  %83 = load i32, ptr %82, align 4, !tbaa !24
  %84 = icmp eq i32 %83, 92
  br i1 %84, label %90, label %85

85:                                               ; preds = %80
  %86 = load ptr, ptr %2, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.Apr, ptr %86, i32 0, i32 147
  %88 = load i32, ptr %87, align 4, !tbaa !24
  %89 = icmp eq i32 %88, 94
  br i1 %89, label %90, label %100

90:                                               ; preds = %85, %80, %75
  %91 = load ptr, ptr %2, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.Apr, ptr %91, i32 0, i32 105
  %93 = load i8, ptr %92, align 2, !tbaa !25
  %94 = icmp ne i8 %93, 0
  br i1 %94, label %100, label %95

95:                                               ; preds = %90
  %96 = load ptr, ptr %2, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.Apr, ptr %96, i32 0, i32 107
  %98 = load i8, ptr %97, align 8, !tbaa !26
  %99 = icmp ne i8 %98, 0
  br i1 %99, label %100, label %136

100:                                              ; preds = %95, %90, %85
  %101 = load ptr, ptr %2, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.Apr, ptr %101, i32 0, i32 147
  %103 = load i32, ptr %102, align 4, !tbaa !24
  %104 = and i32 %103, 496
  %105 = icmp eq i32 %104, 208
  br i1 %105, label %118, label %106

106:                                              ; preds = %100
  %107 = load ptr, ptr %2, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.Apr, ptr %107, i32 0, i32 147
  %109 = load i32, ptr %108, align 4, !tbaa !24
  %110 = and i32 %109, 496
  %111 = icmp eq i32 %110, 224
  br i1 %111, label %118, label %112

112:                                              ; preds = %106
  %113 = load ptr, ptr %2, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.Apr, ptr %113, i32 0, i32 147
  %115 = load i32, ptr %114, align 4, !tbaa !24
  %116 = and i32 %115, 496
  %117 = icmp eq i32 %116, 240
  br i1 %117, label %118, label %124

118:                                              ; preds = %112, %106, %100
  %119 = load ptr, ptr %2, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.Apr, ptr %119, i32 0, i32 147
  %121 = load i32, ptr %120, align 4, !tbaa !24
  %122 = and i32 %121, 8
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %136, label %124

124:                                              ; preds = %118, %112
  %125 = load ptr, ptr %2, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.Apr, ptr %125, i32 0, i32 162
  %127 = load i8, ptr %126, align 1, !tbaa !27
  %128 = zext i8 %127 to i32
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %136, label %130

130:                                              ; preds = %124
  %131 = load ptr, ptr %2, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.Apr, ptr %131, i32 0, i32 163
  %133 = load i8, ptr %132, align 2, !tbaa !28
  %134 = zext i8 %133 to i32
  %135 = icmp ne i32 %134, 0
  br label %136

136:                                              ; preds = %130, %124, %118, %95, %69, %54, %49, %44, %32, %26, %7
  %137 = phi i1 [ true, %124 ], [ true, %118 ], [ true, %95 ], [ true, %69 ], [ true, %54 ], [ true, %49 ], [ true, %44 ], [ true, %32 ], [ true, %26 ], [ true, %7 ], [ %135, %130 ]
  %138 = zext i1 %137 to i64
  %139 = select i1 %137, ptr @.str.3, ptr @.str.4
  call void (ptr, ...) @debug(ptr noundef @.str.2, ptr noundef %139)
  %140 = load ptr, ptr %2, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.Apr, ptr %140, i32 0, i32 147
  %142 = load i32, ptr %141, align 4, !tbaa !24
  %143 = icmp eq i32 %142, 176
  br i1 %143, label %216, label %144

144:                                              ; preds = %136
  %145 = load ptr, ptr %2, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.Apr, ptr %145, i32 0, i32 147
  %147 = load i32, ptr %146, align 4, !tbaa !24
  %148 = icmp eq i32 %147, 177
  br i1 %148, label %216, label %149

149:                                              ; preds = %144
  %150 = load ptr, ptr %2, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.Apr, ptr %150, i32 0, i32 147
  %152 = load i32, ptr %151, align 4, !tbaa !24
  %153 = icmp eq i32 %152, 178
  br i1 %153, label %216, label %154

154:                                              ; preds = %149
  %155 = load ptr, ptr %2, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.Apr, ptr %155, i32 0, i32 147
  %157 = load i32, ptr %156, align 4, !tbaa !24
  %158 = icmp eq i32 %157, 180
  br i1 %158, label %216, label %159

159:                                              ; preds = %154
  %160 = load ptr, ptr %2, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.Apr, ptr %160, i32 0, i32 147
  %162 = load i32, ptr %161, align 4, !tbaa !24
  %163 = icmp eq i32 %162, 182
  br i1 %163, label %216, label %164

164:                                              ; preds = %159
  %165 = load ptr, ptr %2, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.Apr, ptr %165, i32 0, i32 172
  %167 = load i8, ptr %166, align 1, !tbaa !22
  %168 = zext i8 %167 to i32
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %170, label %175

170:                                              ; preds = %164
  %171 = load ptr, ptr %2, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.Apr, ptr %171, i32 0, i32 148
  %173 = load i32, ptr %172, align 8, !tbaa !23
  %174 = icmp eq i32 %173, 229408
  br i1 %174, label %216, label %175

175:                                              ; preds = %170, %164
  %176 = load ptr, ptr %2, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.Apr, ptr %176, i32 0, i32 172
  %178 = load i8, ptr %177, align 1, !tbaa !22
  %179 = zext i8 %178 to i32
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %181, label %186

181:                                              ; preds = %175
  %182 = load ptr, ptr %2, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.Apr, ptr %182, i32 0, i32 148
  %184 = load i32, ptr %183, align 8, !tbaa !23
  %185 = icmp eq i32 %184, 229536
  br i1 %185, label %216, label %186

186:                                              ; preds = %181, %175
  %187 = load ptr, ptr %2, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.Apr, ptr %187, i32 0, i32 153
  %189 = load i8, ptr %188, align 8, !tbaa !29
  %190 = zext i8 %189 to i32
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %216, label %192

192:                                              ; preds = %186
  %193 = load ptr, ptr %2, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.Apr, ptr %193, i32 0, i32 156
  %195 = load i8, ptr %194, align 1, !tbaa !30
  %196 = zext i8 %195 to i32
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %204

198:                                              ; preds = %192
  %199 = load ptr, ptr %2, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.Apr, ptr %199, i32 0, i32 6
  %201 = load i32, ptr %200, align 8, !tbaa !11
  %202 = and i32 %201, 1024
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %216, label %204

204:                                              ; preds = %198, %192
  %205 = load ptr, ptr %2, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.Apr, ptr %205, i32 0, i32 147
  %207 = load i32, ptr %206, align 4, !tbaa !24
  %208 = and i32 %207, 483
  %209 = icmp eq i32 %208, 98
  br i1 %209, label %216, label %210

210:                                              ; preds = %204
  %211 = load ptr, ptr %2, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.Apr, ptr %211, i32 0, i32 147
  %213 = load i32, ptr %212, align 4, !tbaa !24
  %214 = and i32 %213, 483
  %215 = icmp eq i32 %214, 99
  br label %216

216:                                              ; preds = %210, %204, %198, %186, %181, %170, %159, %154, %149, %144, %136
  %217 = phi i1 [ true, %204 ], [ true, %198 ], [ true, %186 ], [ true, %181 ], [ true, %170 ], [ true, %159 ], [ true, %154 ], [ true, %149 ], [ true, %144 ], [ true, %136 ], [ %215, %210 ]
  %218 = zext i1 %217 to i64
  %219 = select i1 %217, ptr @.str.5, ptr @.str.6
  call void (ptr, ...) @debug(ptr noundef @.str.2, ptr noundef %219)
  %220 = load ptr, ptr %2, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.Apr, ptr %220, i32 0, i32 162
  %222 = load i8, ptr %221, align 1, !tbaa !27
  %223 = zext i8 %222 to i32
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %366, label %225

225:                                              ; preds = %216
  %226 = load ptr, ptr %2, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.Apr, ptr %226, i32 0, i32 168
  %228 = load i8, ptr %227, align 1, !tbaa !19
  %229 = zext i8 %228 to i32
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %366, label %231

231:                                              ; preds = %225
  %232 = load ptr, ptr %2, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.Apr, ptr %232, i32 0, i32 147
  %234 = load i32, ptr %233, align 4, !tbaa !24
  %235 = icmp eq i32 %234, 169
  br i1 %235, label %236, label %243

236:                                              ; preds = %231
  %237 = load ptr, ptr %2, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.Apr, ptr %237, i32 0, i32 4
  %239 = getelementptr inbounds %struct.AprState, ptr %238, i32 0, i32 2
  %240 = load i64, ptr %239, align 8, !tbaa !31
  %241 = and i64 %240, 34359738368
  %242 = icmp ne i64 %241, 0
  br i1 %242, label %243, label %366

243:                                              ; preds = %236, %231
  %244 = load ptr, ptr %2, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.Apr, ptr %244, i32 0, i32 147
  %246 = load i32, ptr %245, align 4, !tbaa !24
  %247 = and i32 %246, 496
  %248 = icmp eq i32 %247, 192
  br i1 %248, label %366, label %249

249:                                              ; preds = %243
  %250 = load ptr, ptr %2, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.Apr, ptr %250, i32 0, i32 147
  %252 = load i32, ptr %251, align 4, !tbaa !24
  %253 = icmp eq i32 %252, 180
  br i1 %253, label %366, label %254

254:                                              ; preds = %249
  %255 = load ptr, ptr %2, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.Apr, ptr %255, i32 0, i32 153
  %257 = load i8, ptr %256, align 8, !tbaa !29
  %258 = zext i8 %257 to i32
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %366, label %260

260:                                              ; preds = %254
  %261 = load ptr, ptr %2, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.Apr, ptr %261, i32 0, i32 170
  %263 = load i8, ptr %262, align 1, !tbaa !32
  %264 = zext i8 %263 to i32
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %272

266:                                              ; preds = %260
  %267 = load ptr, ptr %2, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.Apr, ptr %267, i32 0, i32 147
  %269 = load i32, ptr %268, align 4, !tbaa !24
  %270 = and i32 %269, 48
  %271 = icmp eq i32 %270, 0
  br i1 %271, label %366, label %272

272:                                              ; preds = %266, %260
  %273 = load ptr, ptr %2, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.Apr, ptr %273, i32 0, i32 172
  %275 = load i8, ptr %274, align 1, !tbaa !22
  %276 = zext i8 %275 to i32
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %366, label %278

278:                                              ; preds = %272
  %279 = load ptr, ptr %2, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.Apr, ptr %279, i32 0, i32 156
  %281 = load i8, ptr %280, align 1, !tbaa !30
  %282 = zext i8 %281 to i32
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %290

284:                                              ; preds = %278
  %285 = load ptr, ptr %2, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.Apr, ptr %285, i32 0, i32 6
  %287 = load i32, ptr %286, align 8, !tbaa !11
  %288 = and i32 %287, 1536
  %289 = icmp eq i32 %288, 1024
  br i1 %289, label %366, label %290

290:                                              ; preds = %284, %278
  %291 = load ptr, ptr %2, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.Apr, ptr %291, i32 0, i32 147
  %293 = load i32, ptr %292, align 4, !tbaa !24
  %294 = icmp eq i32 %293, 94
  br i1 %294, label %300, label %295

295:                                              ; preds = %290
  %296 = load ptr, ptr %2, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.Apr, ptr %296, i32 0, i32 147
  %298 = load i32, ptr %297, align 4, !tbaa !24
  %299 = icmp eq i32 %298, 95
  br i1 %299, label %300, label %306

300:                                              ; preds = %295, %290
  %301 = load ptr, ptr %2, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.Apr, ptr %301, i32 0, i32 105
  %303 = load i8, ptr %302, align 2, !tbaa !25
  %304 = zext i8 %303 to i32
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %366, label %306

306:                                              ; preds = %300, %295
  %307 = load ptr, ptr %2, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.Apr, ptr %307, i32 0, i32 147
  %309 = load i32, ptr %308, align 4, !tbaa !24
  %310 = and i32 %309, 483
  %311 = icmp eq i32 %310, 98
  br i1 %311, label %366, label %312

312:                                              ; preds = %306
  %313 = load ptr, ptr %2, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.Apr, ptr %313, i32 0, i32 147
  %315 = load i32, ptr %314, align 4, !tbaa !24
  %316 = and i32 %315, 508
  %317 = icmp eq i32 %316, 172
  br i1 %317, label %366, label %318

318:                                              ; preds = %312
  %319 = load ptr, ptr %2, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.Apr, ptr %319, i32 0, i32 6
  %321 = load i32, ptr %320, align 8, !tbaa !11
  %322 = and i32 %321, 480
  %323 = icmp eq i32 %322, 0
  br i1 %323, label %324, label %364

324:                                              ; preds = %318
  %325 = load ptr, ptr %2, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.Apr, ptr %325, i32 0, i32 154
  %327 = load i8, ptr %326, align 1, !tbaa !21
  %328 = zext i8 %327 to i32
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %362, label %330

330:                                              ; preds = %324
  %331 = load ptr, ptr %2, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.Apr, ptr %331, i32 0, i32 169
  %333 = load i8, ptr %332, align 4, !tbaa !20
  %334 = zext i8 %333 to i32
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %362, label %336

336:                                              ; preds = %330
  %337 = load ptr, ptr %2, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.Apr, ptr %337, i32 0, i32 147
  %339 = load i32, ptr %338, align 4, !tbaa !24
  %340 = and i32 %339, 496
  %341 = icmp eq i32 %340, 208
  br i1 %341, label %354, label %342

342:                                              ; preds = %336
  %343 = load ptr, ptr %2, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.Apr, ptr %343, i32 0, i32 147
  %345 = load i32, ptr %344, align 4, !tbaa !24
  %346 = and i32 %345, 496
  %347 = icmp eq i32 %346, 224
  br i1 %347, label %354, label %348

348:                                              ; preds = %342
  %349 = load ptr, ptr %2, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.Apr, ptr %349, i32 0, i32 147
  %351 = load i32, ptr %350, align 4, !tbaa !24
  %352 = and i32 %351, 496
  %353 = icmp eq i32 %352, 240
  br i1 %353, label %354, label %360

354:                                              ; preds = %348, %342, %336
  %355 = load ptr, ptr %2, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.Apr, ptr %355, i32 0, i32 147
  %357 = load i32, ptr %356, align 4, !tbaa !24
  %358 = and i32 %357, 8
  %359 = icmp ne i32 %358, 0
  br label %360

360:                                              ; preds = %354, %348
  %361 = phi i1 [ false, %348 ], [ %359, %354 ]
  br label %362

362:                                              ; preds = %360, %330, %324
  %363 = phi i1 [ true, %330 ], [ true, %324 ], [ %361, %360 ]
  br label %364

364:                                              ; preds = %362, %318
  %365 = phi i1 [ false, %318 ], [ %363, %362 ]
  br label %366

366:                                              ; preds = %364, %312, %306, %300, %284, %272, %266, %254, %249, %243, %236, %225, %216
  %367 = phi i1 [ true, %312 ], [ true, %306 ], [ true, %300 ], [ true, %284 ], [ true, %272 ], [ true, %266 ], [ true, %254 ], [ true, %249 ], [ true, %243 ], [ true, %236 ], [ true, %225 ], [ true, %216 ], [ %365, %364 ]
  %368 = zext i1 %367 to i64
  %369 = select i1 %367, ptr @.str.7, ptr @.str.8
  call void (ptr, ...) @debug(ptr noundef @.str.2, ptr noundef %369)
  %370 = load ptr, ptr %2, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.Apr, ptr %370, i32 0, i32 147
  %372 = load i32, ptr %371, align 4, !tbaa !24
  %373 = icmp eq i32 %372, 164
  br i1 %373, label %425, label %374

374:                                              ; preds = %366
  %375 = load ptr, ptr %2, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.Apr, ptr %375, i32 0, i32 147
  %377 = load i32, ptr %376, align 4, !tbaa !24
  %378 = icmp eq i32 %377, 165
  br i1 %378, label %425, label %379

379:                                              ; preds = %374
  %380 = load ptr, ptr %2, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.Apr, ptr %380, i32 0, i32 147
  %382 = load i32, ptr %381, align 4, !tbaa !24
  %383 = icmp eq i32 %382, 166
  br i1 %383, label %425, label %384

384:                                              ; preds = %379
  %385 = load ptr, ptr %2, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.Apr, ptr %385, i32 0, i32 147
  %387 = load i32, ptr %386, align 4, !tbaa !24
  %388 = and i32 %387, 483
  %389 = icmp eq i32 %388, 97
  br i1 %389, label %425, label %390

390:                                              ; preds = %384
  %391 = load ptr, ptr %2, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.Apr, ptr %391, i32 0, i32 147
  %393 = load i32, ptr %392, align 4, !tbaa !24
  %394 = and i32 %393, 504
  %395 = icmp eq i32 %394, 152
  br i1 %395, label %408, label %396

396:                                              ; preds = %390
  %397 = load ptr, ptr %2, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.Apr, ptr %397, i32 0, i32 147
  %399 = load i32, ptr %398, align 4, !tbaa !24
  %400 = and i32 %399, 504
  %401 = icmp eq i32 %400, 144
  br i1 %401, label %402, label %423

402:                                              ; preds = %396
  %403 = load ptr, ptr %2, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.Apr, ptr %403, i32 0, i32 6
  %405 = load i32, ptr %404, align 8, !tbaa !11
  %406 = and i32 %405, 2048
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %423

408:                                              ; preds = %402, %390
  %409 = load ptr, ptr %2, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.Apr, ptr %409, i32 0, i32 156
  %411 = load i8, ptr %410, align 1, !tbaa !30
  %412 = zext i8 %411 to i32
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %420

414:                                              ; preds = %408
  %415 = load ptr, ptr %2, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.Apr, ptr %415, i32 0, i32 6
  %417 = load i32, ptr %416, align 8, !tbaa !11
  %418 = and i32 %417, 1536
  %419 = icmp eq i32 %418, 1024
  br label %420

420:                                              ; preds = %414, %408
  %421 = phi i1 [ false, %408 ], [ %419, %414 ]
  %422 = xor i1 %421, true
  br label %423

423:                                              ; preds = %420, %402, %396
  %424 = phi i1 [ false, %402 ], [ false, %396 ], [ %422, %420 ]
  br label %425

425:                                              ; preds = %423, %384, %379, %374, %366
  %426 = phi i1 [ true, %384 ], [ true, %379 ], [ true, %374 ], [ true, %366 ], [ %424, %423 ]
  %427 = zext i1 %426 to i64
  %428 = select i1 %426, ptr @.str.9, ptr @.str.6
  call void (ptr, ...) @debug(ptr noundef @.str.2, ptr noundef %428)
  call void (ptr, ...) @debug(ptr noundef @.str.10)
  br label %429

429:                                              ; preds = %425
  %430 = load i32, ptr %3, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %3, align 4, !tbaa !9
  br label %4, !llvm.loop !33

432:                                              ; preds = %4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  ret void
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 3432}
!12 = !{!"Apr", !13, i64 0, !14, i64 64, !16, i64 3192, !10, i64 3376, !17, i64 3384, !17, i64 3408, !10, i64 3432, !15, i64 3440, !15, i64 3448, !10, i64 3456, !10, i64 3460, !10, i64 3464, !7, i64 3468, !18, i64 3470, !18, i64 3472, !7, i64 3474, !7, i64 3475, !7, i64 3476, !7, i64 3477, !7, i64 3478, !7, i64 3479, !7, i64 3480, !7, i64 3481, !7, i64 3482, !7, i64 3483, !7, i64 3484, !7, i64 3485, !7, i64 3486, !7, i64 3487, !7, i64 3488, !7, i64 3489, !7, i64 3490, !7, i64 3491, !7, i64 3492, !7, i64 3493, !7, i64 3494, !7, i64 3495, !7, i64 3496, !7, i64 3497, !7, i64 3498, !7, i64 3499, !7, i64 3500, !7, i64 3501, !7, i64 3502, !10, i64 3504, !10, i64 3508, !7, i64 3512, !7, i64 3513, !7, i64 3514, !7, i64 3515, !7, i64 3516, !7, i64 3517, !7, i64 3518, !7, i64 3519, !7, i64 3520, !7, i64 3521, !7, i64 3522, !7, i64 3523, !7, i64 3524, !7, i64 3525, !7, i64 3526, !7, i64 3527, !7, i64 3528, !7, i64 3529, !7, i64 3530, !7, i64 3531, !7, i64 3532, !7, i64 3533, !7, i64 3534, !7, i64 3535, !7, i64 3536, !7, i64 3537, !7, i64 3538, !7, i64 3539, !7, i64 3540, !7, i64 3541, !7, i64 3542, !7, i64 3543, !7, i64 3544, !7, i64 3545, !7, i64 3546, !7, i64 3547, !7, i64 3548, !7, i64 3549, !7, i64 3550, !7, i64 3551, !10, i64 3552, !7, i64 3556, !7, i64 3557, !7, i64 3558, !7, i64 3559, !7, i64 3560, !7, i64 3561, !7, i64 3562, !7, i64 3563, !7, i64 3564, !7, i64 3565, !7, i64 3566, !7, i64 3567, !7, i64 3568, !7, i64 3569, !7, i64 3570, !7, i64 3571, !7, i64 3572, !7, i64 3573, !7, i64 3574, !7, i64 3575, !7, i64 3576, !7, i64 3577, !7, i64 3578, !7, i64 3579, !7, i64 3580, !7, i64 3581, !7, i64 3582, !7, i64 3583, !7, i64 3584, !7, i64 3585, !7, i64 3586, !7, i64 3587, !7, i64 3588, !7, i64 3589, !7, i64 3590, !7, i64 3591, !7, i64 3592, !7, i64 3593, !7, i64 3594, !7, i64 3595, !7, i64 3596, !7, i64 3597, !7, i64 3598, !7, i64 3599, !7, i64 3600, !7, i64 3601, !7, i64 3602, !7, i64 3603, !7, i64 3604, !7, i64 3605, !7, i64 3606, !7, i64 3607, !7, i64 3608, !7, i64 3609, !7, i64 3610, !7, i64 3611, !7, i64 3612, !7, i64 3613, !7, i64 3614, !10, i64 3616, !10, i64 3620, !10, i64 3624, !7, i64 3628, !7, i64 3629, !7, i64 3630, !7, i64 3631, !7, i64 3632, !7, i64 3633, !7, i64 3634, !7, i64 3635, !7, i64 3636, !7, i64 3637, !7, i64 3638, !7, i64 3639, !7, i64 3640, !7, i64 3641, !7, i64 3642, !10, i64 3644, !7, i64 3648, !7, i64 3649, !7, i64 3650, !7, i64 3651, !7, i64 3652, !7, i64 3653, !7, i64 3654, !7, i64 3655, !7, i64 3656, !7, i64 3657, !7, i64 3658, !6, i64 3664, !6, i64 3672, !10, i64 3680, !7, i64 3684, !7, i64 3688, !6, i64 4168, !6, i64 4176}
!13 = !{!"Device", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!14 = !{!"IOBus", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !10, i64 48, !7, i64 56}
!15 = !{!"long", !7, i64 0}
!16 = !{!"Membus", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !6, i64 48, !7, i64 56}
!17 = !{!"AprState", !15, i64 0, !15, i64 8, !15, i64 16}
!18 = !{!"short", !7, i64 0}
!19 = !{!12, !7, i64 3651}
!20 = !{!12, !7, i64 3652}
!21 = !{!12, !7, i64 3633}
!22 = !{!12, !7, i64 3655}
!23 = !{!12, !10, i64 3624}
!24 = !{!12, !10, i64 3620}
!25 = !{!12, !7, i64 3574}
!26 = !{!12, !7, i64 3576}
!27 = !{!12, !7, i64 3641}
!28 = !{!12, !7, i64 3642}
!29 = !{!12, !7, i64 3632}
!30 = !{!12, !7, i64 3635}
!31 = !{!12, !15, i64 3400}
!32 = !{!12, !7, i64 3653}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}


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

@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@mnemonics = external local_unnamed_addr global [448 x ptr], align 16
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @decodeir(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @testinst(ptr noundef %0) local_unnamed_addr #0 {
  %2 = getelementptr inbounds i8, ptr %0, i64 3432
  %3 = getelementptr inbounds i8, ptr %0, i64 3651
  %4 = getelementptr inbounds i8, ptr %0, i64 3652
  %5 = getelementptr inbounds i8, ptr %0, i64 3633
  %6 = getelementptr inbounds i8, ptr %0, i64 3655
  %7 = getelementptr inbounds i8, ptr %0, i64 3624
  %8 = getelementptr inbounds i8, ptr %0, i64 3620
  %9 = getelementptr inbounds i8, ptr %0, i64 3574
  %10 = getelementptr inbounds i8, ptr %0, i64 3576
  %11 = getelementptr inbounds i8, ptr %0, i64 3641
  %12 = getelementptr inbounds i8, ptr %0, i64 3642
  %13 = getelementptr inbounds i8, ptr %0, i64 3632
  %14 = getelementptr inbounds i8, ptr %0, i64 3635
  %15 = getelementptr inbounds i8, ptr %0, i64 3400
  %16 = getelementptr inbounds i8, ptr %0, i64 3653
  br label %17

17:                                               ; preds = %1, %.thread131
  %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %.thread131 ]
  %indvars.iv.tr = trunc i64 %indvars.iv to i32
  %18 = shl i32 %indvars.iv.tr, 9
  %19 = or disjoint i32 %18, 32
  store i32 %19, ptr %2, align 8, !tbaa !5
  tail call void @decodeir(ptr noundef %0)
  %20 = load i32, ptr %2, align 8, !tbaa !5
  %21 = getelementptr inbounds [448 x ptr], ptr @mnemonics, i64 0, i64 %indvars.iv
  %22 = load ptr, ptr %21, align 8, !tbaa !17
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.1, i32 noundef %20, ptr noundef %22) #2
  %23 = load i8, ptr %3, align 1, !tbaa !18
  %.not = icmp eq i8 %23, 0
  br i1 %.not, label %24, label %.thread

24:                                               ; preds = %17
  %25 = load i8, ptr %4, align 4, !tbaa !19
  %.not85 = icmp eq i8 %25, 0
  br i1 %.not85, label %26, label %.thread

26:                                               ; preds = %24
  %27 = load i8, ptr %5, align 1, !tbaa !20
  %.not86 = icmp eq i8 %27, 0
  br i1 %.not86, label %28, label %.thread

28:                                               ; preds = %26
  %29 = load i8, ptr %6, align 1, !tbaa !21
  %.not87 = icmp eq i8 %29, 0
  br i1 %.not87, label %32, label %30

30:                                               ; preds = %28
  %31 = load i32, ptr %7, align 8, !tbaa !22
  switch i32 %31, label %32 [
    i32 229376, label %.thread
    i32 229440, label %.thread
  ]

32:                                               ; preds = %30, %28
  %33 = load i32, ptr %8, align 4, !tbaa !23
  switch i32 %33, label %39 [
    i32 168, label %.thread
    i32 94, label %34
    i32 95, label %34
    i32 91, label %37
    i32 92, label %37
  ]

34:                                               ; preds = %32, %32
  %35 = load i8, ptr %9, align 2, !tbaa !24
  %.not88 = icmp eq i8 %35, 0
  br i1 %.not88, label %36, label %.thread

36:                                               ; preds = %34
  %cond = icmp eq i32 %33, 94
  br i1 %cond, label %.thread149, label %39

37:                                               ; preds = %32, %32
  %.pr = load i8, ptr %9, align 2, !tbaa !24
  %.not89 = icmp eq i8 %.pr, 0
  br i1 %.not89, label %.thread149, label %39

.thread149:                                       ; preds = %36, %37
  %38 = load i8, ptr %10, align 8, !tbaa !25
  %.not90 = icmp eq i8 %38, 0
  br i1 %.not90, label %.thread, label %39

39:                                               ; preds = %36, %32, %.thread149, %37
  %40 = and i32 %33, 496
  switch i32 %40, label %43 [
    i32 208, label %41
    i32 224, label %41
    i32 240, label %41
  ]

41:                                               ; preds = %39, %39, %39
  %42 = and i32 %33, 8
  %.not91 = icmp eq i32 %42, 0
  br i1 %.not91, label %43, label %.thread

43:                                               ; preds = %39, %41
  %44 = load i8, ptr %11, align 1, !tbaa !26
  %.not92 = icmp eq i8 %44, 0
  br i1 %.not92, label %45, label %.thread

45:                                               ; preds = %43
  %46 = load i8, ptr %12, align 2, !tbaa !27
  %.fr = freeze i8 %46
  %.not139 = icmp eq i8 %.fr, 0
  br i1 %.not139, label %47, label %.thread

.thread:                                          ; preds = %32, %17, %24, %26, %30, %30, %34, %.thread149, %41, %43, %45
  br label %47

47:                                               ; preds = %45, %.thread
  %48 = phi ptr [ @.str.3, %.thread ], [ @.str.4, %45 ]
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.2, ptr noundef nonnull %48) #2
  %49 = load i32, ptr %8, align 4, !tbaa !23
  %switch.tableidx = add i32 %49, -176
  %50 = icmp ult i32 %switch.tableidx, 7
  br i1 %50, label %switch.hole_check, label %51

51:                                               ; preds = %switch.hole_check, %47
  %52 = load i8, ptr %6, align 1, !tbaa !21
  %.not93 = icmp eq i8 %52, 0
  br i1 %.not93, label %.thread119, label %53

53:                                               ; preds = %51
  %54 = load i32, ptr %7, align 8, !tbaa !22
  switch i32 %54, label %.thread119 [
    i32 229408, label %.thread121
    i32 229536, label %.thread121
  ]

.thread119:                                       ; preds = %53, %51
  %55 = load i8, ptr %13, align 8, !tbaa !28
  %.not95 = icmp eq i8 %55, 0
  br i1 %.not95, label %56, label %.thread121

56:                                               ; preds = %.thread119
  %57 = load i8, ptr %14, align 1, !tbaa !29
  %.not96 = icmp eq i8 %57, 0
  br i1 %.not96, label %62, label %58

58:                                               ; preds = %56
  %59 = load i32, ptr %2, align 8, !tbaa !5
  %60 = and i32 %59, 1024
  %.not97 = icmp ne i32 %60, 0
  %61 = and i32 %49, 482
  %switch138 = icmp eq i32 %61, 98
  %or.cond146 = or i1 %switch138, %.not97
  br i1 %or.cond146, label %.thread121, label %switch.lookup

62:                                               ; preds = %56
  %.old = and i32 %49, 482
  %switch138.old = icmp eq i32 %.old, 98
  br i1 %switch138.old, label %.thread121, label %switch.lookup

.thread121:                                       ; preds = %53, %53, %62, %.thread119, %58
  br label %switch.lookup

switch.hole_check:                                ; preds = %47
  %switch.maskindex = trunc nuw i32 %switch.tableidx to i8
  %switch.shifted = lshr i8 87, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %51

switch.lookup:                                    ; preds = %switch.hole_check, %58, %62, %.thread121
  %63 = phi ptr [ @.str.5, %.thread121 ], [ @.str.6, %62 ], [ @.str.6, %58 ], [ @.str.5, %switch.hole_check ]
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.2, ptr noundef nonnull %63) #2
  %64 = load i8, ptr %11, align 1, !tbaa !26
  %.not98 = icmp eq i8 %64, 0
  br i1 %.not98, label %65, label %.thread124

65:                                               ; preds = %switch.lookup
  %66 = load i8, ptr %3, align 1, !tbaa !18
  %.not99 = icmp eq i8 %66, 0
  br i1 %.not99, label %67, label %.thread124

67:                                               ; preds = %65
  %68 = load i32, ptr %8, align 4, !tbaa !23
  %.fr141 = freeze i32 %68
  %69 = icmp eq i32 %.fr141, 169
  br i1 %69, label %70, label %73

70:                                               ; preds = %67
  %71 = load i64, ptr %15, align 8, !tbaa !30
  %72 = and i64 %71, 34359738368
  %.not100 = icmp eq i64 %72, 0
  br i1 %.not100, label %.thread124, label %73

73:                                               ; preds = %70, %67
  %74 = and i32 %.fr141, 496
  %75 = icmp eq i32 %74, 192
  %76 = icmp eq i32 %.fr141, 180
  %or.cond = or i1 %76, %75
  br i1 %or.cond, label %.thread124, label %77

77:                                               ; preds = %73
  %78 = load i8, ptr %13, align 8, !tbaa !28
  %.not101 = icmp eq i8 %78, 0
  br i1 %.not101, label %79, label %.thread124

79:                                               ; preds = %77
  %80 = load i8, ptr %16, align 1, !tbaa !31
  %.not102 = icmp ne i8 %80, 0
  %81 = and i32 %.fr141, 48
  %82 = icmp eq i32 %81, 0
  %or.cond111 = and i1 %82, %.not102
  br i1 %or.cond111, label %.thread124, label %83

83:                                               ; preds = %79
  %84 = load i8, ptr %6, align 1, !tbaa !21
  %.not103 = icmp eq i8 %84, 0
  br i1 %.not103, label %85, label %.thread124

85:                                               ; preds = %83
  %86 = load i8, ptr %14, align 1, !tbaa !29
  %.not104 = icmp eq i8 %86, 0
  br i1 %.not104, label %91, label %87

87:                                               ; preds = %85
  %88 = load i32, ptr %2, align 8, !tbaa !5
  %89 = and i32 %88, 1536
  %90 = icmp eq i32 %89, 1024
  br i1 %90, label %.thread124, label %91

91:                                               ; preds = %87, %85
  %92 = and i32 %.fr141, -2
  %switch = icmp eq i32 %92, 94
  br i1 %switch, label %93, label %95

93:                                               ; preds = %91
  %94 = load i8, ptr %9, align 2, !tbaa !24
  %.not105 = icmp eq i8 %94, 0
  br i1 %.not105, label %95, label %.thread124

95:                                               ; preds = %91, %93
  %96 = and i32 %.fr141, 483
  %97 = icmp eq i32 %96, 98
  %98 = and i32 %.fr141, 508
  %99 = icmp eq i32 %98, 172
  %or.cond113 = or i1 %97, %99
  br i1 %or.cond113, label %.thread124, label %100

100:                                              ; preds = %95
  %101 = load i32, ptr %2, align 8, !tbaa !5
  %102 = and i32 %101, 480
  %103 = icmp eq i32 %102, 0
  br i1 %103, label %104, label %.thread127

104:                                              ; preds = %100
  %105 = load i8, ptr %5, align 1, !tbaa !20
  %.not106 = icmp eq i8 %105, 0
  br i1 %.not106, label %106, label %.thread124

106:                                              ; preds = %104
  %107 = load i8, ptr %4, align 4, !tbaa !19
  %.not107 = icmp eq i8 %107, 0
  br i1 %.not107, label %108, label %.thread124

108:                                              ; preds = %106
  switch i32 %74, label %.thread127 [
    i32 208, label %109
    i32 224, label %109
    i32 240, label %109
  ]

109:                                              ; preds = %108, %108, %108
  %110 = and i32 %.fr141, 8
  %.not142 = icmp eq i32 %110, 0
  br i1 %.not142, label %.thread127, label %.thread124

.thread124:                                       ; preds = %79, %104, %106, %switch.lookup, %65, %70, %73, %77, %83, %87, %93, %95, %109
  br label %.thread127

.thread127:                                       ; preds = %108, %100, %109, %.thread124
  %111 = phi ptr [ @.str.7, %.thread124 ], [ @.str.8, %109 ], [ @.str.8, %100 ], [ @.str.8, %108 ]
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.2, ptr noundef nonnull %111) #2
  %112 = load i32, ptr %8, align 4, !tbaa !23
  %.off114 = add i32 %112, -164
  %switch115 = icmp ult i32 %.off114, 3
  %113 = and i32 %112, 483
  %114 = icmp eq i32 %113, 97
  %or.cond117 = or i1 %switch115, %114
  br i1 %or.cond117, label %.thread133, label %115

115:                                              ; preds = %.thread127
  %116 = and i32 %112, 504
  switch i32 %116, label %.thread131 [
    i32 152, label %120
    i32 144, label %117
  ]

117:                                              ; preds = %115
  %118 = load i32, ptr %2, align 8, !tbaa !5
  %119 = and i32 %118, 2048
  %.not108 = icmp eq i32 %119, 0
  br i1 %.not108, label %.thread131, label %120

120:                                              ; preds = %115, %117
  %121 = load i8, ptr %14, align 1, !tbaa !29
  %.not109 = icmp eq i8 %121, 0
  br i1 %.not109, label %.thread133, label %122

122:                                              ; preds = %120
  %123 = load i32, ptr %2, align 8, !tbaa !5
  %.fr144 = freeze i32 %123
  %124 = and i32 %.fr144, 1536
  %.not145 = icmp eq i32 %124, 1024
  br i1 %.not145, label %.thread131, label %.thread133

.thread133:                                       ; preds = %120, %.thread127, %122
  br label %.thread131

.thread131:                                       ; preds = %115, %117, %122, %.thread133
  %125 = phi ptr [ @.str.9, %.thread133 ], [ @.str.6, %122 ], [ @.str.6, %117 ], [ @.str.6, %115 ]
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.2, ptr noundef nonnull %125) #2
  tail call void (ptr, ...) @debug(ptr noundef nonnull @.str.10) #2
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 448
  br i1 %exitcond.not, label %126, label %17, !llvm.loop !32

126:                                              ; preds = %.thread131
  ret void
}

declare void @debug(ptr noundef, ...) local_unnamed_addr #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind }

!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, !13, i64 3432}
!6 = !{!"Apr", !7, i64 0, !11, i64 64, !14, i64 3192, !13, i64 3376, !15, i64 3384, !15, i64 3408, !13, i64 3432, !12, i64 3440, !12, i64 3448, !13, i64 3456, !13, i64 3460, !13, i64 3464, !9, i64 3468, !16, i64 3470, !16, i64 3472, !9, i64 3474, !9, i64 3475, !9, i64 3476, !9, i64 3477, !9, i64 3478, !9, i64 3479, !9, i64 3480, !9, i64 3481, !9, i64 3482, !9, i64 3483, !9, i64 3484, !9, i64 3485, !9, i64 3486, !9, i64 3487, !9, i64 3488, !9, i64 3489, !9, i64 3490, !9, i64 3491, !9, i64 3492, !9, i64 3493, !9, i64 3494, !9, i64 3495, !9, i64 3496, !9, i64 3497, !9, i64 3498, !9, i64 3499, !9, i64 3500, !9, i64 3501, !9, i64 3502, !13, i64 3504, !13, i64 3508, !9, i64 3512, !9, i64 3513, !9, i64 3514, !9, i64 3515, !9, i64 3516, !9, i64 3517, !9, i64 3518, !9, i64 3519, !9, i64 3520, !9, i64 3521, !9, i64 3522, !9, i64 3523, !9, i64 3524, !9, i64 3525, !9, i64 3526, !9, i64 3527, !9, i64 3528, !9, i64 3529, !9, i64 3530, !9, i64 3531, !9, i64 3532, !9, i64 3533, !9, i64 3534, !9, i64 3535, !9, i64 3536, !9, i64 3537, !9, i64 3538, !9, i64 3539, !9, i64 3540, !9, i64 3541, !9, i64 3542, !9, i64 3543, !9, i64 3544, !9, i64 3545, !9, i64 3546, !9, i64 3547, !9, i64 3548, !9, i64 3549, !9, i64 3550, !9, i64 3551, !13, i64 3552, !9, i64 3556, !9, i64 3557, !9, i64 3558, !9, i64 3559, !9, i64 3560, !9, i64 3561, !9, i64 3562, !9, i64 3563, !9, i64 3564, !9, i64 3565, !9, i64 3566, !9, i64 3567, !9, i64 3568, !9, i64 3569, !9, i64 3570, !9, i64 3571, !9, i64 3572, !9, i64 3573, !9, i64 3574, !9, i64 3575, !9, i64 3576, !9, i64 3577, !9, i64 3578, !9, i64 3579, !9, i64 3580, !9, i64 3581, !9, i64 3582, !9, i64 3583, !9, i64 3584, !9, i64 3585, !9, i64 3586, !9, i64 3587, !9, i64 3588, !9, i64 3589, !9, i64 3590, !9, i64 3591, !9, i64 3592, !9, i64 3593, !9, i64 3594, !9, i64 3595, !9, i64 3596, !9, i64 3597, !9, i64 3598, !9, i64 3599, !9, i64 3600, !9, i64 3601, !9, i64 3602, !9, i64 3603, !9, i64 3604, !9, i64 3605, !9, i64 3606, !9, i64 3607, !9, i64 3608, !9, i64 3609, !9, i64 3610, !9, i64 3611, !9, i64 3612, !9, i64 3613, !9, i64 3614, !13, i64 3616, !13, i64 3620, !13, i64 3624, !9, i64 3628, !9, i64 3629, !9, i64 3630, !9, i64 3631, !9, i64 3632, !9, i64 3633, !9, i64 3634, !9, i64 3635, !9, i64 3636, !9, i64 3637, !9, i64 3638, !9, i64 3639, !9, i64 3640, !9, i64 3641, !9, i64 3642, !13, i64 3644, !9, i64 3648, !9, i64 3649, !9, i64 3650, !9, i64 3651, !9, i64 3652, !9, i64 3653, !9, i64 3654, !9, i64 3655, !9, i64 3656, !9, i64 3657, !9, i64 3658, !8, i64 3664, !8, i64 3672, !13, i64 3680, !9, i64 3684, !9, i64 3688, !8, i64 4168, !8, i64 4176}
!7 = !{!"Device", !8, i64 0, !8, i64 8, !8, i64 16, !8, i64 24, !8, i64 32, !8, i64 40, !8, i64 48, !8, i64 56}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C/C++ TBAA"}
!11 = !{!"IOBus", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !13, i64 48, !9, i64 56}
!12 = !{!"long", !9, i64 0}
!13 = !{!"int", !9, i64 0}
!14 = !{!"Membus", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !8, i64 48, !9, i64 56}
!15 = !{!"AprState", !12, i64 0, !12, i64 8, !12, i64 16}
!16 = !{!"short", !9, i64 0}
!17 = !{!8, !8, i64 0}
!18 = !{!6, !9, i64 3651}
!19 = !{!6, !9, i64 3652}
!20 = !{!6, !9, i64 3633}
!21 = !{!6, !9, i64 3655}
!22 = !{!6, !13, i64 3624}
!23 = !{!6, !13, i64 3620}
!24 = !{!6, !9, i64 3574}
!25 = !{!6, !9, i64 3576}
!26 = !{!6, !9, i64 3641}
!27 = !{!6, !9, i64 3642}
!28 = !{!6, !9, i64 3632}
!29 = !{!6, !9, i64 3635}
!30 = !{!6, !12, i64 3400}
!31 = !{!6, !9, i64 3653}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass