; LLVM IR from jgaeddert/liquid-dsp :: sandbox (fec_spc2216_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"

; 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
define dso_local void @spc2216_decode_soft(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [256 x i8], align 16
  %6 = alloca [96 x i8], align 16
  %7 = alloca [132 x i8], align 16
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [22 x i8], align 16
  %11 = alloca [22 x i8], align 16
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 96, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 132, ptr %7) #3
  %16 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 0
  %17 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %16, ptr align 1 %17, i64 256, i1 false)
  %18 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 0
  %19 = load ptr, ptr %3, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %19, i64 256
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %18, ptr align 1 %20, i64 96, i1 false)
  %21 = getelementptr inbounds [132 x i8], ptr %7, i64 0, i64 0
  %22 = load ptr, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %22, i64 352
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %21, ptr align 1 %23, i64 132, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 22, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 22, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %24

24:                                               ; preds = %298, %2
  %25 = load i32, ptr %13, align 4, !tbaa !9
  %26 = icmp ult i32 %25, 6
  br i1 %26, label %27, label %301

27:                                               ; preds = %24
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %28

28:                                               ; preds = %109, %27
  %29 = load i32, ptr %8, align 4, !tbaa !9
  %30 = icmp ult i32 %29, 16
  br i1 %30, label %31, label %112

31:                                               ; preds = %28
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %46, %31
  %33 = load i32, ptr %9, align 4, !tbaa !9
  %34 = icmp ult i32 %33, 6
  br i1 %34, label %35, label %49

35:                                               ; preds = %32
  %36 = load i32, ptr %9, align 4, !tbaa !9
  %37 = load i32, ptr %8, align 4, !tbaa !9
  %38 = mul i32 6, %37
  %39 = add i32 %36, %38
  %40 = zext i32 %39 to i64
  %41 = getelementptr inbounds [132 x i8], ptr %7, i64 0, i64 %40
  %42 = load i8, ptr %41, align 1, !tbaa !11
  %43 = load i32, ptr %9, align 4, !tbaa !9
  %44 = zext i32 %43 to i64
  %45 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %44
  store i8 %42, ptr %45, align 1, !tbaa !11
  br label %46

46:                                               ; preds = %35
  %47 = load i32, ptr %9, align 4, !tbaa !9
  %48 = add i32 %47, 1
  store i32 %48, ptr %9, align 4, !tbaa !9
  br label %32, !llvm.loop !12

49:                                               ; preds = %32
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %50

50:                                               ; preds = %65, %49
  %51 = load i32, ptr %9, align 4, !tbaa !9
  %52 = icmp ult i32 %51, 16
  br i1 %52, label %53, label %68

53:                                               ; preds = %50
  %54 = load i32, ptr %9, align 4, !tbaa !9
  %55 = mul i32 16, %54
  %56 = load i32, ptr %8, align 4, !tbaa !9
  %57 = add i32 %55, %56
  %58 = zext i32 %57 to i64
  %59 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %58
  %60 = load i8, ptr %59, align 1, !tbaa !11
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = add i32 %61, 6
  %63 = zext i32 %62 to i64
  %64 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %63
  store i8 %60, ptr %64, align 1, !tbaa !11
  br label %65

65:                                               ; preds = %53
  %66 = load i32, ptr %9, align 4, !tbaa !9
  %67 = add i32 %66, 1
  store i32 %67, ptr %9, align 4, !tbaa !9
  br label %50, !llvm.loop !14

68:                                               ; preds = %50
  %69 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 0
  %70 = getelementptr inbounds [22 x i8], ptr %11, i64 0, i64 0
  %71 = call i32 @spc2216_decode_sym_soft(ptr noundef %69, ptr noundef %70)
  store i32 %71, ptr %12, align 4, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %86, %68
  %73 = load i32, ptr %9, align 4, !tbaa !9
  %74 = icmp ult i32 %73, 6
  br i1 %74, label %75, label %89

75:                                               ; preds = %72
  %76 = load i32, ptr %9, align 4, !tbaa !9
  %77 = zext i32 %76 to i64
  %78 = getelementptr inbounds [22 x i8], ptr %11, i64 0, i64 %77
  %79 = load i8, ptr %78, align 1, !tbaa !11
  %80 = load i32, ptr %9, align 4, !tbaa !9
  %81 = load i32, ptr %8, align 4, !tbaa !9
  %82 = mul i32 6, %81
  %83 = add i32 %80, %82
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds [132 x i8], ptr %7, i64 0, i64 %84
  store i8 %79, ptr %85, align 1, !tbaa !11
  br label %86

86:                                               ; preds = %75
  %87 = load i32, ptr %9, align 4, !tbaa !9
  %88 = add i32 %87, 1
  store i32 %88, ptr %9, align 4, !tbaa !9
  br label %72, !llvm.loop !15

89:                                               ; preds = %72
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %90

90:                                               ; preds = %105, %89
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = icmp ult i32 %91, 16
  br i1 %92, label %93, label %108

93:                                               ; preds = %90
  %94 = load i32, ptr %9, align 4, !tbaa !9
  %95 = add i32 %94, 6
  %96 = zext i32 %95 to i64
  %97 = getelementptr inbounds [22 x i8], ptr %11, i64 0, i64 %96
  %98 = load i8, ptr %97, align 1, !tbaa !11
  %99 = load i32, ptr %9, align 4, !tbaa !9
  %100 = mul i32 16, %99
  %101 = load i32, ptr %8, align 4, !tbaa !9
  %102 = add i32 %100, %101
  %103 = zext i32 %102 to i64
  %104 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %103
  store i8 %98, ptr %104, align 1, !tbaa !11
  br label %105

105:                                              ; preds = %93
  %106 = load i32, ptr %9, align 4, !tbaa !9
  %107 = add i32 %106, 1
  store i32 %107, ptr %9, align 4, !tbaa !9
  br label %90, !llvm.loop !16

108:                                              ; preds = %90
  br label %109

109:                                              ; preds = %108
  %110 = load i32, ptr %8, align 4, !tbaa !9
  %111 = add i32 %110, 1
  store i32 %111, ptr %8, align 4, !tbaa !9
  br label %28, !llvm.loop !17

112:                                              ; preds = %28
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %196, %112
  %114 = load i32, ptr %8, align 4, !tbaa !9
  %115 = icmp ult i32 %114, 6
  br i1 %115, label %116, label %199

116:                                              ; preds = %113
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %132, %116
  %118 = load i32, ptr %9, align 4, !tbaa !9
  %119 = icmp ult i32 %118, 6
  br i1 %119, label %120, label %135

120:                                              ; preds = %117
  %121 = load i32, ptr %9, align 4, !tbaa !9
  %122 = load i32, ptr %8, align 4, !tbaa !9
  %123 = add i32 %122, 16
  %124 = mul i32 6, %123
  %125 = add i32 %121, %124
  %126 = zext i32 %125 to i64
  %127 = getelementptr inbounds [132 x i8], ptr %7, i64 0, i64 %126
  %128 = load i8, ptr %127, align 1, !tbaa !11
  %129 = load i32, ptr %9, align 4, !tbaa !9
  %130 = zext i32 %129 to i64
  %131 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %130
  store i8 %128, ptr %131, align 1, !tbaa !11
  br label %132

132:                                              ; preds = %120
  %133 = load i32, ptr %9, align 4, !tbaa !9
  %134 = add i32 %133, 1
  store i32 %134, ptr %9, align 4, !tbaa !9
  br label %117, !llvm.loop !18

135:                                              ; preds = %117
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %151, %135
  %137 = load i32, ptr %9, align 4, !tbaa !9
  %138 = icmp ult i32 %137, 16
  br i1 %138, label %139, label %154

139:                                              ; preds = %136
  %140 = load i32, ptr %9, align 4, !tbaa !9
  %141 = mul i32 6, %140
  %142 = load i32, ptr %8, align 4, !tbaa !9
  %143 = add i32 %141, %142
  %144 = zext i32 %143 to i64
  %145 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 %144
  %146 = load i8, ptr %145, align 1, !tbaa !11
  %147 = load i32, ptr %9, align 4, !tbaa !9
  %148 = add i32 %147, 6
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %149
  store i8 %146, ptr %150, align 1, !tbaa !11
  br label %151

151:                                              ; preds = %139
  %152 = load i32, ptr %9, align 4, !tbaa !9
  %153 = add i32 %152, 1
  store i32 %153, ptr %9, align 4, !tbaa !9
  br label %136, !llvm.loop !19

154:                                              ; preds = %136
  %155 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 0
  %156 = getelementptr inbounds [22 x i8], ptr %11, i64 0, i64 0
  %157 = call i32 @spc2216_decode_sym_soft(ptr noundef %155, ptr noundef %156)
  store i32 %157, ptr %12, align 4, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %173, %154
  %159 = load i32, ptr %9, align 4, !tbaa !9
  %160 = icmp ult i32 %159, 6
  br i1 %160, label %161, label %176

161:                                              ; preds = %158
  %162 = load i32, ptr %9, align 4, !tbaa !9
  %163 = zext i32 %162 to i64
  %164 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %163
  %165 = load i8, ptr %164, align 1, !tbaa !11
  %166 = load i32, ptr %9, align 4, !tbaa !9
  %167 = load i32, ptr %8, align 4, !tbaa !9
  %168 = add i32 %167, 16
  %169 = mul i32 6, %168
  %170 = add i32 %166, %169
  %171 = zext i32 %170 to i64
  %172 = getelementptr inbounds [132 x i8], ptr %7, i64 0, i64 %171
  store i8 %165, ptr %172, align 1, !tbaa !11
  br label %173

173:                                              ; preds = %161
  %174 = load i32, ptr %9, align 4, !tbaa !9
  %175 = add i32 %174, 1
  store i32 %175, ptr %9, align 4, !tbaa !9
  br label %158, !llvm.loop !20

176:                                              ; preds = %158
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %177

177:                                              ; preds = %192, %176
  %178 = load i32, ptr %9, align 4, !tbaa !9
  %179 = icmp ult i32 %178, 16
  br i1 %179, label %180, label %195

180:                                              ; preds = %177
  %181 = load i32, ptr %9, align 4, !tbaa !9
  %182 = add i32 %181, 6
  %183 = zext i32 %182 to i64
  %184 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %183
  %185 = load i8, ptr %184, align 1, !tbaa !11
  %186 = load i32, ptr %9, align 4, !tbaa !9
  %187 = mul i32 6, %186
  %188 = load i32, ptr %8, align 4, !tbaa !9
  %189 = add i32 %187, %188
  %190 = zext i32 %189 to i64
  %191 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 %190
  store i8 %185, ptr %191, align 1, !tbaa !11
  br label %192

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

195:                                              ; preds = %177
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %8, align 4, !tbaa !9
  %198 = add i32 %197, 1
  store i32 %198, ptr %8, align 4, !tbaa !9
  br label %113, !llvm.loop !22

199:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 0, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %200

200:                                              ; preds = %287, %199
  %201 = load i32, ptr %8, align 4, !tbaa !9
  %202 = icmp ult i32 %201, 16
  br i1 %202, label %203, label %290

203:                                              ; preds = %200
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %218, %203
  %205 = load i32, ptr %9, align 4, !tbaa !9
  %206 = icmp ult i32 %205, 6
  br i1 %206, label %207, label %221

207:                                              ; preds = %204
  %208 = load i32, ptr %8, align 4, !tbaa !9
  %209 = mul i32 6, %208
  %210 = load i32, ptr %9, align 4, !tbaa !9
  %211 = add i32 %209, %210
  %212 = zext i32 %211 to i64
  %213 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 %212
  %214 = load i8, ptr %213, align 1, !tbaa !11
  %215 = load i32, ptr %9, align 4, !tbaa !9
  %216 = zext i32 %215 to i64
  %217 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %216
  store i8 %214, ptr %217, align 1, !tbaa !11
  br label %218

218:                                              ; preds = %207
  %219 = load i32, ptr %9, align 4, !tbaa !9
  %220 = add i32 %219, 1
  store i32 %220, ptr %9, align 4, !tbaa !9
  br label %204, !llvm.loop !23

221:                                              ; preds = %204
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %237, %221
  %223 = load i32, ptr %9, align 4, !tbaa !9
  %224 = icmp ult i32 %223, 16
  br i1 %224, label %225, label %240

225:                                              ; preds = %222
  %226 = load i32, ptr %8, align 4, !tbaa !9
  %227 = mul i32 16, %226
  %228 = load i32, ptr %9, align 4, !tbaa !9
  %229 = add i32 %227, %228
  %230 = zext i32 %229 to i64
  %231 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %230
  %232 = load i8, ptr %231, align 1, !tbaa !11
  %233 = load i32, ptr %9, align 4, !tbaa !9
  %234 = add i32 %233, 6
  %235 = zext i32 %234 to i64
  %236 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %235
  store i8 %232, ptr %236, align 1, !tbaa !11
  br label %237

237:                                              ; preds = %225
  %238 = load i32, ptr %9, align 4, !tbaa !9
  %239 = add i32 %238, 1
  store i32 %239, ptr %9, align 4, !tbaa !9
  br label %222, !llvm.loop !24

240:                                              ; preds = %222
  %241 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 0
  %242 = getelementptr inbounds [22 x i8], ptr %11, i64 0, i64 0
  %243 = call i32 @spc2216_decode_sym_soft(ptr noundef %241, ptr noundef %242)
  store i32 %243, ptr %12, align 4, !tbaa !9
  %244 = load i32, ptr %12, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 0
  %246 = zext i1 %245 to i64
  %247 = select i1 %245, i32 0, i32 1
  %248 = load i32, ptr %14, align 4, !tbaa !9
  %249 = add i32 %248, %247
  store i32 %249, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %264, %240
  %251 = load i32, ptr %9, align 4, !tbaa !9
  %252 = icmp ult i32 %251, 6
  br i1 %252, label %253, label %267

253:                                              ; preds = %250
  %254 = load i32, ptr %9, align 4, !tbaa !9
  %255 = zext i32 %254 to i64
  %256 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %255
  %257 = load i8, ptr %256, align 1, !tbaa !11
  %258 = load i32, ptr %8, align 4, !tbaa !9
  %259 = mul i32 6, %258
  %260 = load i32, ptr %9, align 4, !tbaa !9
  %261 = add i32 %259, %260
  %262 = zext i32 %261 to i64
  %263 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 %262
  store i8 %257, ptr %263, align 1, !tbaa !11
  br label %264

264:                                              ; preds = %253
  %265 = load i32, ptr %9, align 4, !tbaa !9
  %266 = add i32 %265, 1
  store i32 %266, ptr %9, align 4, !tbaa !9
  br label %250, !llvm.loop !25

267:                                              ; preds = %250
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %283, %267
  %269 = load i32, ptr %9, align 4, !tbaa !9
  %270 = icmp ult i32 %269, 16
  br i1 %270, label %271, label %286

271:                                              ; preds = %268
  %272 = load i32, ptr %9, align 4, !tbaa !9
  %273 = add i32 %272, 6
  %274 = zext i32 %273 to i64
  %275 = getelementptr inbounds [22 x i8], ptr %10, i64 0, i64 %274
  %276 = load i8, ptr %275, align 1, !tbaa !11
  %277 = load i32, ptr %8, align 4, !tbaa !9
  %278 = mul i32 16, %277
  %279 = load i32, ptr %9, align 4, !tbaa !9
  %280 = add i32 %278, %279
  %281 = zext i32 %280 to i64
  %282 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %281
  store i8 %276, ptr %282, align 1, !tbaa !11
  br label %283

283:                                              ; preds = %271
  %284 = load i32, ptr %9, align 4, !tbaa !9
  %285 = add i32 %284, 1
  store i32 %285, ptr %9, align 4, !tbaa !9
  br label %268, !llvm.loop !26

286:                                              ; preds = %268
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %8, align 4, !tbaa !9
  %289 = add i32 %288, 1
  store i32 %289, ptr %8, align 4, !tbaa !9
  br label %200, !llvm.loop !27

290:                                              ; preds = %200
  %291 = load i32, ptr %14, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %293, label %294

293:                                              ; preds = %290
  store i32 2, ptr %15, align 4
  br label %295

294:                                              ; preds = %290
  store i32 0, ptr %15, align 4
  br label %295

295:                                              ; preds = %294, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  %296 = load i32, ptr %15, align 4
  switch i32 %296, label %642 [
    i32 0, label %297
    i32 2, label %301
  ]

297:                                              ; preds = %295
  br label %298

298:                                              ; preds = %297
  %299 = load i32, ptr %13, align 4, !tbaa !9
  %300 = add i32 %299, 1
  store i32 %300, ptr %13, align 4, !tbaa !9
  br label %24, !llvm.loop !28

301:                                              ; preds = %295, %24
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %638, %301
  %303 = load i32, ptr %8, align 4, !tbaa !9
  %304 = icmp ult i32 %303, 16
  br i1 %304, label %305, label %641

305:                                              ; preds = %302
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = load i32, ptr %8, align 4, !tbaa !9
  %308 = mul i32 2, %307
  %309 = add i32 %308, 0
  %310 = zext i32 %309 to i64
  %311 = getelementptr inbounds i8, ptr %306, i64 %310
  store i8 0, ptr %311, align 1, !tbaa !11
  %312 = load i32, ptr %8, align 4, !tbaa !9
  %313 = mul i32 16, %312
  %314 = add i32 %313, 0
  %315 = zext i32 %314 to i64
  %316 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %315
  %317 = load i8, ptr %316, align 1, !tbaa !11
  %318 = zext i8 %317 to i32
  %319 = icmp sgt i32 %318, 128
  %320 = zext i1 %319 to i64
  %321 = select i1 %319, i32 128, i32 0
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = load i32, ptr %8, align 4, !tbaa !9
  %324 = mul i32 2, %323
  %325 = add i32 %324, 0
  %326 = zext i32 %325 to i64
  %327 = getelementptr inbounds i8, ptr %322, i64 %326
  %328 = load i8, ptr %327, align 1, !tbaa !11
  %329 = zext i8 %328 to i32
  %330 = or i32 %329, %321
  %331 = trunc i32 %330 to i8
  store i8 %331, ptr %327, align 1, !tbaa !11
  %332 = load i32, ptr %8, align 4, !tbaa !9
  %333 = mul i32 16, %332
  %334 = add i32 %333, 1
  %335 = zext i32 %334 to i64
  %336 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %335
  %337 = load i8, ptr %336, align 1, !tbaa !11
  %338 = zext i8 %337 to i32
  %339 = icmp sgt i32 %338, 128
  %340 = zext i1 %339 to i64
  %341 = select i1 %339, i32 64, i32 0
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = load i32, ptr %8, align 4, !tbaa !9
  %344 = mul i32 2, %343
  %345 = add i32 %344, 0
  %346 = zext i32 %345 to i64
  %347 = getelementptr inbounds i8, ptr %342, i64 %346
  %348 = load i8, ptr %347, align 1, !tbaa !11
  %349 = zext i8 %348 to i32
  %350 = or i32 %349, %341
  %351 = trunc i32 %350 to i8
  store i8 %351, ptr %347, align 1, !tbaa !11
  %352 = load i32, ptr %8, align 4, !tbaa !9
  %353 = mul i32 16, %352
  %354 = add i32 %353, 2
  %355 = zext i32 %354 to i64
  %356 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %355
  %357 = load i8, ptr %356, align 1, !tbaa !11
  %358 = zext i8 %357 to i32
  %359 = icmp sgt i32 %358, 128
  %360 = zext i1 %359 to i64
  %361 = select i1 %359, i32 32, i32 0
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = load i32, ptr %8, align 4, !tbaa !9
  %364 = mul i32 2, %363
  %365 = add i32 %364, 0
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds i8, ptr %362, i64 %366
  %368 = load i8, ptr %367, align 1, !tbaa !11
  %369 = zext i8 %368 to i32
  %370 = or i32 %369, %361
  %371 = trunc i32 %370 to i8
  store i8 %371, ptr %367, align 1, !tbaa !11
  %372 = load i32, ptr %8, align 4, !tbaa !9
  %373 = mul i32 16, %372
  %374 = add i32 %373, 3
  %375 = zext i32 %374 to i64
  %376 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %375
  %377 = load i8, ptr %376, align 1, !tbaa !11
  %378 = zext i8 %377 to i32
  %379 = icmp sgt i32 %378, 128
  %380 = zext i1 %379 to i64
  %381 = select i1 %379, i32 16, i32 0
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = load i32, ptr %8, align 4, !tbaa !9
  %384 = mul i32 2, %383
  %385 = add i32 %384, 0
  %386 = zext i32 %385 to i64
  %387 = getelementptr inbounds i8, ptr %382, i64 %386
  %388 = load i8, ptr %387, align 1, !tbaa !11
  %389 = zext i8 %388 to i32
  %390 = or i32 %389, %381
  %391 = trunc i32 %390 to i8
  store i8 %391, ptr %387, align 1, !tbaa !11
  %392 = load i32, ptr %8, align 4, !tbaa !9
  %393 = mul i32 16, %392
  %394 = add i32 %393, 4
  %395 = zext i32 %394 to i64
  %396 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %395
  %397 = load i8, ptr %396, align 1, !tbaa !11
  %398 = zext i8 %397 to i32
  %399 = icmp sgt i32 %398, 128
  %400 = zext i1 %399 to i64
  %401 = select i1 %399, i32 8, i32 0
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = load i32, ptr %8, align 4, !tbaa !9
  %404 = mul i32 2, %403
  %405 = add i32 %404, 0
  %406 = zext i32 %405 to i64
  %407 = getelementptr inbounds i8, ptr %402, i64 %406
  %408 = load i8, ptr %407, align 1, !tbaa !11
  %409 = zext i8 %408 to i32
  %410 = or i32 %409, %401
  %411 = trunc i32 %410 to i8
  store i8 %411, ptr %407, align 1, !tbaa !11
  %412 = load i32, ptr %8, align 4, !tbaa !9
  %413 = mul i32 16, %412
  %414 = add i32 %413, 5
  %415 = zext i32 %414 to i64
  %416 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %415
  %417 = load i8, ptr %416, align 1, !tbaa !11
  %418 = zext i8 %417 to i32
  %419 = icmp sgt i32 %418, 128
  %420 = zext i1 %419 to i64
  %421 = select i1 %419, i32 4, i32 0
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  %423 = load i32, ptr %8, align 4, !tbaa !9
  %424 = mul i32 2, %423
  %425 = add i32 %424, 0
  %426 = zext i32 %425 to i64
  %427 = getelementptr inbounds i8, ptr %422, i64 %426
  %428 = load i8, ptr %427, align 1, !tbaa !11
  %429 = zext i8 %428 to i32
  %430 = or i32 %429, %421
  %431 = trunc i32 %430 to i8
  store i8 %431, ptr %427, align 1, !tbaa !11
  %432 = load i32, ptr %8, align 4, !tbaa !9
  %433 = mul i32 16, %432
  %434 = add i32 %433, 6
  %435 = zext i32 %434 to i64
  %436 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %435
  %437 = load i8, ptr %436, align 1, !tbaa !11
  %438 = zext i8 %437 to i32
  %439 = icmp sgt i32 %438, 128
  %440 = zext i1 %439 to i64
  %441 = select i1 %439, i32 2, i32 0
  %442 = load ptr, ptr %4, align 8, !tbaa !5
  %443 = load i32, ptr %8, align 4, !tbaa !9
  %444 = mul i32 2, %443
  %445 = add i32 %444, 0
  %446 = zext i32 %445 to i64
  %447 = getelementptr inbounds i8, ptr %442, i64 %446
  %448 = load i8, ptr %447, align 1, !tbaa !11
  %449 = zext i8 %448 to i32
  %450 = or i32 %449, %441
  %451 = trunc i32 %450 to i8
  store i8 %451, ptr %447, align 1, !tbaa !11
  %452 = load i32, ptr %8, align 4, !tbaa !9
  %453 = mul i32 16, %452
  %454 = add i32 %453, 7
  %455 = zext i32 %454 to i64
  %456 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %455
  %457 = load i8, ptr %456, align 1, !tbaa !11
  %458 = zext i8 %457 to i32
  %459 = icmp sgt i32 %458, 128
  %460 = zext i1 %459 to i64
  %461 = select i1 %459, i32 1, i32 0
  %462 = load ptr, ptr %4, align 8, !tbaa !5
  %463 = load i32, ptr %8, align 4, !tbaa !9
  %464 = mul i32 2, %463
  %465 = add i32 %464, 0
  %466 = zext i32 %465 to i64
  %467 = getelementptr inbounds i8, ptr %462, i64 %466
  %468 = load i8, ptr %467, align 1, !tbaa !11
  %469 = zext i8 %468 to i32
  %470 = or i32 %469, %461
  %471 = trunc i32 %470 to i8
  store i8 %471, ptr %467, align 1, !tbaa !11
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = load i32, ptr %8, align 4, !tbaa !9
  %474 = mul i32 2, %473
  %475 = add i32 %474, 1
  %476 = zext i32 %475 to i64
  %477 = getelementptr inbounds i8, ptr %472, i64 %476
  store i8 0, ptr %477, align 1, !tbaa !11
  %478 = load i32, ptr %8, align 4, !tbaa !9
  %479 = mul i32 16, %478
  %480 = add i32 %479, 8
  %481 = zext i32 %480 to i64
  %482 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %481
  %483 = load i8, ptr %482, align 1, !tbaa !11
  %484 = zext i8 %483 to i32
  %485 = icmp sgt i32 %484, 128
  %486 = zext i1 %485 to i64
  %487 = select i1 %485, i32 128, i32 0
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = load i32, ptr %8, align 4, !tbaa !9
  %490 = mul i32 2, %489
  %491 = add i32 %490, 1
  %492 = zext i32 %491 to i64
  %493 = getelementptr inbounds i8, ptr %488, i64 %492
  %494 = load i8, ptr %493, align 1, !tbaa !11
  %495 = zext i8 %494 to i32
  %496 = or i32 %495, %487
  %497 = trunc i32 %496 to i8
  store i8 %497, ptr %493, align 1, !tbaa !11
  %498 = load i32, ptr %8, align 4, !tbaa !9
  %499 = mul i32 16, %498
  %500 = add i32 %499, 9
  %501 = zext i32 %500 to i64
  %502 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %501
  %503 = load i8, ptr %502, align 1, !tbaa !11
  %504 = zext i8 %503 to i32
  %505 = icmp sgt i32 %504, 128
  %506 = zext i1 %505 to i64
  %507 = select i1 %505, i32 64, i32 0
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = load i32, ptr %8, align 4, !tbaa !9
  %510 = mul i32 2, %509
  %511 = add i32 %510, 1
  %512 = zext i32 %511 to i64
  %513 = getelementptr inbounds i8, ptr %508, i64 %512
  %514 = load i8, ptr %513, align 1, !tbaa !11
  %515 = zext i8 %514 to i32
  %516 = or i32 %515, %507
  %517 = trunc i32 %516 to i8
  store i8 %517, ptr %513, align 1, !tbaa !11
  %518 = load i32, ptr %8, align 4, !tbaa !9
  %519 = mul i32 16, %518
  %520 = add i32 %519, 10
  %521 = zext i32 %520 to i64
  %522 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %521
  %523 = load i8, ptr %522, align 1, !tbaa !11
  %524 = zext i8 %523 to i32
  %525 = icmp sgt i32 %524, 128
  %526 = zext i1 %525 to i64
  %527 = select i1 %525, i32 32, i32 0
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = load i32, ptr %8, align 4, !tbaa !9
  %530 = mul i32 2, %529
  %531 = add i32 %530, 1
  %532 = zext i32 %531 to i64
  %533 = getelementptr inbounds i8, ptr %528, i64 %532
  %534 = load i8, ptr %533, align 1, !tbaa !11
  %535 = zext i8 %534 to i32
  %536 = or i32 %535, %527
  %537 = trunc i32 %536 to i8
  store i8 %537, ptr %533, align 1, !tbaa !11
  %538 = load i32, ptr %8, align 4, !tbaa !9
  %539 = mul i32 16, %538
  %540 = add i32 %539, 11
  %541 = zext i32 %540 to i64
  %542 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %541
  %543 = load i8, ptr %542, align 1, !tbaa !11
  %544 = zext i8 %543 to i32
  %545 = icmp sgt i32 %544, 128
  %546 = zext i1 %545 to i64
  %547 = select i1 %545, i32 16, i32 0
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = load i32, ptr %8, align 4, !tbaa !9
  %550 = mul i32 2, %549
  %551 = add i32 %550, 1
  %552 = zext i32 %551 to i64
  %553 = getelementptr inbounds i8, ptr %548, i64 %552
  %554 = load i8, ptr %553, align 1, !tbaa !11
  %555 = zext i8 %554 to i32
  %556 = or i32 %555, %547
  %557 = trunc i32 %556 to i8
  store i8 %557, ptr %553, align 1, !tbaa !11
  %558 = load i32, ptr %8, align 4, !tbaa !9
  %559 = mul i32 16, %558
  %560 = add i32 %559, 12
  %561 = zext i32 %560 to i64
  %562 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %561
  %563 = load i8, ptr %562, align 1, !tbaa !11
  %564 = zext i8 %563 to i32
  %565 = icmp sgt i32 %564, 128
  %566 = zext i1 %565 to i64
  %567 = select i1 %565, i32 8, i32 0
  %568 = load ptr, ptr %4, align 8, !tbaa !5
  %569 = load i32, ptr %8, align 4, !tbaa !9
  %570 = mul i32 2, %569
  %571 = add i32 %570, 1
  %572 = zext i32 %571 to i64
  %573 = getelementptr inbounds i8, ptr %568, i64 %572
  %574 = load i8, ptr %573, align 1, !tbaa !11
  %575 = zext i8 %574 to i32
  %576 = or i32 %575, %567
  %577 = trunc i32 %576 to i8
  store i8 %577, ptr %573, align 1, !tbaa !11
  %578 = load i32, ptr %8, align 4, !tbaa !9
  %579 = mul i32 16, %578
  %580 = add i32 %579, 13
  %581 = zext i32 %580 to i64
  %582 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %581
  %583 = load i8, ptr %582, align 1, !tbaa !11
  %584 = zext i8 %583 to i32
  %585 = icmp sgt i32 %584, 128
  %586 = zext i1 %585 to i64
  %587 = select i1 %585, i32 4, i32 0
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = load i32, ptr %8, align 4, !tbaa !9
  %590 = mul i32 2, %589
  %591 = add i32 %590, 1
  %592 = zext i32 %591 to i64
  %593 = getelementptr inbounds i8, ptr %588, i64 %592
  %594 = load i8, ptr %593, align 1, !tbaa !11
  %595 = zext i8 %594 to i32
  %596 = or i32 %595, %587
  %597 = trunc i32 %596 to i8
  store i8 %597, ptr %593, align 1, !tbaa !11
  %598 = load i32, ptr %8, align 4, !tbaa !9
  %599 = mul i32 16, %598
  %600 = add i32 %599, 14
  %601 = zext i32 %600 to i64
  %602 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %601
  %603 = load i8, ptr %602, align 1, !tbaa !11
  %604 = zext i8 %603 to i32
  %605 = icmp sgt i32 %604, 128
  %606 = zext i1 %605 to i64
  %607 = select i1 %605, i32 2, i32 0
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = load i32, ptr %8, align 4, !tbaa !9
  %610 = mul i32 2, %609
  %611 = add i32 %610, 1
  %612 = zext i32 %611 to i64
  %613 = getelementptr inbounds i8, ptr %608, i64 %612
  %614 = load i8, ptr %613, align 1, !tbaa !11
  %615 = zext i8 %614 to i32
  %616 = or i32 %615, %607
  %617 = trunc i32 %616 to i8
  store i8 %617, ptr %613, align 1, !tbaa !11
  %618 = load i32, ptr %8, align 4, !tbaa !9
  %619 = mul i32 16, %618
  %620 = add i32 %619, 15
  %621 = zext i32 %620 to i64
  %622 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %621
  %623 = load i8, ptr %622, align 1, !tbaa !11
  %624 = zext i8 %623 to i32
  %625 = icmp sgt i32 %624, 128
  %626 = zext i1 %625 to i64
  %627 = select i1 %625, i32 1, i32 0
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = load i32, ptr %8, align 4, !tbaa !9
  %630 = mul i32 2, %629
  %631 = add i32 %630, 1
  %632 = zext i32 %631 to i64
  %633 = getelementptr inbounds i8, ptr %628, i64 %632
  %634 = load i8, ptr %633, align 1, !tbaa !11
  %635 = zext i8 %634 to i32
  %636 = or i32 %635, %627
  %637 = trunc i32 %636 to i8
  store i8 %637, ptr %633, align 1, !tbaa !11
  br label %638

638:                                              ; preds = %305
  %639 = load i32, ptr %8, align 4, !tbaa !9
  %640 = add i32 %639, 1
  store i32 %640, ptr %8, align 4, !tbaa !9
  br label %302, !llvm.loop !29

641:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 22, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 22, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 132, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #3
  ret void

642:                                              ; preds = %295
  unreachable
}

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @spc2216_decode_sym_soft(ptr noundef, ptr noundef) #1

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}


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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @spc2216_decode_soft(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1) local_unnamed_addr #1 {
  %3 = alloca [256 x i8], align 16
  %4 = alloca [96 x i8], align 16
  %5 = alloca [132 x i8], align 16
  %6 = alloca [22 x i8], align 16
  %7 = alloca [22 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) #3
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #3
  call void @llvm.lifetime.start.p0(i64 132, ptr nonnull %5) #3
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %3, ptr noundef nonnull align 1 dereferenceable(256) %0, i64 256, i1 false)
  %8 = getelementptr inbounds i8, ptr %0, i64 256
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %4, ptr noundef nonnull align 1 dereferenceable(96) %8, i64 96, i1 false)
  %9 = getelementptr inbounds i8, ptr %0, i64 352
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(132) %5, ptr noundef nonnull align 1 dereferenceable(132) %9, i64 132, i1 false)
  call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %6) #3
  call void @llvm.lifetime.start.p0(i64 22, ptr nonnull %7) #3
  %scevgep186 = getelementptr inbounds i8, ptr %6, i64 6
  %10 = getelementptr inbounds i8, ptr %7, i64 6
  %11 = getelementptr inbounds i8, ptr %6, i64 7
  %12 = getelementptr inbounds i8, ptr %6, i64 8
  %13 = getelementptr inbounds i8, ptr %6, i64 9
  %14 = getelementptr inbounds i8, ptr %6, i64 10
  %15 = getelementptr inbounds i8, ptr %6, i64 11
  %16 = getelementptr inbounds i8, ptr %6, i64 12
  %17 = getelementptr inbounds i8, ptr %6, i64 13
  %18 = getelementptr inbounds i8, ptr %6, i64 14
  %19 = getelementptr inbounds i8, ptr %6, i64 15
  %20 = getelementptr inbounds i8, ptr %6, i64 16
  %21 = getelementptr inbounds i8, ptr %6, i64 17
  %22 = getelementptr inbounds i8, ptr %6, i64 18
  %23 = getelementptr inbounds i8, ptr %6, i64 19
  %24 = getelementptr inbounds i8, ptr %6, i64 20
  %25 = getelementptr inbounds i8, ptr %6, i64 21
  %26 = getelementptr inbounds i8, ptr %7, i64 7
  %27 = getelementptr inbounds i8, ptr %7, i64 8
  %28 = getelementptr inbounds i8, ptr %7, i64 9
  %29 = getelementptr inbounds i8, ptr %7, i64 10
  %30 = getelementptr inbounds i8, ptr %7, i64 11
  %31 = getelementptr inbounds i8, ptr %7, i64 12
  %32 = getelementptr inbounds i8, ptr %7, i64 13
  %33 = getelementptr inbounds i8, ptr %7, i64 14
  %34 = getelementptr inbounds i8, ptr %7, i64 15
  %35 = getelementptr inbounds i8, ptr %7, i64 16
  %36 = getelementptr inbounds i8, ptr %7, i64 17
  %37 = getelementptr inbounds i8, ptr %7, i64 18
  %38 = getelementptr inbounds i8, ptr %7, i64 19
  %39 = getelementptr inbounds i8, ptr %7, i64 20
  %40 = getelementptr inbounds i8, ptr %7, i64 21
  %41 = getelementptr inbounds i8, ptr %6, i64 7
  %42 = getelementptr inbounds i8, ptr %6, i64 8
  %43 = getelementptr inbounds i8, ptr %6, i64 9
  %44 = getelementptr inbounds i8, ptr %6, i64 10
  %45 = getelementptr inbounds i8, ptr %6, i64 11
  %46 = getelementptr inbounds i8, ptr %6, i64 12
  %47 = getelementptr inbounds i8, ptr %6, i64 13
  %48 = getelementptr inbounds i8, ptr %6, i64 14
  %49 = getelementptr inbounds i8, ptr %6, i64 15
  %50 = getelementptr inbounds i8, ptr %6, i64 16
  %51 = getelementptr inbounds i8, ptr %6, i64 17
  %52 = getelementptr inbounds i8, ptr %6, i64 18
  %53 = getelementptr inbounds i8, ptr %6, i64 19
  %54 = getelementptr inbounds i8, ptr %6, i64 20
  %55 = getelementptr inbounds i8, ptr %6, i64 21
  %invariant.gep = getelementptr inbounds i8, ptr %5, i64 96
  br label %.preheader145

.preheader145:                                    ; preds = %192, %2
  %.0129162 = phi i32 [ 0, %2 ], [ %194, %192 ]
  br label %.preheader142

.preheader142:                                    ; preds = %.preheader145, %.preheader142
  %indvar = phi i64 [ 0, %.preheader145 ], [ %indvar.next, %.preheader142 ]
  %56 = mul nuw nsw i64 %indvar, 6
  %scevgep166 = getelementptr i8, ptr %5, i64 %56
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(6) %6, ptr noundef nonnull align 2 dereferenceable(6) %scevgep166, i64 6, i1 false), !tbaa !5
  %57 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %indvar
  %58 = load i8, ptr %57, align 1, !tbaa !5
  store i8 %58, ptr %scevgep186, align 2, !tbaa !5
  %59 = add nuw nsw i64 %indvar, 16
  %60 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %59
  %61 = load i8, ptr %60, align 1, !tbaa !5
  store i8 %61, ptr %11, align 1, !tbaa !5
  %62 = add nuw nsw i64 %indvar, 32
  %63 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %62
  %64 = load i8, ptr %63, align 1, !tbaa !5
  store i8 %64, ptr %12, align 8, !tbaa !5
  %65 = add nuw nsw i64 %indvar, 48
  %66 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %65
  %67 = load i8, ptr %66, align 1, !tbaa !5
  store i8 %67, ptr %13, align 1, !tbaa !5
  %68 = add nuw nsw i64 %indvar, 64
  %69 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %68
  %70 = load i8, ptr %69, align 1, !tbaa !5
  store i8 %70, ptr %14, align 2, !tbaa !5
  %71 = add nuw nsw i64 %indvar, 80
  %72 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %71
  %73 = load i8, ptr %72, align 1, !tbaa !5
  store i8 %73, ptr %15, align 1, !tbaa !5
  %74 = add nuw nsw i64 %indvar, 96
  %75 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %74
  %76 = load i8, ptr %75, align 1, !tbaa !5
  store i8 %76, ptr %16, align 4, !tbaa !5
  %77 = add nuw nsw i64 %indvar, 112
  %78 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %77
  %79 = load i8, ptr %78, align 1, !tbaa !5
  store i8 %79, ptr %17, align 1, !tbaa !5
  %80 = add nuw nsw i64 %indvar, 128
  %81 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %80
  %82 = load i8, ptr %81, align 1, !tbaa !5
  store i8 %82, ptr %18, align 2, !tbaa !5
  %83 = add nuw nsw i64 %indvar, 144
  %84 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %83
  %85 = load i8, ptr %84, align 1, !tbaa !5
  store i8 %85, ptr %19, align 1, !tbaa !5
  %86 = add nuw nsw i64 %indvar, 160
  %87 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %86
  %88 = load i8, ptr %87, align 1, !tbaa !5
  store i8 %88, ptr %20, align 16, !tbaa !5
  %89 = add nuw nsw i64 %indvar, 176
  %90 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %89
  %91 = load i8, ptr %90, align 1, !tbaa !5
  store i8 %91, ptr %21, align 1, !tbaa !5
  %92 = add nuw nsw i64 %indvar, 192
  %93 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %92
  %94 = load i8, ptr %93, align 1, !tbaa !5
  store i8 %94, ptr %22, align 2, !tbaa !5
  %95 = add nuw nsw i64 %indvar, 208
  %96 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %95
  %97 = load i8, ptr %96, align 1, !tbaa !5
  store i8 %97, ptr %23, align 1, !tbaa !5
  %98 = add nuw nsw i64 %indvar, 224
  %99 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %98
  %100 = load i8, ptr %99, align 1, !tbaa !5
  store i8 %100, ptr %24, align 4, !tbaa !5
  %101 = add nuw nsw i64 %indvar, 240
  %102 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %101
  %103 = load i8, ptr %102, align 1, !tbaa !5
  store i8 %103, ptr %25, align 1, !tbaa !5
  %104 = call i32 @spc2216_decode_sym_soft(ptr noundef nonnull %6, ptr noundef nonnull %7)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %scevgep166, ptr noundef nonnull align 16 dereferenceable(6) %7, i64 6, i1 false), !tbaa !5
  %105 = load i8, ptr %10, align 2, !tbaa !5
  store i8 %105, ptr %57, align 1, !tbaa !5
  %106 = load i8, ptr %26, align 1, !tbaa !5
  store i8 %106, ptr %60, align 1, !tbaa !5
  %107 = load i8, ptr %27, align 8, !tbaa !5
  store i8 %107, ptr %63, align 1, !tbaa !5
  %108 = load i8, ptr %28, align 1, !tbaa !5
  store i8 %108, ptr %66, align 1, !tbaa !5
  %109 = load i8, ptr %29, align 2, !tbaa !5
  store i8 %109, ptr %69, align 1, !tbaa !5
  %110 = load i8, ptr %30, align 1, !tbaa !5
  store i8 %110, ptr %72, align 1, !tbaa !5
  %111 = load i8, ptr %31, align 4, !tbaa !5
  store i8 %111, ptr %75, align 1, !tbaa !5
  %112 = load i8, ptr %32, align 1, !tbaa !5
  store i8 %112, ptr %78, align 1, !tbaa !5
  %113 = load i8, ptr %33, align 2, !tbaa !5
  store i8 %113, ptr %81, align 1, !tbaa !5
  %114 = load i8, ptr %34, align 1, !tbaa !5
  store i8 %114, ptr %84, align 1, !tbaa !5
  %115 = load i8, ptr %35, align 16, !tbaa !5
  store i8 %115, ptr %87, align 1, !tbaa !5
  %116 = load i8, ptr %36, align 1, !tbaa !5
  store i8 %116, ptr %90, align 1, !tbaa !5
  %117 = load i8, ptr %37, align 2, !tbaa !5
  store i8 %117, ptr %93, align 1, !tbaa !5
  %118 = load i8, ptr %38, align 1, !tbaa !5
  store i8 %118, ptr %96, align 1, !tbaa !5
  %119 = load i8, ptr %39, align 4, !tbaa !5
  store i8 %119, ptr %99, align 1, !tbaa !5
  %120 = load i8, ptr %40, align 1, !tbaa !5
  store i8 %120, ptr %102, align 1, !tbaa !5
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond.not = icmp eq i64 %indvar.next, 16
  br i1 %exitcond.not, label %.preheader139, label %.preheader142, !llvm.loop !8

.preheader139:                                    ; preds = %.preheader142, %.preheader139
  %indvar170 = phi i64 [ %indvar.next171, %.preheader139 ], [ 0, %.preheader142 ]
  %121 = mul nuw nsw i64 %indvar170, 6
  %gep = getelementptr i8, ptr %invariant.gep, i64 %121
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(6) %6, ptr noundef nonnull align 2 dereferenceable(6) %gep, i64 6, i1 false), !tbaa !5
  %122 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %indvar170
  %123 = load i8, ptr %122, align 1, !tbaa !5
  store i8 %123, ptr %scevgep186, align 2, !tbaa !5
  %124 = add nuw nsw i64 %indvar170, 6
  %125 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %124
  %126 = load i8, ptr %125, align 1, !tbaa !5
  store i8 %126, ptr %41, align 1, !tbaa !5
  %127 = add nuw nsw i64 %indvar170, 12
  %128 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %127
  %129 = load i8, ptr %128, align 1, !tbaa !5
  store i8 %129, ptr %42, align 8, !tbaa !5
  %130 = add nuw nsw i64 %indvar170, 18
  %131 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %130
  %132 = load i8, ptr %131, align 1, !tbaa !5
  store i8 %132, ptr %43, align 1, !tbaa !5
  %133 = add nuw nsw i64 %indvar170, 24
  %134 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %133
  %135 = load i8, ptr %134, align 1, !tbaa !5
  store i8 %135, ptr %44, align 2, !tbaa !5
  %136 = add nuw nsw i64 %indvar170, 30
  %137 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %136
  %138 = load i8, ptr %137, align 1, !tbaa !5
  store i8 %138, ptr %45, align 1, !tbaa !5
  %139 = add nuw nsw i64 %indvar170, 36
  %140 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %139
  %141 = load i8, ptr %140, align 1, !tbaa !5
  store i8 %141, ptr %46, align 4, !tbaa !5
  %142 = add nuw nsw i64 %indvar170, 42
  %143 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %142
  %144 = load i8, ptr %143, align 1, !tbaa !5
  store i8 %144, ptr %47, align 1, !tbaa !5
  %145 = add nuw nsw i64 %indvar170, 48
  %146 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %145
  %147 = load i8, ptr %146, align 1, !tbaa !5
  store i8 %147, ptr %48, align 2, !tbaa !5
  %148 = add nuw nsw i64 %indvar170, 54
  %149 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %148
  %150 = load i8, ptr %149, align 1, !tbaa !5
  store i8 %150, ptr %49, align 1, !tbaa !5
  %151 = add nuw nsw i64 %indvar170, 60
  %152 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %151
  %153 = load i8, ptr %152, align 1, !tbaa !5
  store i8 %153, ptr %50, align 16, !tbaa !5
  %154 = add nuw nsw i64 %indvar170, 66
  %155 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %154
  %156 = load i8, ptr %155, align 1, !tbaa !5
  store i8 %156, ptr %51, align 1, !tbaa !5
  %157 = add nuw nsw i64 %indvar170, 72
  %158 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %157
  %159 = load i8, ptr %158, align 1, !tbaa !5
  store i8 %159, ptr %52, align 2, !tbaa !5
  %160 = add nuw nsw i64 %indvar170, 78
  %161 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %160
  %162 = load i8, ptr %161, align 1, !tbaa !5
  store i8 %162, ptr %53, align 1, !tbaa !5
  %163 = add nuw nsw i64 %indvar170, 84
  %164 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %163
  %165 = load i8, ptr %164, align 1, !tbaa !5
  store i8 %165, ptr %54, align 4, !tbaa !5
  %166 = add nuw nsw i64 %indvar170, 90
  %167 = getelementptr inbounds [96 x i8], ptr %4, i64 0, i64 %166
  %168 = load i8, ptr %167, align 1, !tbaa !5
  store i8 %168, ptr %55, align 1, !tbaa !5
  %169 = call i32 @spc2216_decode_sym_soft(ptr noundef nonnull %6, ptr noundef nonnull %7)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %gep, ptr noundef nonnull align 16 dereferenceable(6) %6, i64 6, i1 false), !tbaa !5
  %170 = load i8, ptr %scevgep186, align 2, !tbaa !5
  store i8 %170, ptr %122, align 1, !tbaa !5
  %171 = load i8, ptr %41, align 1, !tbaa !5
  store i8 %171, ptr %125, align 1, !tbaa !5
  %172 = load i8, ptr %42, align 8, !tbaa !5
  store i8 %172, ptr %128, align 1, !tbaa !5
  %173 = load i8, ptr %43, align 1, !tbaa !5
  store i8 %173, ptr %131, align 1, !tbaa !5
  %174 = load i8, ptr %44, align 2, !tbaa !5
  store i8 %174, ptr %134, align 1, !tbaa !5
  %175 = load i8, ptr %45, align 1, !tbaa !5
  store i8 %175, ptr %137, align 1, !tbaa !5
  %176 = load i8, ptr %46, align 4, !tbaa !5
  store i8 %176, ptr %140, align 1, !tbaa !5
  %177 = load i8, ptr %47, align 1, !tbaa !5
  store i8 %177, ptr %143, align 1, !tbaa !5
  %178 = load i8, ptr %48, align 2, !tbaa !5
  store i8 %178, ptr %146, align 1, !tbaa !5
  %179 = load i8, ptr %49, align 1, !tbaa !5
  store i8 %179, ptr %149, align 1, !tbaa !5
  %180 = load i8, ptr %50, align 16, !tbaa !5
  store i8 %180, ptr %152, align 1, !tbaa !5
  %181 = load i8, ptr %51, align 1, !tbaa !5
  store i8 %181, ptr %155, align 1, !tbaa !5
  %182 = load i8, ptr %52, align 2, !tbaa !5
  store i8 %182, ptr %158, align 1, !tbaa !5
  %183 = load i8, ptr %53, align 1, !tbaa !5
  store i8 %183, ptr %161, align 1, !tbaa !5
  %184 = load i8, ptr %54, align 4, !tbaa !5
  store i8 %184, ptr %164, align 1, !tbaa !5
  %185 = load i8, ptr %55, align 1, !tbaa !5
  store i8 %185, ptr %167, align 1, !tbaa !5
  %indvar.next171 = add nuw nsw i64 %indvar170, 1
  %exitcond181.not = icmp eq i64 %indvar.next171, 6
  br i1 %exitcond181.not, label %.preheader136, label %.preheader139, !llvm.loop !10

.preheader136:                                    ; preds = %.preheader139, %.preheader136
  %indvar182 = phi i64 [ %indvar.next183, %.preheader136 ], [ 0, %.preheader139 ]
  %.0128161 = phi i32 [ %191, %.preheader136 ], [ 0, %.preheader139 ]
  %186 = shl nuw nsw i64 %indvar182, 4
  %scevgep191 = getelementptr i8, ptr %3, i64 %186
  %187 = mul nuw nsw i64 %indvar182, 6
  %scevgep189 = getelementptr i8, ptr %4, i64 %187
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(6) %6, ptr noundef nonnull align 2 dereferenceable(6) %scevgep189, i64 6, i1 false), !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(16) %scevgep186, ptr noundef nonnull align 16 dereferenceable(16) %scevgep191, i64 16, i1 false), !tbaa !5
  %188 = call i32 @spc2216_decode_sym_soft(ptr noundef nonnull %6, ptr noundef nonnull %7)
  %189 = icmp ne i32 %188, 0
  %190 = zext i1 %189 to i32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %scevgep189, ptr noundef nonnull align 16 dereferenceable(6) %6, i64 6, i1 false), !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %scevgep191, ptr noundef nonnull align 2 dereferenceable(16) %scevgep186, i64 16, i1 false), !tbaa !5
  %191 = add i32 %.0128161, %190
  %indvar.next183 = add nuw nsw i64 %indvar182, 1
  %exitcond194.not = icmp eq i64 %indvar.next183, 16
  br i1 %exitcond194.not, label %192, label %.preheader136, !llvm.loop !11

192:                                              ; preds = %.preheader136
  %193 = icmp eq i32 %191, 0
  %194 = add nuw nsw i32 %.0129162, 1
  %exitcond195.not = icmp eq i32 %194, 6
  %or.cond = select i1 %193, i1 true, i1 %exitcond195.not
  br i1 %or.cond, label %.preheader, label %.preheader145, !llvm.loop !12

.preheader:                                       ; preds = %192, %.preheader
  %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader ], [ 0, %192 ]
  %195 = shl nuw nsw i64 %indvars.iv, 1
  %196 = getelementptr inbounds i8, ptr %1, i64 %195
  %197 = shl nuw nsw i64 %indvars.iv, 4
  %198 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %197
  %199 = or disjoint i64 %195, 1
  %200 = getelementptr inbounds i8, ptr %1, i64 %199
  %201 = load <16 x i8>, ptr %198, align 16, !tbaa !5
  %202 = icmp ugt <16 x i8> %201, <i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128>
  %203 = extractelement <16 x i1> %202, i64 0
  %204 = select i1 %203, i8 -128, i8 0
  %205 = extractelement <16 x i1> %202, i64 1
  %206 = select i1 %205, i8 64, i8 0
  %207 = or disjoint i8 %206, %204
  %208 = extractelement <16 x i1> %202, i64 2
  %209 = select i1 %208, i8 32, i8 0
  %210 = or disjoint i8 %209, %207
  %211 = extractelement <16 x i1> %202, i64 3
  %212 = select i1 %211, i8 16, i8 0
  %213 = or disjoint i8 %212, %210
  %214 = extractelement <16 x i1> %202, i64 4
  %215 = select i1 %214, i8 8, i8 0
  %216 = or disjoint i8 %215, %213
  %217 = extractelement <16 x i1> %202, i64 5
  %218 = select i1 %217, i8 4, i8 0
  %219 = or disjoint i8 %218, %216
  %220 = extractelement <16 x i1> %202, i64 6
  %221 = select i1 %220, i8 2, i8 0
  %222 = or i8 %221, %219
  %223 = extractelement <16 x i1> %202, i64 7
  %224 = zext i1 %223 to i8
  %225 = or i8 %222, %224
  store i8 %225, ptr %196, align 1, !tbaa !5
  %226 = extractelement <16 x i1> %202, i64 8
  %227 = select i1 %226, i8 -128, i8 0
  %228 = extractelement <16 x i1> %202, i64 9
  %229 = select i1 %228, i8 64, i8 0
  %230 = or disjoint i8 %229, %227
  %231 = extractelement <16 x i1> %202, i64 10
  %232 = select i1 %231, i8 32, i8 0
  %233 = or disjoint i8 %232, %230
  %234 = extractelement <16 x i1> %202, i64 11
  %235 = select i1 %234, i8 16, i8 0
  %236 = or disjoint i8 %235, %233
  %237 = extractelement <16 x i1> %202, i64 12
  %238 = select i1 %237, i8 8, i8 0
  %239 = or disjoint i8 %238, %236
  %240 = extractelement <16 x i1> %202, i64 13
  %241 = select i1 %240, i8 4, i8 0
  %242 = or disjoint i8 %241, %239
  %243 = extractelement <16 x i1> %202, i64 14
  %244 = select i1 %243, i8 2, i8 0
  %245 = or i8 %244, %242
  %246 = extractelement <16 x i1> %202, i64 15
  %247 = zext i1 %246 to i8
  %248 = or i8 %245, %247
  store i8 %248, ptr %200, align 1, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond197.not = icmp eq i64 %indvars.iv.next, 16
  br i1 %exitcond197.not, label %249, label %.preheader, !llvm.loop !13

249:                                              ; preds = %.preheader
  call void @llvm.lifetime.end.p0(i64 22, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 22, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 132, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #3
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) #3
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local i32 @spc2216_decode_sym_soft(ptr noundef, ptr noundef) local_unnamed_addr #1

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

attributes #0 = { mustprogress 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}
!10 = distinct !{!10, !9}
!11 = distinct !{!11, !9}
!12 = distinct !{!12, !9}
!13 = distinct !{!13, !9}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass