; LLVM IR from gem5/gem5 :: src/systemc/dt/int/sc_nbutils.ll (ZN5sc_dt14parse_hex_bitsEPKciPjS2_)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.13 = external hidden unnamed_addr constant [76 x i8], align 1
@_ZN7sc_core24SC_ID_CONVERSION_FAILED_E = external constant [0 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5sc_dt14parse_hex_bitsEPKciPjS2_(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3) #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = icmp eq ptr %23, null
  br i1 %24, label %25, label %26

25:                                               ; preds = %4
  call void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef @.str.15, ptr noundef @.str.13, i32 noundef 399)
  store i32 1, ptr %16, align 4
  br label %328

26:                                               ; preds = %4
  %27 = load ptr, ptr %5, align 8, !tbaa !5
  %28 = load i8, ptr %27, align 1, !tbaa !11
  %29 = sext i8 %28 to i32
  %30 = icmp eq i32 %29, 0
  br i1 %30, label %31, label %32

31:                                               ; preds = %26
  call void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef @.str.16, ptr noundef @.str.13, i32 noundef 404)
  store i32 1, ptr %16, align 4
  br label %328

32:                                               ; preds = %26
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = call i64 @strlen(ptr noundef %33) #7
  %35 = trunc i64 %34 to i32
  store i32 %35, ptr %14, align 4, !tbaa !9
  %36 = load i32, ptr %14, align 4, !tbaa !9
  %37 = load i32, ptr %6, align 4, !tbaa !9
  %38 = mul nsw i32 %37, 8
  %39 = sub nsw i32 %36, %38
  store i32 %39, ptr %11, align 4, !tbaa !9
  %40 = load i32, ptr %11, align 4, !tbaa !9
  %41 = icmp sgt i32 %40, 0
  br i1 %41, label %42, label %50

42:                                               ; preds = %32
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = load i32, ptr %11, align 4, !tbaa !9
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds i8, ptr %43, i64 %45
  store ptr %46, ptr %5, align 8, !tbaa !5
  %47 = load i32, ptr %11, align 4, !tbaa !9
  %48 = load i32, ptr %14, align 4, !tbaa !9
  %49 = sub nsw i32 %48, %47
  store i32 %49, ptr %14, align 4, !tbaa !9
  br label %81

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

51:                                               ; preds = %60, %50
  %52 = load i32, ptr %15, align 4, !tbaa !9
  %53 = load i32, ptr %6, align 4, !tbaa !9
  %54 = icmp slt i32 %52, %53
  br i1 %54, label %55, label %63

55:                                               ; preds = %51
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = load i32, ptr %15, align 4, !tbaa !9
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds i32, ptr %56, i64 %58
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %55
  %61 = load i32, ptr %15, align 4, !tbaa !9
  %62 = add nsw i32 %61, 1
  store i32 %62, ptr %15, align 4, !tbaa !9
  br label %51, !llvm.loop !12

63:                                               ; preds = %51
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  br i1 %65, label %66, label %80

66:                                               ; preds = %63
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %67

67:                                               ; preds = %76, %66
  %68 = load i32, ptr %15, align 4, !tbaa !9
  %69 = load i32, ptr %6, align 4, !tbaa !9
  %70 = icmp slt i32 %68, %69
  br i1 %70, label %71, label %79

71:                                               ; preds = %67
  %72 = load ptr, ptr %8, align 8, !tbaa !5
  %73 = load i32, ptr %15, align 4, !tbaa !9
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds i32, ptr %72, i64 %74
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %76

76:                                               ; preds = %71
  %77 = load i32, ptr %15, align 4, !tbaa !9
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr %15, align 4, !tbaa !9
  br label %67, !llvm.loop !14

79:                                               ; preds = %67
  br label %80

80:                                               ; preds = %79, %63
  br label %81

81:                                               ; preds = %80, %42
  %82 = load i32, ptr %14, align 4, !tbaa !9
  %83 = sub nsw i32 %82, 8
  store i32 %83, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %324, %81
  %85 = load i32, ptr %15, align 4, !tbaa !9
  %86 = load i32, ptr %6, align 4, !tbaa !9
  %87 = icmp slt i32 %85, %86
  br i1 %87, label %88, label %327

88:                                               ; preds = %84
  %89 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %89, ptr %13, align 4, !tbaa !9
  %90 = load i32, ptr %13, align 4, !tbaa !9
  %91 = icmp slt i32 %90, 0
  br i1 %91, label %92, label %208

92:                                               ; preds = %88
  %93 = load i32, ptr %14, align 4, !tbaa !9
  %94 = add nsw i32 %93, 8
  store i32 %94, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %10, align 4, !tbaa !9
  store i32 0, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %95

95:                                               ; preds = %190, %92
  %96 = load i32, ptr %13, align 4, !tbaa !9
  %97 = load i32, ptr %14, align 4, !tbaa !9
  %98 = icmp slt i32 %96, %97
  br i1 %98, label %99, label %193

99:                                               ; preds = %95
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = shl i32 %100, 4
  store i32 %101, ptr %9, align 4, !tbaa !9
  %102 = load i32, ptr %10, align 4, !tbaa !9
  %103 = shl i32 %102, 4
  store i32 %103, ptr %10, align 4, !tbaa !9
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = load i32, ptr %13, align 4, !tbaa !9
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds i8, ptr %104, i64 %106
  %108 = load i8, ptr %107, align 1, !tbaa !11
  %109 = sext i8 %108 to i32
  switch i32 %109, label %163 [
    i32 88, label %110
    i32 120, label %110
    i32 70, label %115
    i32 102, label %115
    i32 69, label %118
    i32 101, label %118
    i32 68, label %121
    i32 100, label %121
    i32 67, label %124
    i32 99, label %124
    i32 66, label %127
    i32 98, label %127
    i32 65, label %130
    i32 97, label %130
    i32 57, label %133
    i32 56, label %136
    i32 55, label %139
    i32 54, label %142
    i32 53, label %145
    i32 52, label %148
    i32 51, label %151
    i32 50, label %154
    i32 49, label %157
    i32 48, label %189
    i32 90, label %160
    i32 122, label %160
  ]

110:                                              ; preds = %99, %99
  %111 = load i32, ptr %9, align 4, !tbaa !9
  %112 = or i32 %111, 15
  store i32 %112, ptr %9, align 4, !tbaa !9
  %113 = load i32, ptr %10, align 4, !tbaa !9
  %114 = or i32 %113, 15
  store i32 %114, ptr %10, align 4, !tbaa !9
  br label %189

115:                                              ; preds = %99, %99
  %116 = load i32, ptr %10, align 4, !tbaa !9
  %117 = or i32 %116, 15
  store i32 %117, ptr %10, align 4, !tbaa !9
  br label %189

118:                                              ; preds = %99, %99
  %119 = load i32, ptr %10, align 4, !tbaa !9
  %120 = or i32 %119, 14
  store i32 %120, ptr %10, align 4, !tbaa !9
  br label %189

121:                                              ; preds = %99, %99
  %122 = load i32, ptr %10, align 4, !tbaa !9
  %123 = or i32 %122, 13
  store i32 %123, ptr %10, align 4, !tbaa !9
  br label %189

124:                                              ; preds = %99, %99
  %125 = load i32, ptr %10, align 4, !tbaa !9
  %126 = or i32 %125, 12
  store i32 %126, ptr %10, align 4, !tbaa !9
  br label %189

127:                                              ; preds = %99, %99
  %128 = load i32, ptr %10, align 4, !tbaa !9
  %129 = or i32 %128, 11
  store i32 %129, ptr %10, align 4, !tbaa !9
  br label %189

130:                                              ; preds = %99, %99
  %131 = load i32, ptr %10, align 4, !tbaa !9
  %132 = or i32 %131, 10
  store i32 %132, ptr %10, align 4, !tbaa !9
  br label %189

133:                                              ; preds = %99
  %134 = load i32, ptr %10, align 4, !tbaa !9
  %135 = or i32 %134, 9
  store i32 %135, ptr %10, align 4, !tbaa !9
  br label %189

136:                                              ; preds = %99
  %137 = load i32, ptr %10, align 4, !tbaa !9
  %138 = or i32 %137, 8
  store i32 %138, ptr %10, align 4, !tbaa !9
  br label %189

139:                                              ; preds = %99
  %140 = load i32, ptr %10, align 4, !tbaa !9
  %141 = or i32 %140, 7
  store i32 %141, ptr %10, align 4, !tbaa !9
  br label %189

142:                                              ; preds = %99
  %143 = load i32, ptr %10, align 4, !tbaa !9
  %144 = or i32 %143, 6
  store i32 %144, ptr %10, align 4, !tbaa !9
  br label %189

145:                                              ; preds = %99
  %146 = load i32, ptr %10, align 4, !tbaa !9
  %147 = or i32 %146, 5
  store i32 %147, ptr %10, align 4, !tbaa !9
  br label %189

148:                                              ; preds = %99
  %149 = load i32, ptr %10, align 4, !tbaa !9
  %150 = or i32 %149, 4
  store i32 %150, ptr %10, align 4, !tbaa !9
  br label %189

151:                                              ; preds = %99
  %152 = load i32, ptr %10, align 4, !tbaa !9
  %153 = or i32 %152, 3
  store i32 %153, ptr %10, align 4, !tbaa !9
  br label %189

154:                                              ; preds = %99
  %155 = load i32, ptr %10, align 4, !tbaa !9
  %156 = or i32 %155, 2
  store i32 %156, ptr %10, align 4, !tbaa !9
  br label %189

157:                                              ; preds = %99
  %158 = load i32, ptr %10, align 4, !tbaa !9
  %159 = or i32 %158, 1
  store i32 %159, ptr %10, align 4, !tbaa !9
  br label %189

160:                                              ; preds = %99, %99
  %161 = load i32, ptr %9, align 4, !tbaa !9
  %162 = or i32 %161, 15
  store i32 %162, ptr %9, align 4, !tbaa !9
  br label %189

163:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 392, ptr %17) #6
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17)
  %164 = getelementptr inbounds i8, ptr %17, i64 16
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef @.str.17)
          to label %166 unwind label %175

166:                                              ; preds = %163
  %167 = load ptr, ptr %5, align 8, !tbaa !5
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef %167)
          to label %169 unwind label %175

169:                                              ; preds = %166
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef @.str.18)
          to label %171 unwind label %175

171:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(128) %17)
          to label %172 unwind label %179

172:                                              ; preds = %171
  %173 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  invoke void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef %173, ptr noundef @.str.13, i32 noundef 474)
          to label %174 unwind label %183

174:                                              ; preds = %172
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  store i32 1, ptr %16, align 4
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %17) #6
  br label %328

175:                                              ; preds = %169, %166, %163
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %18, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %19, align 4
  br label %188

179:                                              ; preds = %171
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %18, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %19, align 4
  br label %187

183:                                              ; preds = %172
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %18, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %19, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %187

187:                                              ; preds = %183, %179
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %188

188:                                              ; preds = %187, %175
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %17) #6
  br label %331

189:                                              ; preds = %160, %157, %154, %151, %148, %145, %142, %139, %136, %133, %130, %127, %124, %121, %118, %115, %110, %99
  br label %190

190:                                              ; preds = %189
  %191 = load i32, ptr %13, align 4, !tbaa !9
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %13, align 4, !tbaa !9
  br label %95, !llvm.loop !15

193:                                              ; preds = %95
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  %195 = icmp ne ptr %194, null
  br i1 %195, label %196, label %202

196:                                              ; preds = %193
  %197 = load i32, ptr %9, align 4, !tbaa !9
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = load i32, ptr %15, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i32, ptr %198, i64 %200
  store i32 %197, ptr %201, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %196, %193
  %203 = load i32, ptr %10, align 4, !tbaa !9
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = load i32, ptr %15, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds i32, ptr %204, i64 %206
  store i32 %203, ptr %207, align 4, !tbaa !9
  br label %327

208:                                              ; preds = %88
  store i32 0, ptr %9, align 4, !tbaa !9
  store i32 0, ptr %10, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %304, %208
  %210 = load i32, ptr %12, align 4, !tbaa !9
  %211 = icmp slt i32 %210, 8
  br i1 %211, label %212, label %307

212:                                              ; preds = %209
  %213 = load i32, ptr %9, align 4, !tbaa !9
  %214 = shl i32 %213, 4
  store i32 %214, ptr %9, align 4, !tbaa !9
  %215 = load i32, ptr %10, align 4, !tbaa !9
  %216 = shl i32 %215, 4
  store i32 %216, ptr %10, align 4, !tbaa !9
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = load i32, ptr %13, align 4, !tbaa !9
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %13, align 4, !tbaa !9
  %220 = sext i32 %218 to i64
  %221 = getelementptr inbounds i8, ptr %217, i64 %220
  %222 = load i8, ptr %221, align 1, !tbaa !11
  %223 = sext i8 %222 to i32
  switch i32 %223, label %277 [
    i32 88, label %224
    i32 120, label %224
    i32 70, label %229
    i32 102, label %229
    i32 69, label %232
    i32 101, label %232
    i32 68, label %235
    i32 100, label %235
    i32 67, label %238
    i32 99, label %238
    i32 66, label %241
    i32 98, label %241
    i32 65, label %244
    i32 97, label %244
    i32 57, label %247
    i32 56, label %250
    i32 55, label %253
    i32 54, label %256
    i32 53, label %259
    i32 52, label %262
    i32 51, label %265
    i32 50, label %268
    i32 49, label %271
    i32 48, label %303
    i32 90, label %274
    i32 122, label %274
  ]

224:                                              ; preds = %212, %212
  %225 = load i32, ptr %9, align 4, !tbaa !9
  %226 = or i32 %225, 15
  store i32 %226, ptr %9, align 4, !tbaa !9
  %227 = load i32, ptr %10, align 4, !tbaa !9
  %228 = or i32 %227, 15
  store i32 %228, ptr %10, align 4, !tbaa !9
  br label %303

229:                                              ; preds = %212, %212
  %230 = load i32, ptr %10, align 4, !tbaa !9
  %231 = or i32 %230, 15
  store i32 %231, ptr %10, align 4, !tbaa !9
  br label %303

232:                                              ; preds = %212, %212
  %233 = load i32, ptr %10, align 4, !tbaa !9
  %234 = or i32 %233, 14
  store i32 %234, ptr %10, align 4, !tbaa !9
  br label %303

235:                                              ; preds = %212, %212
  %236 = load i32, ptr %10, align 4, !tbaa !9
  %237 = or i32 %236, 13
  store i32 %237, ptr %10, align 4, !tbaa !9
  br label %303

238:                                              ; preds = %212, %212
  %239 = load i32, ptr %10, align 4, !tbaa !9
  %240 = or i32 %239, 12
  store i32 %240, ptr %10, align 4, !tbaa !9
  br label %303

241:                                              ; preds = %212, %212
  %242 = load i32, ptr %10, align 4, !tbaa !9
  %243 = or i32 %242, 11
  store i32 %243, ptr %10, align 4, !tbaa !9
  br label %303

244:                                              ; preds = %212, %212
  %245 = load i32, ptr %10, align 4, !tbaa !9
  %246 = or i32 %245, 10
  store i32 %246, ptr %10, align 4, !tbaa !9
  br label %303

247:                                              ; preds = %212
  %248 = load i32, ptr %10, align 4, !tbaa !9
  %249 = or i32 %248, 9
  store i32 %249, ptr %10, align 4, !tbaa !9
  br label %303

250:                                              ; preds = %212
  %251 = load i32, ptr %10, align 4, !tbaa !9
  %252 = or i32 %251, 8
  store i32 %252, ptr %10, align 4, !tbaa !9
  br label %303

253:                                              ; preds = %212
  %254 = load i32, ptr %10, align 4, !tbaa !9
  %255 = or i32 %254, 7
  store i32 %255, ptr %10, align 4, !tbaa !9
  br label %303

256:                                              ; preds = %212
  %257 = load i32, ptr %10, align 4, !tbaa !9
  %258 = or i32 %257, 6
  store i32 %258, ptr %10, align 4, !tbaa !9
  br label %303

259:                                              ; preds = %212
  %260 = load i32, ptr %10, align 4, !tbaa !9
  %261 = or i32 %260, 5
  store i32 %261, ptr %10, align 4, !tbaa !9
  br label %303

262:                                              ; preds = %212
  %263 = load i32, ptr %10, align 4, !tbaa !9
  %264 = or i32 %263, 4
  store i32 %264, ptr %10, align 4, !tbaa !9
  br label %303

265:                                              ; preds = %212
  %266 = load i32, ptr %10, align 4, !tbaa !9
  %267 = or i32 %266, 3
  store i32 %267, ptr %10, align 4, !tbaa !9
  br label %303

268:                                              ; preds = %212
  %269 = load i32, ptr %10, align 4, !tbaa !9
  %270 = or i32 %269, 2
  store i32 %270, ptr %10, align 4, !tbaa !9
  br label %303

271:                                              ; preds = %212
  %272 = load i32, ptr %10, align 4, !tbaa !9
  %273 = or i32 %272, 1
  store i32 %273, ptr %10, align 4, !tbaa !9
  br label %303

274:                                              ; preds = %212, %212
  %275 = load i32, ptr %9, align 4, !tbaa !9
  %276 = or i32 %275, 15
  store i32 %276, ptr %9, align 4, !tbaa !9
  br label %303

277:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 392, ptr %21) #6
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21)
  %278 = getelementptr inbounds i8, ptr %21, i64 16
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef @.str.17)
          to label %280 unwind label %289

280:                                              ; preds = %277
  %281 = load ptr, ptr %5, align 8, !tbaa !5
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef %281)
          to label %283 unwind label %289

283:                                              ; preds = %280
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef @.str.18)
          to label %285 unwind label %289

285:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(128) %21)
          to label %286 unwind label %293

286:                                              ; preds = %285
  %287 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  invoke void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef %287, ptr noundef @.str.13, i32 noundef 524)
          to label %288 unwind label %297

288:                                              ; preds = %286
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  store i32 1, ptr %16, align 4
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %21) #6
  br label %328

289:                                              ; preds = %283, %280, %277
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %18, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %19, align 4
  br label %302

293:                                              ; preds = %285
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %18, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %19, align 4
  br label %301

297:                                              ; preds = %286
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %18, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %19, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %301

301:                                              ; preds = %297, %293
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %302

302:                                              ; preds = %301, %289
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %21) #6
  br label %331

303:                                              ; preds = %274, %271, %268, %265, %262, %259, %256, %253, %250, %247, %244, %241, %238, %235, %232, %229, %224, %212
  br label %304

304:                                              ; preds = %303
  %305 = load i32, ptr %12, align 4, !tbaa !9
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %12, align 4, !tbaa !9
  br label %209, !llvm.loop !16

307:                                              ; preds = %209
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = icmp ne ptr %308, null
  br i1 %309, label %310, label %316

310:                                              ; preds = %307
  %311 = load i32, ptr %9, align 4, !tbaa !9
  %312 = load ptr, ptr %8, align 8, !tbaa !5
  %313 = load i32, ptr %15, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %312, i64 %314
  store i32 %311, ptr %315, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %310, %307
  %317 = load i32, ptr %10, align 4, !tbaa !9
  %318 = load ptr, ptr %7, align 8, !tbaa !5
  %319 = load i32, ptr %15, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %318, i64 %320
  store i32 %317, ptr %321, align 4, !tbaa !9
  %322 = load i32, ptr %14, align 4, !tbaa !9
  %323 = sub nsw i32 %322, 30
  store i32 %323, ptr %14, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %316
  %325 = load i32, ptr %15, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %15, align 4, !tbaa !9
  br label %84, !llvm.loop !17

327:                                              ; preds = %202, %84
  store i32 0, ptr %16, align 4
  br label %328

328:                                              ; preds = %327, %288, %174, %31, %25
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  %329 = load i32, ptr %16, align 4
  switch i32 %329, label %337 [
    i32 0, label %330
    i32 1, label %330
  ]

330:                                              ; preds = %328, %328
  ret void

331:                                              ; preds = %302, %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %332

332:                                              ; preds = %331
  %333 = load ptr, ptr %18, align 8
  %334 = load i32, ptr %19, align 4
  %335 = insertvalue { ptr, i32 } poison, ptr %333, 0
  %336 = insertvalue { ptr, i32 } %335, i32 %334, 1
  resume { ptr, i32 } %336

337:                                              ; preds = %328
  unreachable
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.13 = external hidden unnamed_addr constant [76 x i8], align 1
@_ZN7sc_core24SC_ID_CONVERSION_FAILED_E = external constant [0 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [15 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN5sc_dt14parse_hex_bitsEPKciPjS2_(ptr noundef %0, i32 noundef %1, ptr nocapture noundef writeonly %2, ptr noundef writeonly %3) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = icmp eq ptr %0, null
  br i1 %9, label %10, label %11

10:                                               ; preds = %4
  tail call void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef nonnull @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.13, i32 noundef 399)
  br label %.loopexit

11:                                               ; preds = %4
  %12 = load i8, ptr %0, align 1, !tbaa !5
  %13 = icmp eq i8 %12, 0
  br i1 %13, label %14, label %15

14:                                               ; preds = %11
  tail call void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef nonnull @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.13, i32 noundef 404)
  br label %.loopexit

15:                                               ; preds = %11
  %16 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #7
  %17 = trunc i64 %16 to i32
  %18 = shl nsw i32 %1, 3
  %19 = sub nsw i32 %17, %18
  %20 = icmp sgt i32 %19, 0
  br i1 %20, label %.loopexit132, label %.preheader133

.preheader133:                                    ; preds = %15
  %21 = icmp sgt i32 %1, 0
  br i1 %21, label %._crit_edge, label %.loopexit

._crit_edge:                                      ; preds = %.preheader133
  %22 = zext nneg i32 %1 to i64
  %23 = shl nuw nsw i64 %22, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %2, i8 0, i64 %23, i1 false), !tbaa !8
  %.not = icmp ne ptr %3, null
  %or.cond = and i1 %.not, %21
  br i1 %or.cond, label %.lr.ph144.preheader, label %.lr.ph152

.lr.ph144.preheader:                              ; preds = %._crit_edge
  %24 = zext nneg i32 %1 to i64
  %25 = shl nuw nsw i64 %24, 2
  tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %3, i8 0, i64 %25, i1 false), !tbaa !8
  br label %.lr.ph152

.loopexit132:                                     ; preds = %15
  %26 = zext nneg i32 %19 to i64
  %27 = getelementptr inbounds i8, ptr %0, i64 %26
  %28 = icmp sgt i32 %1, 0
  br i1 %28, label %.lr.ph152, label %.loopexit

.lr.ph152:                                        ; preds = %._crit_edge, %.lr.ph144.preheader, %.loopexit132
  %.0103177 = phi i32 [ %18, %.loopexit132 ], [ %17, %.lr.ph144.preheader ], [ %17, %._crit_edge ]
  %.0108176 = phi ptr [ %27, %.loopexit132 ], [ %0, %.lr.ph144.preheader ], [ %0, %._crit_edge ]
  %29 = add nsw i32 %.0103177, -8
  %.not123 = icmp eq ptr %3, null
  %wide.trip.count = zext nneg i32 %1 to i64
  br label %30

30:                                               ; preds = %.lr.ph152, %412
  %indvars.iv = phi i64 [ 0, %.lr.ph152 ], [ %indvars.iv.next167, %412 ]
  %.1104149 = phi i32 [ %29, %.lr.ph152 ], [ %414, %412 ]
  %31 = zext i32 %.1104149 to i64
  %32 = icmp slt i32 %.1104149, 0
  br i1 %32, label %35, label %.preheader.preheader

.preheader.preheader:                             ; preds = %30
  %indvars.iv.next = add nuw nsw i64 %31, 1
  %33 = getelementptr inbounds i8, ptr %.0108176, i64 %31
  %34 = load i8, ptr %33, align 1, !tbaa !5
  switch i8 %34, label %119 [
    i8 88, label %102
    i8 120, label %102
    i8 70, label %103
    i8 102, label %103
    i8 69, label %104
    i8 101, label %104
    i8 68, label %105
    i8 100, label %105
    i8 67, label %106
    i8 99, label %106
    i8 66, label %107
    i8 98, label %107
    i8 65, label %108
    i8 97, label %108
    i8 57, label %109
    i8 56, label %110
    i8 55, label %111
    i8 54, label %112
    i8 53, label %113
    i8 52, label %114
    i8 51, label %115
    i8 50, label %116
    i8 49, label %117
    i8 48, label %.preheader.1
    i8 90, label %118
    i8 122, label %118
  ]

35:                                               ; preds = %30
  %36 = icmp ugt i32 %.1104149, -8
  br i1 %36, label %.lr.ph157.preheader, label %._crit_edge158

.lr.ph157.preheader:                              ; preds = %35
  %37 = add nsw i32 %.1104149, 7
  %38 = sext i32 %37 to i64
  br label %.lr.ph157

.lr.ph157:                                        ; preds = %.lr.ph157.preheader, %97
  %indvars.iv169 = phi i64 [ 0, %.lr.ph157.preheader ], [ %indvars.iv.next170, %97 ]
  %.0109154 = phi i32 [ 0, %.lr.ph157.preheader ], [ %.1110, %97 ]
  %.0113153 = phi i32 [ 0, %.lr.ph157.preheader ], [ %.1114, %97 ]
  %39 = shl i32 %.0113153, 4
  %40 = shl i32 %.0109154, 4
  %41 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv169
  %42 = load i8, ptr %41, align 1, !tbaa !5
  switch i8 %42, label %78 [
    i8 88, label %43
    i8 120, label %43
    i8 70, label %46
    i8 102, label %46
    i8 69, label %48
    i8 101, label %48
    i8 68, label %50
    i8 100, label %50
    i8 67, label %52
    i8 99, label %52
    i8 66, label %54
    i8 98, label %54
    i8 65, label %56
    i8 97, label %56
    i8 57, label %58
    i8 56, label %60
    i8 55, label %62
    i8 54, label %64
    i8 53, label %66
    i8 52, label %68
    i8 51, label %70
    i8 50, label %72
    i8 49, label %74
    i8 48, label %97
    i8 90, label %76
    i8 122, label %76
  ]

43:                                               ; preds = %.lr.ph157, %.lr.ph157
  %44 = or disjoint i32 %39, 15
  %45 = or disjoint i32 %40, 15
  br label %97

46:                                               ; preds = %.lr.ph157, %.lr.ph157
  %47 = or disjoint i32 %40, 15
  br label %97

48:                                               ; preds = %.lr.ph157, %.lr.ph157
  %49 = or disjoint i32 %40, 14
  br label %97

50:                                               ; preds = %.lr.ph157, %.lr.ph157
  %51 = or disjoint i32 %40, 13
  br label %97

52:                                               ; preds = %.lr.ph157, %.lr.ph157
  %53 = or disjoint i32 %40, 12
  br label %97

54:                                               ; preds = %.lr.ph157, %.lr.ph157
  %55 = or disjoint i32 %40, 11
  br label %97

56:                                               ; preds = %.lr.ph157, %.lr.ph157
  %57 = or disjoint i32 %40, 10
  br label %97

58:                                               ; preds = %.lr.ph157
  %59 = or disjoint i32 %40, 9
  br label %97

60:                                               ; preds = %.lr.ph157
  %61 = or disjoint i32 %40, 8
  br label %97

62:                                               ; preds = %.lr.ph157
  %63 = or disjoint i32 %40, 7
  br label %97

64:                                               ; preds = %.lr.ph157
  %65 = or disjoint i32 %40, 6
  br label %97

66:                                               ; preds = %.lr.ph157
  %67 = or disjoint i32 %40, 5
  br label %97

68:                                               ; preds = %.lr.ph157
  %69 = or disjoint i32 %40, 4
  br label %97

70:                                               ; preds = %.lr.ph157
  %71 = or disjoint i32 %40, 3
  br label %97

72:                                               ; preds = %.lr.ph157
  %73 = or disjoint i32 %40, 2
  br label %97

74:                                               ; preds = %.lr.ph157
  %75 = or disjoint i32 %40, 1
  br label %97

76:                                               ; preds = %.lr.ph157, %.lr.ph157
  %77 = or disjoint i32 %39, 15
  br label %97

78:                                               ; preds = %.lr.ph157
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %5) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5)
  %79 = getelementptr inbounds i8, ptr %5, i64 16
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull @.str.17)
          to label %81 unwind label %89

81:                                               ; preds = %78
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull %.0108176)
          to label %83 unwind label %89

83:                                               ; preds = %81
  %84 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull @.str.18)
          to label %85 unwind label %89

85:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(128) %5)
          to label %86 unwind label %91

86:                                               ; preds = %85
  %87 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  invoke void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef nonnull @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef %87, ptr noundef nonnull @.str.13, i32 noundef 474)
          to label %88 unwind label %93

88:                                               ; preds = %86
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %5) #8
  br label %.loopexit

89:                                               ; preds = %83, %81, %78
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %96

91:                                               ; preds = %85
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %86
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %95

95:                                               ; preds = %93, %91
  %.pn127 = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %96

96:                                               ; preds = %95, %89
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %95 ], [ %90, %89 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %5) #8
  br label %415

97:                                               ; preds = %.lr.ph157, %43, %46, %48, %50, %52, %54, %56, %58, %60, %62, %64, %66, %68, %70, %72, %74, %76
  %.1114 = phi i32 [ %77, %76 ], [ %39, %.lr.ph157 ], [ %39, %74 ], [ %39, %72 ], [ %39, %70 ], [ %39, %68 ], [ %39, %66 ], [ %39, %64 ], [ %39, %62 ], [ %39, %60 ], [ %39, %58 ], [ %39, %56 ], [ %39, %54 ], [ %39, %52 ], [ %39, %50 ], [ %39, %48 ], [ %39, %46 ], [ %44, %43 ]
  %.1110 = phi i32 [ %40, %76 ], [ %40, %.lr.ph157 ], [ %75, %74 ], [ %73, %72 ], [ %71, %70 ], [ %69, %68 ], [ %67, %66 ], [ %65, %64 ], [ %63, %62 ], [ %61, %60 ], [ %59, %58 ], [ %57, %56 ], [ %55, %54 ], [ %53, %52 ], [ %51, %50 ], [ %49, %48 ], [ %47, %46 ], [ %45, %43 ]
  %indvars.iv.next170 = add nuw nsw i64 %indvars.iv169, 1
  %98 = icmp slt i64 %indvars.iv169, %38
  br i1 %98, label %.lr.ph157, label %._crit_edge158, !llvm.loop !10

._crit_edge158:                                   ; preds = %97, %35
  %.0113.lcssa = phi i32 [ 0, %35 ], [ %.1114, %97 ]
  %.0109.lcssa = phi i32 [ 0, %35 ], [ %.1110, %97 ]
  %.pre = and i64 %indvars.iv, 4294967295
  br i1 %.not123, label %._crit_edge158._crit_edge, label %99

99:                                               ; preds = %._crit_edge158
  %100 = getelementptr inbounds i32, ptr %3, i64 %.pre
  store i32 %.0113.lcssa, ptr %100, align 4, !tbaa !8
  br label %._crit_edge158._crit_edge

._crit_edge158._crit_edge:                        ; preds = %._crit_edge158, %99
  %101 = getelementptr inbounds i32, ptr %2, i64 %.pre
  store i32 %.0109.lcssa, ptr %101, align 4, !tbaa !8
  br label %.loopexit

102:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

103:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

104:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

105:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

106:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

107:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

108:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

109:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

110:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

111:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

112:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

113:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

114:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

115:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

116:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

117:                                              ; preds = %.preheader.preheader
  br label %.preheader.1

118:                                              ; preds = %.preheader.preheader, %.preheader.preheader
  br label %.preheader.1

119:                                              ; preds = %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %7)
  %120 = getelementptr inbounds i8, ptr %7, i64 16
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @.str.17)
          to label %122 unwind label %130

122:                                              ; preds = %119
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull %.0108176)
          to label %124 unwind label %130

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @.str.18)
          to label %126 unwind label %130

126:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(128) %7)
          to label %127 unwind label %132

127:                                              ; preds = %126
  %128 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  invoke void @_ZN7sc_core17sc_report_handler6reportENS_11sc_severityEPKcS3_S3_i(i32 noundef 2, ptr noundef nonnull @_ZN7sc_core24SC_ID_CONVERSION_FAILED_E, ptr noundef %128, ptr noundef nonnull @.str.13, i32 noundef 524)
          to label %129 unwind label %134

129:                                              ; preds = %127
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %7) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %7) #8
  br label %.loopexit

130:                                              ; preds = %124, %122, %119
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %137

132:                                              ; preds = %126
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %136

134:                                              ; preds = %127
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %136

136:                                              ; preds = %134, %132
  %.pn = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %137

137:                                              ; preds = %136, %130
  %.pn.pn = phi { ptr, i32 } [ %.pn, %136 ], [ %131, %130 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %7) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %7) #8
  br label %415

.preheader.1:                                     ; preds = %.preheader.preheader, %102, %103, %104, %105, %106, %107, %108, %109, %110, %111, %112, %113, %114, %115, %116, %117, %118
  %.3116 = phi i32 [ 240, %118 ], [ 0, %.preheader.preheader ], [ 0, %117 ], [ 0, %116 ], [ 0, %115 ], [ 0, %114 ], [ 0, %113 ], [ 0, %112 ], [ 0, %111 ], [ 0, %110 ], [ 0, %109 ], [ 0, %108 ], [ 0, %107 ], [ 0, %106 ], [ 0, %105 ], [ 0, %104 ], [ 0, %103 ], [ 240, %102 ]
  %.3112 = phi i32 [ 0, %118 ], [ 0, %.preheader.preheader ], [ 16, %117 ], [ 32, %116 ], [ 48, %115 ], [ 64, %114 ], [ 80, %113 ], [ 96, %112 ], [ 112, %111 ], [ 128, %110 ], [ 144, %109 ], [ 160, %108 ], [ 176, %107 ], [ 192, %106 ], [ 208, %105 ], [ 224, %104 ], [ 240, %103 ], [ 240, %102 ]
  %indvars.iv.next.1 = add nuw nsw i64 %31, 2
  %138 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next
  %139 = load i8, ptr %138, align 1, !tbaa !5
  switch i8 %139, label %119 [
    i8 88, label %172
    i8 120, label %172
    i8 70, label %170
    i8 102, label %170
    i8 69, label %168
    i8 101, label %168
    i8 68, label %166
    i8 100, label %166
    i8 67, label %164
    i8 99, label %164
    i8 66, label %162
    i8 98, label %162
    i8 65, label %160
    i8 97, label %160
    i8 57, label %158
    i8 56, label %156
    i8 55, label %154
    i8 54, label %152
    i8 53, label %150
    i8 52, label %148
    i8 51, label %146
    i8 50, label %144
    i8 49, label %142
    i8 48, label %.preheader.2
    i8 90, label %140
    i8 122, label %140
  ]

140:                                              ; preds = %.preheader.1, %.preheader.1
  %141 = or disjoint i32 %.3116, 15
  br label %.preheader.2

142:                                              ; preds = %.preheader.1
  %143 = or disjoint i32 %.3112, 1
  br label %.preheader.2

144:                                              ; preds = %.preheader.1
  %145 = or disjoint i32 %.3112, 2
  br label %.preheader.2

146:                                              ; preds = %.preheader.1
  %147 = or disjoint i32 %.3112, 3
  br label %.preheader.2

148:                                              ; preds = %.preheader.1
  %149 = or disjoint i32 %.3112, 4
  br label %.preheader.2

150:                                              ; preds = %.preheader.1
  %151 = or disjoint i32 %.3112, 5
  br label %.preheader.2

152:                                              ; preds = %.preheader.1
  %153 = or disjoint i32 %.3112, 6
  br label %.preheader.2

154:                                              ; preds = %.preheader.1
  %155 = or disjoint i32 %.3112, 7
  br label %.preheader.2

156:                                              ; preds = %.preheader.1
  %157 = or disjoint i32 %.3112, 8
  br label %.preheader.2

158:                                              ; preds = %.preheader.1
  %159 = or disjoint i32 %.3112, 9
  br label %.preheader.2

160:                                              ; preds = %.preheader.1, %.preheader.1
  %161 = or disjoint i32 %.3112, 10
  br label %.preheader.2

162:                                              ; preds = %.preheader.1, %.preheader.1
  %163 = or disjoint i32 %.3112, 11
  br label %.preheader.2

164:                                              ; preds = %.preheader.1, %.preheader.1
  %165 = or disjoint i32 %.3112, 12
  br label %.preheader.2

166:                                              ; preds = %.preheader.1, %.preheader.1
  %167 = or disjoint i32 %.3112, 13
  br label %.preheader.2

168:                                              ; preds = %.preheader.1, %.preheader.1
  %169 = or disjoint i32 %.3112, 14
  br label %.preheader.2

170:                                              ; preds = %.preheader.1, %.preheader.1
  %171 = or disjoint i32 %.3112, 15
  br label %.preheader.2

172:                                              ; preds = %.preheader.1, %.preheader.1
  %173 = or disjoint i32 %.3116, 15
  %174 = or disjoint i32 %.3112, 15
  br label %.preheader.2

.preheader.2:                                     ; preds = %172, %170, %168, %166, %164, %162, %160, %158, %156, %154, %152, %150, %148, %146, %144, %142, %140, %.preheader.1
  %.3116.1 = phi i32 [ %141, %140 ], [ %.3116, %.preheader.1 ], [ %.3116, %142 ], [ %.3116, %144 ], [ %.3116, %146 ], [ %.3116, %148 ], [ %.3116, %150 ], [ %.3116, %152 ], [ %.3116, %154 ], [ %.3116, %156 ], [ %.3116, %158 ], [ %.3116, %160 ], [ %.3116, %162 ], [ %.3116, %164 ], [ %.3116, %166 ], [ %.3116, %168 ], [ %.3116, %170 ], [ %173, %172 ]
  %.3112.1 = phi i32 [ %.3112, %140 ], [ %.3112, %.preheader.1 ], [ %143, %142 ], [ %145, %144 ], [ %147, %146 ], [ %149, %148 ], [ %151, %150 ], [ %153, %152 ], [ %155, %154 ], [ %157, %156 ], [ %159, %158 ], [ %161, %160 ], [ %163, %162 ], [ %165, %164 ], [ %167, %166 ], [ %169, %168 ], [ %171, %170 ], [ %174, %172 ]
  %175 = shl nuw nsw i32 %.3116.1, 4
  %176 = shl nuw nsw i32 %.3112.1, 4
  %indvars.iv.next.2 = add nuw nsw i64 %31, 3
  %177 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.1
  %178 = load i8, ptr %177, align 1, !tbaa !5
  switch i8 %178, label %119 [
    i8 88, label %211
    i8 120, label %211
    i8 70, label %209
    i8 102, label %209
    i8 69, label %207
    i8 101, label %207
    i8 68, label %205
    i8 100, label %205
    i8 67, label %203
    i8 99, label %203
    i8 66, label %201
    i8 98, label %201
    i8 65, label %199
    i8 97, label %199
    i8 57, label %197
    i8 56, label %195
    i8 55, label %193
    i8 54, label %191
    i8 53, label %189
    i8 52, label %187
    i8 51, label %185
    i8 50, label %183
    i8 49, label %181
    i8 48, label %.preheader.3
    i8 90, label %179
    i8 122, label %179
  ]

179:                                              ; preds = %.preheader.2, %.preheader.2
  %180 = or disjoint i32 %175, 15
  br label %.preheader.3

181:                                              ; preds = %.preheader.2
  %182 = or disjoint i32 %176, 1
  br label %.preheader.3

183:                                              ; preds = %.preheader.2
  %184 = or disjoint i32 %176, 2
  br label %.preheader.3

185:                                              ; preds = %.preheader.2
  %186 = or disjoint i32 %176, 3
  br label %.preheader.3

187:                                              ; preds = %.preheader.2
  %188 = or disjoint i32 %176, 4
  br label %.preheader.3

189:                                              ; preds = %.preheader.2
  %190 = or disjoint i32 %176, 5
  br label %.preheader.3

191:                                              ; preds = %.preheader.2
  %192 = or disjoint i32 %176, 6
  br label %.preheader.3

193:                                              ; preds = %.preheader.2
  %194 = or disjoint i32 %176, 7
  br label %.preheader.3

195:                                              ; preds = %.preheader.2
  %196 = or disjoint i32 %176, 8
  br label %.preheader.3

197:                                              ; preds = %.preheader.2
  %198 = or disjoint i32 %176, 9
  br label %.preheader.3

199:                                              ; preds = %.preheader.2, %.preheader.2
  %200 = or disjoint i32 %176, 10
  br label %.preheader.3

201:                                              ; preds = %.preheader.2, %.preheader.2
  %202 = or disjoint i32 %176, 11
  br label %.preheader.3

203:                                              ; preds = %.preheader.2, %.preheader.2
  %204 = or disjoint i32 %176, 12
  br label %.preheader.3

205:                                              ; preds = %.preheader.2, %.preheader.2
  %206 = or disjoint i32 %176, 13
  br label %.preheader.3

207:                                              ; preds = %.preheader.2, %.preheader.2
  %208 = or disjoint i32 %176, 14
  br label %.preheader.3

209:                                              ; preds = %.preheader.2, %.preheader.2
  %210 = or disjoint i32 %176, 15
  br label %.preheader.3

211:                                              ; preds = %.preheader.2, %.preheader.2
  %212 = or disjoint i32 %175, 15
  %213 = or disjoint i32 %176, 15
  br label %.preheader.3

.preheader.3:                                     ; preds = %211, %209, %207, %205, %203, %201, %199, %197, %195, %193, %191, %189, %187, %185, %183, %181, %179, %.preheader.2
  %.3116.2 = phi i32 [ %180, %179 ], [ %175, %.preheader.2 ], [ %175, %181 ], [ %175, %183 ], [ %175, %185 ], [ %175, %187 ], [ %175, %189 ], [ %175, %191 ], [ %175, %193 ], [ %175, %195 ], [ %175, %197 ], [ %175, %199 ], [ %175, %201 ], [ %175, %203 ], [ %175, %205 ], [ %175, %207 ], [ %175, %209 ], [ %212, %211 ]
  %.3112.2 = phi i32 [ %176, %179 ], [ %176, %.preheader.2 ], [ %182, %181 ], [ %184, %183 ], [ %186, %185 ], [ %188, %187 ], [ %190, %189 ], [ %192, %191 ], [ %194, %193 ], [ %196, %195 ], [ %198, %197 ], [ %200, %199 ], [ %202, %201 ], [ %204, %203 ], [ %206, %205 ], [ %208, %207 ], [ %210, %209 ], [ %213, %211 ]
  %214 = shl nuw nsw i32 %.3116.2, 4
  %215 = shl nuw nsw i32 %.3112.2, 4
  %indvars.iv.next.3 = add nuw nsw i64 %31, 4
  %216 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.2
  %217 = load i8, ptr %216, align 1, !tbaa !5
  switch i8 %217, label %119 [
    i8 88, label %250
    i8 120, label %250
    i8 70, label %248
    i8 102, label %248
    i8 69, label %246
    i8 101, label %246
    i8 68, label %244
    i8 100, label %244
    i8 67, label %242
    i8 99, label %242
    i8 66, label %240
    i8 98, label %240
    i8 65, label %238
    i8 97, label %238
    i8 57, label %236
    i8 56, label %234
    i8 55, label %232
    i8 54, label %230
    i8 53, label %228
    i8 52, label %226
    i8 51, label %224
    i8 50, label %222
    i8 49, label %220
    i8 48, label %.preheader.4
    i8 90, label %218
    i8 122, label %218
  ]

218:                                              ; preds = %.preheader.3, %.preheader.3
  %219 = or disjoint i32 %214, 15
  br label %.preheader.4

220:                                              ; preds = %.preheader.3
  %221 = or disjoint i32 %215, 1
  br label %.preheader.4

222:                                              ; preds = %.preheader.3
  %223 = or disjoint i32 %215, 2
  br label %.preheader.4

224:                                              ; preds = %.preheader.3
  %225 = or disjoint i32 %215, 3
  br label %.preheader.4

226:                                              ; preds = %.preheader.3
  %227 = or disjoint i32 %215, 4
  br label %.preheader.4

228:                                              ; preds = %.preheader.3
  %229 = or disjoint i32 %215, 5
  br label %.preheader.4

230:                                              ; preds = %.preheader.3
  %231 = or disjoint i32 %215, 6
  br label %.preheader.4

232:                                              ; preds = %.preheader.3
  %233 = or disjoint i32 %215, 7
  br label %.preheader.4

234:                                              ; preds = %.preheader.3
  %235 = or disjoint i32 %215, 8
  br label %.preheader.4

236:                                              ; preds = %.preheader.3
  %237 = or disjoint i32 %215, 9
  br label %.preheader.4

238:                                              ; preds = %.preheader.3, %.preheader.3
  %239 = or disjoint i32 %215, 10
  br label %.preheader.4

240:                                              ; preds = %.preheader.3, %.preheader.3
  %241 = or disjoint i32 %215, 11
  br label %.preheader.4

242:                                              ; preds = %.preheader.3, %.preheader.3
  %243 = or disjoint i32 %215, 12
  br label %.preheader.4

244:                                              ; preds = %.preheader.3, %.preheader.3
  %245 = or disjoint i32 %215, 13
  br label %.preheader.4

246:                                              ; preds = %.preheader.3, %.preheader.3
  %247 = or disjoint i32 %215, 14
  br label %.preheader.4

248:                                              ; preds = %.preheader.3, %.preheader.3
  %249 = or disjoint i32 %215, 15
  br label %.preheader.4

250:                                              ; preds = %.preheader.3, %.preheader.3
  %251 = or disjoint i32 %214, 15
  %252 = or disjoint i32 %215, 15
  br label %.preheader.4

.preheader.4:                                     ; preds = %250, %248, %246, %244, %242, %240, %238, %236, %234, %232, %230, %228, %226, %224, %222, %220, %218, %.preheader.3
  %.3116.3 = phi i32 [ %219, %218 ], [ %214, %.preheader.3 ], [ %214, %220 ], [ %214, %222 ], [ %214, %224 ], [ %214, %226 ], [ %214, %228 ], [ %214, %230 ], [ %214, %232 ], [ %214, %234 ], [ %214, %236 ], [ %214, %238 ], [ %214, %240 ], [ %214, %242 ], [ %214, %244 ], [ %214, %246 ], [ %214, %248 ], [ %251, %250 ]
  %.3112.3 = phi i32 [ %215, %218 ], [ %215, %.preheader.3 ], [ %221, %220 ], [ %223, %222 ], [ %225, %224 ], [ %227, %226 ], [ %229, %228 ], [ %231, %230 ], [ %233, %232 ], [ %235, %234 ], [ %237, %236 ], [ %239, %238 ], [ %241, %240 ], [ %243, %242 ], [ %245, %244 ], [ %247, %246 ], [ %249, %248 ], [ %252, %250 ]
  %253 = shl nuw nsw i32 %.3116.3, 4
  %254 = shl nuw nsw i32 %.3112.3, 4
  %indvars.iv.next.4 = add nuw nsw i64 %31, 5
  %255 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.3
  %256 = load i8, ptr %255, align 1, !tbaa !5
  switch i8 %256, label %119 [
    i8 88, label %289
    i8 120, label %289
    i8 70, label %287
    i8 102, label %287
    i8 69, label %285
    i8 101, label %285
    i8 68, label %283
    i8 100, label %283
    i8 67, label %281
    i8 99, label %281
    i8 66, label %279
    i8 98, label %279
    i8 65, label %277
    i8 97, label %277
    i8 57, label %275
    i8 56, label %273
    i8 55, label %271
    i8 54, label %269
    i8 53, label %267
    i8 52, label %265
    i8 51, label %263
    i8 50, label %261
    i8 49, label %259
    i8 48, label %.preheader.5
    i8 90, label %257
    i8 122, label %257
  ]

257:                                              ; preds = %.preheader.4, %.preheader.4
  %258 = or disjoint i32 %253, 15
  br label %.preheader.5

259:                                              ; preds = %.preheader.4
  %260 = or disjoint i32 %254, 1
  br label %.preheader.5

261:                                              ; preds = %.preheader.4
  %262 = or disjoint i32 %254, 2
  br label %.preheader.5

263:                                              ; preds = %.preheader.4
  %264 = or disjoint i32 %254, 3
  br label %.preheader.5

265:                                              ; preds = %.preheader.4
  %266 = or disjoint i32 %254, 4
  br label %.preheader.5

267:                                              ; preds = %.preheader.4
  %268 = or disjoint i32 %254, 5
  br label %.preheader.5

269:                                              ; preds = %.preheader.4
  %270 = or disjoint i32 %254, 6
  br label %.preheader.5

271:                                              ; preds = %.preheader.4
  %272 = or disjoint i32 %254, 7
  br label %.preheader.5

273:                                              ; preds = %.preheader.4
  %274 = or disjoint i32 %254, 8
  br label %.preheader.5

275:                                              ; preds = %.preheader.4
  %276 = or disjoint i32 %254, 9
  br label %.preheader.5

277:                                              ; preds = %.preheader.4, %.preheader.4
  %278 = or disjoint i32 %254, 10
  br label %.preheader.5

279:                                              ; preds = %.preheader.4, %.preheader.4
  %280 = or disjoint i32 %254, 11
  br label %.preheader.5

281:                                              ; preds = %.preheader.4, %.preheader.4
  %282 = or disjoint i32 %254, 12
  br label %.preheader.5

283:                                              ; preds = %.preheader.4, %.preheader.4
  %284 = or disjoint i32 %254, 13
  br label %.preheader.5

285:                                              ; preds = %.preheader.4, %.preheader.4
  %286 = or disjoint i32 %254, 14
  br label %.preheader.5

287:                                              ; preds = %.preheader.4, %.preheader.4
  %288 = or disjoint i32 %254, 15
  br label %.preheader.5

289:                                              ; preds = %.preheader.4, %.preheader.4
  %290 = or disjoint i32 %253, 15
  %291 = or disjoint i32 %254, 15
  br label %.preheader.5

.preheader.5:                                     ; preds = %289, %287, %285, %283, %281, %279, %277, %275, %273, %271, %269, %267, %265, %263, %261, %259, %257, %.preheader.4
  %.3116.4 = phi i32 [ %258, %257 ], [ %253, %.preheader.4 ], [ %253, %259 ], [ %253, %261 ], [ %253, %263 ], [ %253, %265 ], [ %253, %267 ], [ %253, %269 ], [ %253, %271 ], [ %253, %273 ], [ %253, %275 ], [ %253, %277 ], [ %253, %279 ], [ %253, %281 ], [ %253, %283 ], [ %253, %285 ], [ %253, %287 ], [ %290, %289 ]
  %.3112.4 = phi i32 [ %254, %257 ], [ %254, %.preheader.4 ], [ %260, %259 ], [ %262, %261 ], [ %264, %263 ], [ %266, %265 ], [ %268, %267 ], [ %270, %269 ], [ %272, %271 ], [ %274, %273 ], [ %276, %275 ], [ %278, %277 ], [ %280, %279 ], [ %282, %281 ], [ %284, %283 ], [ %286, %285 ], [ %288, %287 ], [ %291, %289 ]
  %292 = shl nuw nsw i32 %.3116.4, 4
  %293 = shl nuw nsw i32 %.3112.4, 4
  %indvars.iv.next.5 = add nuw nsw i64 %31, 6
  %294 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.4
  %295 = load i8, ptr %294, align 1, !tbaa !5
  switch i8 %295, label %119 [
    i8 88, label %328
    i8 120, label %328
    i8 70, label %326
    i8 102, label %326
    i8 69, label %324
    i8 101, label %324
    i8 68, label %322
    i8 100, label %322
    i8 67, label %320
    i8 99, label %320
    i8 66, label %318
    i8 98, label %318
    i8 65, label %316
    i8 97, label %316
    i8 57, label %314
    i8 56, label %312
    i8 55, label %310
    i8 54, label %308
    i8 53, label %306
    i8 52, label %304
    i8 51, label %302
    i8 50, label %300
    i8 49, label %298
    i8 48, label %.preheader.6
    i8 90, label %296
    i8 122, label %296
  ]

296:                                              ; preds = %.preheader.5, %.preheader.5
  %297 = or disjoint i32 %292, 15
  br label %.preheader.6

298:                                              ; preds = %.preheader.5
  %299 = or disjoint i32 %293, 1
  br label %.preheader.6

300:                                              ; preds = %.preheader.5
  %301 = or disjoint i32 %293, 2
  br label %.preheader.6

302:                                              ; preds = %.preheader.5
  %303 = or disjoint i32 %293, 3
  br label %.preheader.6

304:                                              ; preds = %.preheader.5
  %305 = or disjoint i32 %293, 4
  br label %.preheader.6

306:                                              ; preds = %.preheader.5
  %307 = or disjoint i32 %293, 5
  br label %.preheader.6

308:                                              ; preds = %.preheader.5
  %309 = or disjoint i32 %293, 6
  br label %.preheader.6

310:                                              ; preds = %.preheader.5
  %311 = or disjoint i32 %293, 7
  br label %.preheader.6

312:                                              ; preds = %.preheader.5
  %313 = or disjoint i32 %293, 8
  br label %.preheader.6

314:                                              ; preds = %.preheader.5
  %315 = or disjoint i32 %293, 9
  br label %.preheader.6

316:                                              ; preds = %.preheader.5, %.preheader.5
  %317 = or disjoint i32 %293, 10
  br label %.preheader.6

318:                                              ; preds = %.preheader.5, %.preheader.5
  %319 = or disjoint i32 %293, 11
  br label %.preheader.6

320:                                              ; preds = %.preheader.5, %.preheader.5
  %321 = or disjoint i32 %293, 12
  br label %.preheader.6

322:                                              ; preds = %.preheader.5, %.preheader.5
  %323 = or disjoint i32 %293, 13
  br label %.preheader.6

324:                                              ; preds = %.preheader.5, %.preheader.5
  %325 = or disjoint i32 %293, 14
  br label %.preheader.6

326:                                              ; preds = %.preheader.5, %.preheader.5
  %327 = or disjoint i32 %293, 15
  br label %.preheader.6

328:                                              ; preds = %.preheader.5, %.preheader.5
  %329 = or disjoint i32 %292, 15
  %330 = or disjoint i32 %293, 15
  br label %.preheader.6

.preheader.6:                                     ; preds = %328, %326, %324, %322, %320, %318, %316, %314, %312, %310, %308, %306, %304, %302, %300, %298, %296, %.preheader.5
  %.3116.5 = phi i32 [ %297, %296 ], [ %292, %.preheader.5 ], [ %292, %298 ], [ %292, %300 ], [ %292, %302 ], [ %292, %304 ], [ %292, %306 ], [ %292, %308 ], [ %292, %310 ], [ %292, %312 ], [ %292, %314 ], [ %292, %316 ], [ %292, %318 ], [ %292, %320 ], [ %292, %322 ], [ %292, %324 ], [ %292, %326 ], [ %329, %328 ]
  %.3112.5 = phi i32 [ %293, %296 ], [ %293, %.preheader.5 ], [ %299, %298 ], [ %301, %300 ], [ %303, %302 ], [ %305, %304 ], [ %307, %306 ], [ %309, %308 ], [ %311, %310 ], [ %313, %312 ], [ %315, %314 ], [ %317, %316 ], [ %319, %318 ], [ %321, %320 ], [ %323, %322 ], [ %325, %324 ], [ %327, %326 ], [ %330, %328 ]
  %331 = shl nuw nsw i32 %.3116.5, 4
  %332 = shl nuw nsw i32 %.3112.5, 4
  %indvars.iv.next.6 = add nuw nsw i64 %31, 7
  %333 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.5
  %334 = load i8, ptr %333, align 1, !tbaa !5
  switch i8 %334, label %119 [
    i8 88, label %367
    i8 120, label %367
    i8 70, label %365
    i8 102, label %365
    i8 69, label %363
    i8 101, label %363
    i8 68, label %361
    i8 100, label %361
    i8 67, label %359
    i8 99, label %359
    i8 66, label %357
    i8 98, label %357
    i8 65, label %355
    i8 97, label %355
    i8 57, label %353
    i8 56, label %351
    i8 55, label %349
    i8 54, label %347
    i8 53, label %345
    i8 52, label %343
    i8 51, label %341
    i8 50, label %339
    i8 49, label %337
    i8 48, label %.preheader.7
    i8 90, label %335
    i8 122, label %335
  ]

335:                                              ; preds = %.preheader.6, %.preheader.6
  %336 = or disjoint i32 %331, 15
  br label %.preheader.7

337:                                              ; preds = %.preheader.6
  %338 = or disjoint i32 %332, 1
  br label %.preheader.7

339:                                              ; preds = %.preheader.6
  %340 = or disjoint i32 %332, 2
  br label %.preheader.7

341:                                              ; preds = %.preheader.6
  %342 = or disjoint i32 %332, 3
  br label %.preheader.7

343:                                              ; preds = %.preheader.6
  %344 = or disjoint i32 %332, 4
  br label %.preheader.7

345:                                              ; preds = %.preheader.6
  %346 = or disjoint i32 %332, 5
  br label %.preheader.7

347:                                              ; preds = %.preheader.6
  %348 = or disjoint i32 %332, 6
  br label %.preheader.7

349:                                              ; preds = %.preheader.6
  %350 = or disjoint i32 %332, 7
  br label %.preheader.7

351:                                              ; preds = %.preheader.6
  %352 = or disjoint i32 %332, 8
  br label %.preheader.7

353:                                              ; preds = %.preheader.6
  %354 = or disjoint i32 %332, 9
  br label %.preheader.7

355:                                              ; preds = %.preheader.6, %.preheader.6
  %356 = or disjoint i32 %332, 10
  br label %.preheader.7

357:                                              ; preds = %.preheader.6, %.preheader.6
  %358 = or disjoint i32 %332, 11
  br label %.preheader.7

359:                                              ; preds = %.preheader.6, %.preheader.6
  %360 = or disjoint i32 %332, 12
  br label %.preheader.7

361:                                              ; preds = %.preheader.6, %.preheader.6
  %362 = or disjoint i32 %332, 13
  br label %.preheader.7

363:                                              ; preds = %.preheader.6, %.preheader.6
  %364 = or disjoint i32 %332, 14
  br label %.preheader.7

365:                                              ; preds = %.preheader.6, %.preheader.6
  %366 = or disjoint i32 %332, 15
  br label %.preheader.7

367:                                              ; preds = %.preheader.6, %.preheader.6
  %368 = or disjoint i32 %331, 15
  %369 = or disjoint i32 %332, 15
  br label %.preheader.7

.preheader.7:                                     ; preds = %367, %365, %363, %361, %359, %357, %355, %353, %351, %349, %347, %345, %343, %341, %339, %337, %335, %.preheader.6
  %.3116.6 = phi i32 [ %336, %335 ], [ %331, %.preheader.6 ], [ %331, %337 ], [ %331, %339 ], [ %331, %341 ], [ %331, %343 ], [ %331, %345 ], [ %331, %347 ], [ %331, %349 ], [ %331, %351 ], [ %331, %353 ], [ %331, %355 ], [ %331, %357 ], [ %331, %359 ], [ %331, %361 ], [ %331, %363 ], [ %331, %365 ], [ %368, %367 ]
  %.3112.6 = phi i32 [ %332, %335 ], [ %332, %.preheader.6 ], [ %338, %337 ], [ %340, %339 ], [ %342, %341 ], [ %344, %343 ], [ %346, %345 ], [ %348, %347 ], [ %350, %349 ], [ %352, %351 ], [ %354, %353 ], [ %356, %355 ], [ %358, %357 ], [ %360, %359 ], [ %362, %361 ], [ %364, %363 ], [ %366, %365 ], [ %369, %367 ]
  %370 = shl nuw i32 %.3116.6, 4
  %371 = shl nuw i32 %.3112.6, 4
  %372 = getelementptr inbounds i8, ptr %.0108176, i64 %indvars.iv.next.6
  %373 = load i8, ptr %372, align 1, !tbaa !5
  switch i8 %373, label %119 [
    i8 88, label %406
    i8 120, label %406
    i8 70, label %404
    i8 102, label %404
    i8 69, label %402
    i8 101, label %402
    i8 68, label %400
    i8 100, label %400
    i8 67, label %398
    i8 99, label %398
    i8 66, label %396
    i8 98, label %396
    i8 65, label %394
    i8 97, label %394
    i8 57, label %392
    i8 56, label %390
    i8 55, label %388
    i8 54, label %386
    i8 53, label %384
    i8 52, label %382
    i8 51, label %380
    i8 50, label %378
    i8 49, label %376
    i8 48, label %409
    i8 90, label %374
    i8 122, label %374
  ]

374:                                              ; preds = %.preheader.7, %.preheader.7
  %375 = or disjoint i32 %370, 15
  br label %409

376:                                              ; preds = %.preheader.7
  %377 = or disjoint i32 %371, 1
  br label %409

378:                                              ; preds = %.preheader.7
  %379 = or disjoint i32 %371, 2
  br label %409

380:                                              ; preds = %.preheader.7
  %381 = or disjoint i32 %371, 3
  br label %409

382:                                              ; preds = %.preheader.7
  %383 = or disjoint i32 %371, 4
  br label %409

384:                                              ; preds = %.preheader.7
  %385 = or disjoint i32 %371, 5
  br label %409

386:                                              ; preds = %.preheader.7
  %387 = or disjoint i32 %371, 6
  br label %409

388:                                              ; preds = %.preheader.7
  %389 = or disjoint i32 %371, 7
  br label %409

390:                                              ; preds = %.preheader.7
  %391 = or disjoint i32 %371, 8
  br label %409

392:                                              ; preds = %.preheader.7
  %393 = or disjoint i32 %371, 9
  br label %409

394:                                              ; preds = %.preheader.7, %.preheader.7
  %395 = or disjoint i32 %371, 10
  br label %409

396:                                              ; preds = %.preheader.7, %.preheader.7
  %397 = or disjoint i32 %371, 11
  br label %409

398:                                              ; preds = %.preheader.7, %.preheader.7
  %399 = or disjoint i32 %371, 12
  br label %409

400:                                              ; preds = %.preheader.7, %.preheader.7
  %401 = or disjoint i32 %371, 13
  br label %409

402:                                              ; preds = %.preheader.7, %.preheader.7
  %403 = or disjoint i32 %371, 14
  br label %409

404:                                              ; preds = %.preheader.7, %.preheader.7
  %405 = or disjoint i32 %371, 15
  br label %409

406:                                              ; preds = %.preheader.7, %.preheader.7
  %407 = or disjoint i32 %370, 15
  %408 = or disjoint i32 %371, 15
  br label %409

409:                                              ; preds = %406, %404, %402, %400, %398, %396, %394, %392, %390, %388, %386, %384, %382, %380, %378, %376, %374, %.preheader.7
  %.3116.7 = phi i32 [ %375, %374 ], [ %370, %.preheader.7 ], [ %370, %376 ], [ %370, %378 ], [ %370, %380 ], [ %370, %382 ], [ %370, %384 ], [ %370, %386 ], [ %370, %388 ], [ %370, %390 ], [ %370, %392 ], [ %370, %394 ], [ %370, %396 ], [ %370, %398 ], [ %370, %400 ], [ %370, %402 ], [ %370, %404 ], [ %407, %406 ]
  %.3112.7 = phi i32 [ %371, %374 ], [ %371, %.preheader.7 ], [ %377, %376 ], [ %379, %378 ], [ %381, %380 ], [ %383, %382 ], [ %385, %384 ], [ %387, %386 ], [ %389, %388 ], [ %391, %390 ], [ %393, %392 ], [ %395, %394 ], [ %397, %396 ], [ %399, %398 ], [ %401, %400 ], [ %403, %402 ], [ %405, %404 ], [ %408, %406 ]
  br i1 %.not123, label %412, label %410

410:                                              ; preds = %409
  %411 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv
  store i32 %.3116.7, ptr %411, align 4, !tbaa !8
  br label %412

412:                                              ; preds = %410, %409
  %413 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv
  store i32 %.3112.7, ptr %413, align 4, !tbaa !8
  %414 = add nsw i32 %.1104149, -30
  %indvars.iv.next167 = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next167, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %30, !llvm.loop !12

.loopexit:                                        ; preds = %412, %.preheader133, %.loopexit132, %._crit_edge158._crit_edge, %129, %88, %14, %10
  ret void

415:                                              ; preds = %137, %96
  %.pn127.pn.pn = phi { ptr, i32 } [ %.pn127.pn, %96 ], [ %.pn.pn, %137 ]
  resume { ptr, i32 } %.pn127.pn.pn
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { 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++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !6, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}


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