; LLVM IR from JayXon/Leanify :: formats/pe.ll (ZN2Pe7LeanifyEm)

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"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::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon = type { i8 }
%class.Format = type { ptr, ptr, i64 }
%"struct.Pe::ImageFileHeader" = type { i16, i16, i32, i32, i32, i16, i16 }
%"struct.Pe::ImageOptionalHeader" = type { i16, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, i32, i32, i32, i32, i16, i16, i32, i32, i32, i32, i32, i32 }
%"struct.Pe::ImageDataDirectory" = type { i32, i32 }
%"struct.Pe::ImageSectionHeader" = type { [8 x i8], %union.anon.3, i32, i32, i32, i32, i32, i16, i16, i32 }
%union.anon.3 = type { i32 }
%class.Pe = type { %class.Format, ptr, i32, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Pe::RsrcEntry, std::allocator<Pe::RsrcEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<Pe::RsrcEntry, std::allocator<Pe::RsrcEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<Pe::RsrcEntry, std::allocator<Pe::RsrcEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Pe::RsrcEntry, std::allocator<Pe::RsrcEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Pe::RsrcEntry" = type { ptr, ptr, %"class.std::__cxx11::basic_string" }
%"struct.Pe::ImageResourceDataEntry" = type { i32, i32, i32, i32 }
%"struct.Pe::ImageResourceDirectoryEntry" = type { %union.anon.4, %union.anon.5 }
%union.anon.4 = type { %struct.anon }
%struct.anon = type { i32 }
%union.anon.5 = type { i32 }

@_ZN2Pe12header_magicE = external dso_local constant [2 x i8], align 1
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [32 x i8], align 1
@depth = external global i32, align 4
@max_depth = external global i32, align 4
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN2Pe7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(64) %0, i64 noundef %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i64, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i64, align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca i64, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca %class.anon, align 1
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i64, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i8, align 1
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i64 %1, ptr %5, align 8, !tbaa !9
  %59 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  %60 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %61 = load ptr, ptr %60, align 8, !tbaa !11
  %62 = getelementptr inbounds i8, ptr %61, i64 60
  %63 = load i32, ptr %62, align 4, !tbaa !13
  store i32 %63, ptr %6, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %64 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %65 = load ptr, ptr %64, align 8, !tbaa !11
  %66 = load i32, ptr %6, align 4, !tbaa !13
  %67 = zext i32 %66 to i64
  %68 = getelementptr inbounds i8, ptr %65, i64 %67
  %69 = getelementptr inbounds i8, ptr %68, i64 4
  store ptr %69, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 20
  store ptr %71, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %72 = load i32, ptr %6, align 4, !tbaa !13
  %73 = add i32 %72, 4
  %74 = zext i32 %73 to i64
  %75 = add i64 %74, 20
  store i64 %75, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %76 = load i64, ptr %9, align 8, !tbaa !9
  %77 = add i64 %76, 96
  store i64 %77, ptr %10, align 8, !tbaa !9
  %78 = load i64, ptr %10, align 8, !tbaa !9
  %79 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %80 = load i64, ptr %79, align 8, !tbaa !15
  %81 = icmp ugt i64 %78, %80
  br i1 %81, label %128, label %82

82:                                               ; preds = %2
  %83 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %84 = load ptr, ptr %83, align 8, !tbaa !11
  %85 = load i32, ptr %6, align 4, !tbaa !13
  %86 = zext i32 %85 to i64
  %87 = getelementptr inbounds i8, ptr %84, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !13
  %89 = icmp ne i32 %88, 17744
  br i1 %89, label %128, label %90

90:                                               ; preds = %82
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %91, i32 0, i32 5
  %93 = load i16, ptr %92, align 1, !tbaa !16
  %94 = zext i16 %93 to i64
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %95, i32 0, i32 1
  %97 = load i16, ptr %96, align 1, !tbaa !19
  %98 = zext i16 %97 to i64
  %99 = mul i64 40, %98
  %100 = add i64 %94, %99
  %101 = load i64, ptr %9, align 8, !tbaa !9
  %102 = add i64 %101, %100
  store i64 %102, ptr %9, align 8, !tbaa !9
  %103 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %104 = load i64, ptr %103, align 8, !tbaa !15
  %105 = icmp ugt i64 %102, %104
  br i1 %105, label %128, label %106

106:                                              ; preds = %90
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %107, i32 0, i32 0
  %109 = load i16, ptr %108, align 1, !tbaa !20
  %110 = zext i16 %109 to i32
  %111 = icmp ne i32 %110, 267
  br i1 %111, label %112, label %118

112:                                              ; preds = %106
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %113, i32 0, i32 0
  %115 = load i16, ptr %114, align 1, !tbaa !20
  %116 = zext i16 %115 to i32
  %117 = icmp ne i32 %116, 523
  br i1 %117, label %128, label %118

118:                                              ; preds = %112, %106
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %119, i32 0, i32 11
  %121 = load i32, ptr %120, align 1, !tbaa !22
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %128, label %123

123:                                              ; preds = %118
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %124, i32 0, i32 10
  %126 = load i32, ptr %125, align 1, !tbaa !23
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %133

128:                                              ; preds = %123, %118, %112, %90, %82, %2
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.23)
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %131 = load i64, ptr %5, align 8, !tbaa !9
  %132 = call noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %131)
  store i64 %132, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1494

133:                                              ; preds = %123
  %134 = load ptr, ptr %8, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %134, i32 0, i32 22
  %136 = load i16, ptr %135, align 1, !tbaa !24
  %137 = zext i16 %136 to i32
  %138 = icmp eq i32 %137, 1
  br i1 %138, label %139, label %142

139:                                              ; preds = %133
  call void @_Z12VerbosePrintIA35_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(35) @.str.24)
  %140 = load i64, ptr %5, align 8, !tbaa !9
  %141 = call noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %140)
  store i64 %141, ptr %3, align 8
  store i32 1, ptr %11, align 4
  br label %1494

142:                                              ; preds = %133
  %143 = load i64, ptr %9, align 8, !tbaa !9
  %144 = load i64, ptr %10, align 8, !tbaa !9
  %145 = icmp ult i64 %143, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %142
  %147 = load i64, ptr %10, align 8, !tbaa !9
  store i64 %147, ptr %9, align 8, !tbaa !9
  br label %148

148:                                              ; preds = %146, %142
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 16, ptr %12, align 4, !tbaa !13
  %149 = load i32, ptr %6, align 4, !tbaa !13
  %150 = icmp uge i32 %149, 64
  br i1 %150, label %151, label %195

151:                                              ; preds = %148
  %152 = load i32, ptr %6, align 4, !tbaa !13
  %153 = sub i32 %152, 16
  %154 = zext i32 %153 to i64
  %155 = load i64, ptr %9, align 8, !tbaa !9
  %156 = sub i64 %155, %154
  store i64 %156, ptr %9, align 8, !tbaa !9
  %157 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %158 = load ptr, ptr %157, align 8, !tbaa !11
  %159 = load i64, ptr %5, align 8, !tbaa !9
  %160 = sub i64 0, %159
  %161 = getelementptr inbounds i8, ptr %158, i64 %160
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %161, ptr align 1 @_ZN2Pe12header_magicE, i64 2, i1 false)
  %162 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %163 = load ptr, ptr %162, align 8, !tbaa !11
  %164 = load i64, ptr %5, align 8, !tbaa !9
  %165 = sub i64 0, %164
  %166 = getelementptr inbounds i8, ptr %163, i64 %165
  %167 = getelementptr inbounds i8, ptr %166, i64 2
  call void @llvm.memset.p0.i64(ptr align 1 %167, i8 0, i64 14, i1 false)
  %168 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %169 = load ptr, ptr %168, align 8, !tbaa !11
  %170 = load i64, ptr %5, align 8, !tbaa !9
  %171 = sub i64 0, %170
  %172 = getelementptr inbounds i8, ptr %169, i64 %171
  %173 = getelementptr inbounds i8, ptr %172, i64 16
  %174 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %175 = load ptr, ptr %174, align 8, !tbaa !11
  %176 = load i32, ptr %6, align 4, !tbaa !13
  %177 = zext i32 %176 to i64
  %178 = getelementptr inbounds i8, ptr %175, i64 %177
  %179 = load i64, ptr %9, align 8, !tbaa !9
  %180 = sub i64 %179, 16
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %173, ptr align 1 %178, i64 %180, i1 false)
  %181 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %182 = load ptr, ptr %181, align 8, !tbaa !11
  %183 = load i64, ptr %5, align 8, !tbaa !9
  %184 = sub i64 0, %183
  %185 = getelementptr inbounds i8, ptr %182, i64 %184
  %186 = getelementptr inbounds i8, ptr %185, i64 20
  store ptr %186, ptr %7, align 8, !tbaa !5
  %187 = load ptr, ptr %7, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 20
  store ptr %188, ptr %8, align 8, !tbaa !5
  %189 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %190 = load ptr, ptr %189, align 8, !tbaa !11
  %191 = load i64, ptr %5, align 8, !tbaa !9
  %192 = sub i64 0, %191
  %193 = getelementptr inbounds i8, ptr %190, i64 %192
  %194 = getelementptr inbounds i8, ptr %193, i64 60
  store i32 16, ptr %194, align 4, !tbaa !13
  br label %224

195:                                              ; preds = %148
  call void @_Z12VerbosePrintIA39_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(39) @.str.25)
  %196 = load i64, ptr %5, align 8, !tbaa !9
  %197 = icmp ne i64 %196, 0
  br i1 %197, label %198, label %223

198:                                              ; preds = %195
  %199 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %200 = load ptr, ptr %199, align 8, !tbaa !11
  %201 = load i64, ptr %5, align 8, !tbaa !9
  %202 = sub i64 0, %201
  %203 = getelementptr inbounds i8, ptr %200, i64 %202
  %204 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %205 = load ptr, ptr %204, align 8, !tbaa !11
  %206 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %207 = load ptr, ptr %206, align 8, !tbaa !11
  %208 = load i32, ptr %6, align 4, !tbaa !13
  %209 = zext i32 %208 to i64
  %210 = getelementptr inbounds i8, ptr %207, i64 %209
  %211 = getelementptr inbounds i8, ptr %210, i64 84
  %212 = load i32, ptr %211, align 4, !tbaa !13
  %213 = zext i32 %212 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %203, ptr align 1 %205, i64 %213, i1 false)
  %214 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %215 = load ptr, ptr %214, align 8, !tbaa !11
  %216 = load i64, ptr %5, align 8, !tbaa !9
  %217 = sub i64 0, %216
  %218 = getelementptr inbounds i8, ptr %215, i64 %217
  %219 = load i32, ptr %6, align 4, !tbaa !13
  %220 = zext i32 %219 to i64
  %221 = getelementptr inbounds i8, ptr %218, i64 %220
  %222 = getelementptr inbounds i8, ptr %221, i64 4
  store ptr %222, ptr %7, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %198, %195
  br label %224

224:                                              ; preds = %223, %151
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  %226 = load ptr, ptr %8, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %226, i32 0, i32 0
  %228 = load i16, ptr %227, align 1, !tbaa !20
  %229 = zext i16 %228 to i32
  %230 = icmp eq i32 %229, 267
  %231 = zext i1 %230 to i64
  %232 = select i1 %230, i32 96, i32 112
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds i8, ptr %225, i64 %233
  store ptr %234, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load ptr, ptr %7, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %236, i32 0, i32 5
  %238 = load i16, ptr %237, align 1, !tbaa !16
  %239 = zext i16 %238 to i32
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds i8, ptr %235, i64 %240
  store ptr %241, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %242 = load ptr, ptr %13, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %242, i64 5
  %244 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %243, i32 0, i32 0
  %245 = load i32, ptr %244, align 1, !tbaa !25
  store i32 %245, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %246 = load ptr, ptr %13, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %246, i64 2
  %248 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %247, i32 0, i32 0
  %249 = load i32, ptr %248, align 1, !tbaa !25
  store i32 %249, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !13
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %250, i32 0, i32 6
  %252 = load i16, ptr %251, align 1, !tbaa !27
  %253 = zext i16 %252 to i32
  %254 = and i32 %253, 8192
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %263, label %256

256:                                              ; preds = %224
  %257 = load ptr, ptr %7, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %257, i32 0, i32 6
  %259 = load i16, ptr %258, align 1, !tbaa !27
  %260 = zext i16 %259 to i32
  %261 = or i32 %260, 1
  %262 = trunc i32 %261 to i16
  store i16 %262, ptr %258, align 1, !tbaa !27
  br label %263

263:                                              ; preds = %256, %224
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %264 = load ptr, ptr %8, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %264, i32 0, i32 20
  %266 = load i32, ptr %265, align 1, !tbaa !28
  store i32 %266, ptr %21, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !13
  br label %267

267:                                              ; preds = %403, %263
  %268 = load i32, ptr %22, align 4, !tbaa !13
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %269, i32 0, i32 1
  %271 = load i16, ptr %270, align 1, !tbaa !19
  %272 = zext i16 %271 to i32
  %273 = icmp slt i32 %268, %272
  br i1 %273, label %275, label %274

274:                                              ; preds = %267
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %406

275:                                              ; preds = %267
  %276 = load i32, ptr %15, align 4, !tbaa !13
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %339

278:                                              ; preds = %275
  %279 = load ptr, ptr %14, align 8, !tbaa !5
  %280 = load i32, ptr %22, align 4, !tbaa !13
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %279, i64 %281
  %283 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %282, i32 0, i32 2
  %284 = load i32, ptr %283, align 1, !tbaa !29
  %285 = load i32, ptr %15, align 4, !tbaa !13
  %286 = icmp eq i32 %284, %285
  br i1 %286, label %287, label %339

287:                                              ; preds = %278
  %288 = load ptr, ptr %7, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %288, i32 0, i32 6
  %290 = load i16, ptr %289, align 1, !tbaa !27
  %291 = zext i16 %290 to i32
  %292 = and i32 %291, 1
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %338

294:                                              ; preds = %287
  %295 = load ptr, ptr %14, align 8, !tbaa !5
  %296 = load i32, ptr %22, align 4, !tbaa !13
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %295, i64 %297
  %299 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %298, i32 0, i32 4
  %300 = load i32, ptr %299, align 1, !tbaa !31
  store i32 %300, ptr %17, align 4, !tbaa !13
  %301 = load ptr, ptr %14, align 8, !tbaa !5
  %302 = load i32, ptr %22, align 4, !tbaa !13
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %301, i64 %303
  %305 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %304, i32 0, i32 3
  %306 = load i32, ptr %305, align 1, !tbaa !32
  store i32 %306, ptr %18, align 4, !tbaa !13
  %307 = load ptr, ptr %13, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %307, i64 5
  %309 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %308, i32 0, i32 0
  store i32 0, ptr %309, align 1, !tbaa !25
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %310, i64 5
  %312 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %311, i32 0, i32 1
  store i32 0, ptr %312, align 1, !tbaa !33
  %313 = load ptr, ptr %7, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %313, i32 0, i32 1
  %315 = load i16, ptr %314, align 1, !tbaa !19
  %316 = add i16 %315, -1
  store i16 %316, ptr %314, align 1, !tbaa !19
  %317 = load ptr, ptr %14, align 8, !tbaa !5
  %318 = load i32, ptr %22, align 4, !tbaa !13
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %317, i64 %319
  %321 = load ptr, ptr %14, align 8, !tbaa !5
  %322 = load i32, ptr %22, align 4, !tbaa !13
  %323 = add nsw i32 %322, 1
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %321, i64 %324
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %326, i32 0, i32 1
  %328 = load i16, ptr %327, align 1, !tbaa !19
  %329 = zext i16 %328 to i32
  %330 = load i32, ptr %22, align 4, !tbaa !13
  %331 = sub nsw i32 %329, %330
  %332 = sext i32 %331 to i64
  %333 = mul i64 40, %332
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %320, ptr align 1 %325, i64 %333, i1 false)
  %334 = load i64, ptr %9, align 8, !tbaa !9
  %335 = sub i64 %334, 40
  store i64 %335, ptr %9, align 8, !tbaa !9
  %336 = load i32, ptr %22, align 4, !tbaa !13
  %337 = add nsw i32 %336, -1
  store i32 %337, ptr %22, align 4, !tbaa !13
  call void @_Z12VerbosePrintIA26_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(26) @.str.26)
  br label %338

338:                                              ; preds = %294, %287
  br label %378

339:                                              ; preds = %278, %275
  %340 = load i32, ptr %16, align 4, !tbaa !13
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %377

342:                                              ; preds = %339
  %343 = load ptr, ptr %14, align 8, !tbaa !5
  %344 = load i32, ptr %22, align 4, !tbaa !13
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %343, i64 %345
  %347 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %346, i32 0, i32 2
  %348 = load i32, ptr %347, align 1, !tbaa !29
  %349 = load i32, ptr %16, align 4, !tbaa !13
  %350 = icmp eq i32 %348, %349
  br i1 %350, label %351, label %377

351:                                              ; preds = %342
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = load i32, ptr %22, align 4, !tbaa !13
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %352, i64 %354
  %356 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %355, i32 0, i32 4
  %357 = load i32, ptr %356, align 1, !tbaa !31
  store i32 %357, ptr %19, align 4, !tbaa !13
  %358 = load ptr, ptr %14, align 8, !tbaa !5
  %359 = load i32, ptr %22, align 4, !tbaa !13
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %358, i64 %360
  %362 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %361, i32 0, i32 3
  %363 = load i32, ptr %362, align 1, !tbaa !32
  %364 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  store i32 %363, ptr %364, align 8, !tbaa !34
  %365 = load ptr, ptr %14, align 8, !tbaa !5
  %366 = load i32, ptr %22, align 4, !tbaa !13
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %365, i64 %367
  %369 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %368, i32 0, i32 1
  %370 = load i32, ptr %369, align 1, !tbaa !40
  store i32 %370, ptr %20, align 4, !tbaa !13
  %371 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %372 = load ptr, ptr %371, align 8, !tbaa !11
  %373 = load i32, ptr %19, align 4, !tbaa !13
  %374 = zext i32 %373 to i64
  %375 = getelementptr inbounds i8, ptr %372, i64 %374
  %376 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 1
  store ptr %375, ptr %376, align 8, !tbaa !41
  br label %377

377:                                              ; preds = %351, %342, %339
  br label %378

378:                                              ; preds = %377, %338
  %379 = load ptr, ptr %14, align 8, !tbaa !5
  %380 = load i32, ptr %22, align 4, !tbaa !13
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %379, i64 %381
  %383 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %382, i32 0, i32 4
  %384 = load i32, ptr %383, align 1, !tbaa !31
  %385 = load i32, ptr %21, align 4, !tbaa !13
  %386 = icmp ult i32 %384, %385
  br i1 %386, label %387, label %402

387:                                              ; preds = %378
  %388 = load ptr, ptr %14, align 8, !tbaa !5
  %389 = load i32, ptr %22, align 4, !tbaa !13
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %388, i64 %390
  %392 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %391, i32 0, i32 3
  %393 = load i32, ptr %392, align 1, !tbaa !32
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %402

395:                                              ; preds = %387
  %396 = load ptr, ptr %14, align 8, !tbaa !5
  %397 = load i32, ptr %22, align 4, !tbaa !13
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %396, i64 %398
  %400 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %399, i32 0, i32 4
  %401 = load i32, ptr %400, align 1, !tbaa !31
  store i32 %401, ptr %21, align 4, !tbaa !13
  br label %402

402:                                              ; preds = %395, %387, %378
  br label %403

403:                                              ; preds = %402
  %404 = load i32, ptr %22, align 4, !tbaa !13
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %22, align 4, !tbaa !13
  br label %267, !llvm.loop !42

406:                                              ; preds = %274
  %407 = load i32, ptr %21, align 4, !tbaa !13
  %408 = zext i32 %407 to i64
  %409 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %410 = load i64, ptr %409, align 8, !tbaa !15
  %411 = icmp ugt i64 %408, %410
  br i1 %411, label %412, label %416

412:                                              ; preds = %406
  %413 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %414 = load i64, ptr %413, align 8, !tbaa !15
  %415 = trunc i64 %414 to i32
  store i32 %415, ptr %21, align 4, !tbaa !13
  br label %416

416:                                              ; preds = %412, %406
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %417 = load i64, ptr %9, align 8, !tbaa !9
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %418, i32 0, i32 11
  %420 = load i32, ptr %419, align 1, !tbaa !22
  %421 = zext i32 %420 to i64
  %422 = call noundef i64 @_Z7RoundUpmm(i64 noundef %417, i64 noundef %421)
  %423 = trunc i64 %422 to i32
  store i32 %423, ptr %23, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  store i64 0, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store i64 0, ptr %25, align 8, !tbaa !9
  %424 = load i32, ptr %23, align 4, !tbaa !13
  %425 = load i32, ptr %21, align 4, !tbaa !13
  %426 = icmp ult i32 %424, %425
  br i1 %426, label %427, label %435

427:                                              ; preds = %416
  %428 = load i32, ptr %21, align 4, !tbaa !13
  %429 = load i32, ptr %23, align 4, !tbaa !13
  %430 = sub i32 %428, %429
  %431 = zext i32 %430 to i64
  store i64 %431, ptr %24, align 8, !tbaa !9
  store i64 %431, ptr %25, align 8, !tbaa !9
  %432 = load i32, ptr %23, align 4, !tbaa !13
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %433, i32 0, i32 20
  store i32 %432, ptr %434, align 1, !tbaa !28
  br label %443

435:                                              ; preds = %416
  %436 = load i64, ptr %9, align 8, !tbaa !9
  %437 = load i32, ptr %21, align 4, !tbaa !13
  %438 = zext i32 %437 to i64
  %439 = icmp ule i64 %436, %438
  br i1 %439, label %440, label %442

440:                                              ; preds = %435
  %441 = load i32, ptr %21, align 4, !tbaa !13
  store i32 %441, ptr %23, align 4, !tbaa !13
  br label %442

442:                                              ; preds = %440, %435
  br label %443

443:                                              ; preds = %442, %427
  %444 = load i32, ptr %6, align 4, !tbaa !13
  %445 = icmp uge i32 %444, 64
  br i1 %445, label %446, label %458

446:                                              ; preds = %443
  %447 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %448 = load ptr, ptr %447, align 8, !tbaa !11
  %449 = load i64, ptr %5, align 8, !tbaa !9
  %450 = sub i64 0, %449
  %451 = getelementptr inbounds i8, ptr %448, i64 %450
  %452 = load i64, ptr %9, align 8, !tbaa !9
  %453 = getelementptr inbounds i8, ptr %451, i64 %452
  %454 = load i32, ptr %23, align 4, !tbaa !13
  %455 = zext i32 %454 to i64
  %456 = load i64, ptr %9, align 8, !tbaa !9
  %457 = sub i64 %455, %456
  call void @llvm.memset.p0.i64(ptr align 1 %453, i8 0, i64 %457, i1 false)
  br label %458

458:                                              ; preds = %446, %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %459 = load i32, ptr %18, align 4, !tbaa !13
  %460 = zext i32 %459 to i64
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %461, i32 0, i32 10
  %463 = load i32, ptr %462, align 1, !tbaa !23
  %464 = zext i32 %463 to i64
  %465 = call noundef i64 @_Z7RoundUpmm(i64 noundef %460, i64 noundef %464)
  %466 = trunc i64 %465 to i32
  store i32 %466, ptr %26, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %467 = load i32, ptr %17, align 4, !tbaa !13
  %468 = load i32, ptr %18, align 4, !tbaa !13
  %469 = add i32 %467, %468
  store i32 %469, ptr %27, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  store i64 0, ptr %28, align 8, !tbaa !9
  %470 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  %471 = load i32, ptr %470, align 8, !tbaa !34
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %1173

473:                                              ; preds = %458
  %474 = load i32, ptr %16, align 4, !tbaa !13
  %475 = load i32, ptr %15, align 4, !tbaa !13
  %476 = icmp ugt i32 %474, %475
  br i1 %476, label %477, label %498

477:                                              ; preds = %473
  %478 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %479 = load ptr, ptr %478, align 8, !tbaa !11
  %480 = load i32, ptr %19, align 4, !tbaa !13
  %481 = zext i32 %480 to i64
  %482 = getelementptr inbounds i8, ptr %479, i64 %481
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %483 unwind label %489

483:                                              ; preds = %477
  %484 = load i32, ptr %26, align 4, !tbaa !13
  invoke void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64) %59, ptr noundef %482, ptr noundef %29, i32 noundef %484)
          to label %485 unwind label %493

485:                                              ; preds = %483
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  %486 = load i32, ptr %26, align 4, !tbaa !13
  %487 = load i32, ptr %16, align 4, !tbaa !13
  %488 = sub i32 %487, %486
  store i32 %488, ptr %16, align 4, !tbaa !13
  br label %515

489:                                              ; preds = %477
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %31, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %32, align 4
  br label %497

493:                                              ; preds = %483
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %31, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %32, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %497

497:                                              ; preds = %493, %489
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %1493

498:                                              ; preds = %473
  %499 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %500 = load ptr, ptr %499, align 8, !tbaa !11
  %501 = load i32, ptr %19, align 4, !tbaa !13
  %502 = zext i32 %501 to i64
  %503 = getelementptr inbounds i8, ptr %500, i64 %502
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %504 unwind label %506

504:                                              ; preds = %498
  invoke void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64) %59, ptr noundef %503, ptr noundef %33, i32 noundef 0)
          to label %505 unwind label %510

505:                                              ; preds = %504
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %515

506:                                              ; preds = %498
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %31, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %32, align 4
  br label %514

510:                                              ; preds = %504
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %31, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %32, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %514

514:                                              ; preds = %510, %506
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %1493

515:                                              ; preds = %505, %485
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %516 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %517 = call noundef i64 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %516) #8
  store i64 %517, ptr %35, align 8, !tbaa !9
  call void @_Z12VerbosePrintImJA27_cEEvRKT_DpRKT0_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 1 dereferenceable(27) @.str.27)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %518 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %519 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %518) #8
  %520 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %519, ptr %520, align 8
  %521 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %522 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %521) #8
  %523 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %522, ptr %523, align 8
  %524 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  %525 = load ptr, ptr %524, align 8
  %526 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  %527 = load ptr, ptr %526, align 8
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS3_SaIS3_EEEEZNS2_7LeanifyEmE3$_0EvT_SA_T0_"(ptr %525, ptr %527)
  %528 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %529 = call noundef zeroext i1 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %528) #8
  br i1 %529, label %534, label %530

530:                                              ; preds = %515
  %531 = load i32, ptr %16, align 4, !tbaa !13
  %532 = load i32, ptr %20, align 4, !tbaa !13
  %533 = call noundef zeroext i1 @_ZN2Pe11IsRSRCValidEjj(ptr noundef nonnull align 8 dereferenceable(64) %59, i32 noundef %531, i32 noundef %532)
  br i1 %533, label %606, label %534

534:                                              ; preds = %530, %515
  call void @_Z12VerbosePrintIA32_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(32) @.str.28)
  %535 = load i32, ptr %18, align 4, !tbaa !13
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %582

537:                                              ; preds = %534
  %538 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %539 = load ptr, ptr %538, align 8, !tbaa !11
  %540 = load i64, ptr %5, align 8, !tbaa !9
  %541 = sub i64 0, %540
  %542 = getelementptr inbounds i8, ptr %539, i64 %541
  %543 = load i32, ptr %23, align 4, !tbaa !13
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds i8, ptr %542, i64 %544
  %546 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %547 = load ptr, ptr %546, align 8, !tbaa !11
  %548 = load i32, ptr %23, align 4, !tbaa !13
  %549 = zext i32 %548 to i64
  %550 = getelementptr inbounds i8, ptr %547, i64 %549
  %551 = load i64, ptr %24, align 8, !tbaa !9
  %552 = getelementptr inbounds i8, ptr %550, i64 %551
  %553 = load i32, ptr %17, align 4, !tbaa !13
  %554 = load i32, ptr %23, align 4, !tbaa !13
  %555 = sub i32 %553, %554
  %556 = zext i32 %555 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %545, ptr align 1 %552, i64 %556, i1 false)
  %557 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %558 = load ptr, ptr %557, align 8, !tbaa !11
  %559 = load i64, ptr %5, align 8, !tbaa !9
  %560 = sub i64 0, %559
  %561 = getelementptr inbounds i8, ptr %558, i64 %560
  %562 = load i32, ptr %17, align 4, !tbaa !13
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds i8, ptr %561, i64 %563
  %565 = load i64, ptr %24, align 8, !tbaa !9
  %566 = sub i64 0, %565
  %567 = getelementptr inbounds i8, ptr %564, i64 %566
  %568 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %569 = load ptr, ptr %568, align 8, !tbaa !11
  %570 = load i32, ptr %27, align 4, !tbaa !13
  %571 = zext i32 %570 to i64
  %572 = getelementptr inbounds i8, ptr %569, i64 %571
  %573 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %574 = load i64, ptr %573, align 8, !tbaa !15
  %575 = load i32, ptr %17, align 4, !tbaa !13
  %576 = zext i32 %575 to i64
  %577 = sub i64 %574, %576
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %567, ptr align 1 %572, i64 %577, i1 false)
  %578 = load i32, ptr %18, align 4, !tbaa !13
  %579 = zext i32 %578 to i64
  %580 = load i64, ptr %24, align 8, !tbaa !9
  %581 = add i64 %580, %579
  store i64 %581, ptr %24, align 8, !tbaa !9
  br label %605

582:                                              ; preds = %534
  %583 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %584 = load ptr, ptr %583, align 8, !tbaa !11
  %585 = load i64, ptr %5, align 8, !tbaa !9
  %586 = sub i64 0, %585
  %587 = getelementptr inbounds i8, ptr %584, i64 %586
  %588 = load i32, ptr %23, align 4, !tbaa !13
  %589 = zext i32 %588 to i64
  %590 = getelementptr inbounds i8, ptr %587, i64 %589
  %591 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %592 = load ptr, ptr %591, align 8, !tbaa !11
  %593 = load i32, ptr %23, align 4, !tbaa !13
  %594 = zext i32 %593 to i64
  %595 = getelementptr inbounds i8, ptr %592, i64 %594
  %596 = load i64, ptr %24, align 8, !tbaa !9
  %597 = getelementptr inbounds i8, ptr %595, i64 %596
  %598 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %599 = load i64, ptr %598, align 8, !tbaa !15
  %600 = load i32, ptr %23, align 4, !tbaa !13
  %601 = zext i32 %600 to i64
  %602 = sub i64 %599, %601
  %603 = load i64, ptr %24, align 8, !tbaa !9
  %604 = sub i64 %602, %603
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %590, ptr align 1 %597, i64 %604, i1 false)
  br label %605

605:                                              ; preds = %582, %537
  br label %1172

606:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  %607 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %608 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %607) #8
  %609 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %608, i32 0, i32 0
  %610 = load ptr, ptr %609, align 8, !tbaa !44
  %611 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %610, i32 0, i32 0
  %612 = load i32, ptr %611, align 1, !tbaa !48
  %613 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %614 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %613) #8
  %615 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %614, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !44
  %617 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %616, i32 0, i32 1
  %618 = load i32, ptr %617, align 1, !tbaa !50
  %619 = add i32 %612, %618
  store i32 %619, ptr %39, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %620 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %621 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %620, i64 noundef 0) #8
  %622 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %621, i32 0, i32 0
  %623 = load ptr, ptr %622, align 8, !tbaa !44
  %624 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %623, i32 0, i32 0
  %625 = load i32, ptr %624, align 1, !tbaa !48
  store i32 %625, ptr %40, align 4, !tbaa !13
  %626 = load i32, ptr %18, align 4, !tbaa !13
  %627 = icmp ne i32 %626, 0
  br i1 %627, label %628, label %687

628:                                              ; preds = %606
  %629 = load i32, ptr %17, align 4, !tbaa !13
  %630 = load i32, ptr %19, align 4, !tbaa !13
  %631 = icmp ult i32 %629, %630
  br i1 %631, label %632, label %687

632:                                              ; preds = %628
  %633 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %634 = load ptr, ptr %633, align 8, !tbaa !11
  %635 = load i64, ptr %5, align 8, !tbaa !9
  %636 = sub i64 0, %635
  %637 = getelementptr inbounds i8, ptr %634, i64 %636
  %638 = load i32, ptr %23, align 4, !tbaa !13
  %639 = zext i32 %638 to i64
  %640 = getelementptr inbounds i8, ptr %637, i64 %639
  %641 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %642 = load ptr, ptr %641, align 8, !tbaa !11
  %643 = load i32, ptr %23, align 4, !tbaa !13
  %644 = zext i32 %643 to i64
  %645 = getelementptr inbounds i8, ptr %642, i64 %644
  %646 = load i64, ptr %24, align 8, !tbaa !9
  %647 = getelementptr inbounds i8, ptr %645, i64 %646
  %648 = load i32, ptr %17, align 4, !tbaa !13
  %649 = load i32, ptr %23, align 4, !tbaa !13
  %650 = sub i32 %648, %649
  %651 = zext i32 %650 to i64
  %652 = load i64, ptr %24, align 8, !tbaa !9
  %653 = sub i64 %651, %652
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %640, ptr align 1 %647, i64 %653, i1 false)
  %654 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %655 = load ptr, ptr %654, align 8, !tbaa !11
  %656 = load i64, ptr %5, align 8, !tbaa !9
  %657 = sub i64 0, %656
  %658 = getelementptr inbounds i8, ptr %655, i64 %657
  %659 = load i32, ptr %17, align 4, !tbaa !13
  %660 = zext i32 %659 to i64
  %661 = getelementptr inbounds i8, ptr %658, i64 %660
  %662 = load i64, ptr %24, align 8, !tbaa !9
  %663 = sub i64 0, %662
  %664 = getelementptr inbounds i8, ptr %661, i64 %663
  %665 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %666 = load ptr, ptr %665, align 8, !tbaa !11
  %667 = load i32, ptr %27, align 4, !tbaa !13
  %668 = zext i32 %667 to i64
  %669 = getelementptr inbounds i8, ptr %666, i64 %668
  %670 = load i32, ptr %19, align 4, !tbaa !13
  %671 = load i32, ptr %27, align 4, !tbaa !13
  %672 = sub i32 %670, %671
  %673 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %674 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %673, i64 noundef 0) #8
  %675 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %674, i32 0, i32 0
  %676 = load ptr, ptr %675, align 8, !tbaa !44
  %677 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %676, i32 0, i32 0
  %678 = load i32, ptr %677, align 1, !tbaa !48
  %679 = add i32 %672, %678
  %680 = load i32, ptr %16, align 4, !tbaa !13
  %681 = sub i32 %679, %680
  %682 = zext i32 %681 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %664, ptr align 1 %669, i64 %682, i1 false)
  %683 = load i32, ptr %18, align 4, !tbaa !13
  %684 = zext i32 %683 to i64
  %685 = load i64, ptr %24, align 8, !tbaa !9
  %686 = add i64 %685, %684
  store i64 %686, ptr %24, align 8, !tbaa !9
  br label %721

687:                                              ; preds = %628, %606
  %688 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %689 = load ptr, ptr %688, align 8, !tbaa !11
  %690 = load i64, ptr %5, align 8, !tbaa !9
  %691 = sub i64 0, %690
  %692 = getelementptr inbounds i8, ptr %689, i64 %691
  %693 = load i32, ptr %23, align 4, !tbaa !13
  %694 = zext i32 %693 to i64
  %695 = getelementptr inbounds i8, ptr %692, i64 %694
  %696 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %697 = load ptr, ptr %696, align 8, !tbaa !11
  %698 = load i32, ptr %23, align 4, !tbaa !13
  %699 = zext i32 %698 to i64
  %700 = getelementptr inbounds i8, ptr %697, i64 %699
  %701 = load i64, ptr %24, align 8, !tbaa !9
  %702 = getelementptr inbounds i8, ptr %700, i64 %701
  %703 = load i32, ptr %19, align 4, !tbaa !13
  %704 = zext i32 %703 to i64
  %705 = load i64, ptr %24, align 8, !tbaa !9
  %706 = sub i64 %704, %705
  %707 = load i32, ptr %23, align 4, !tbaa !13
  %708 = zext i32 %707 to i64
  %709 = sub i64 %706, %708
  %710 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  %711 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %710, i64 noundef 0) #8
  %712 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %711, i32 0, i32 0
  %713 = load ptr, ptr %712, align 8, !tbaa !44
  %714 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %713, i32 0, i32 0
  %715 = load i32, ptr %714, align 1, !tbaa !48
  %716 = zext i32 %715 to i64
  %717 = add i64 %709, %716
  %718 = load i32, ptr %16, align 4, !tbaa !13
  %719 = zext i32 %718 to i64
  %720 = sub i64 %717, %719
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %695, ptr align 1 %702, i64 %720, i1 false)
  br label %721

721:                                              ; preds = %687, %632
  %722 = load i32, ptr @depth, align 4, !tbaa !13
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr @depth, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %724 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 3
  store ptr %724, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %725 = load ptr, ptr %41, align 8, !tbaa !5
  %726 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %725) #8
  %727 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  store ptr %726, ptr %727, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %728 = load ptr, ptr %41, align 8, !tbaa !5
  %729 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %728) #8
  %730 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %43, i32 0, i32 0
  store ptr %729, ptr %730, align 8
  br label %731

731:                                              ; preds = %926, %721
  %732 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br i1 %732, label %734, label %733

733:                                              ; preds = %731
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %928

734:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %735 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  store ptr %735, ptr %44, align 8, !tbaa !5
  %736 = load i32, ptr @depth, align 4, !tbaa !13
  %737 = load i32, ptr @max_depth, align 4, !tbaa !13
  %738 = icmp sle i32 %736, %737
  br i1 %738, label %739, label %742

739:                                              ; preds = %734
  %740 = load ptr, ptr %44, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %740, i32 0, i32 2
  call void @_Z13PrintFileNameRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %741)
  br label %742

742:                                              ; preds = %739, %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %743 = load ptr, ptr %44, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %743, i32 0, i32 0
  %745 = load ptr, ptr %744, align 8, !tbaa !44
  %746 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 1
  %747 = load ptr, ptr %746, align 8, !tbaa !41
  %748 = ptrtoint ptr %745 to i64
  %749 = ptrtoint ptr %747 to i64
  %750 = sub i64 %748, %749
  %751 = load i32, ptr %16, align 4, !tbaa !13
  %752 = zext i32 %751 to i64
  %753 = add nsw i64 %750, %752
  %754 = trunc i64 %753 to i32
  store i32 %754, ptr %45, align 4, !tbaa !13
  %755 = load i32, ptr %45, align 4, !tbaa !13
  %756 = load i32, ptr %40, align 4, !tbaa !13
  %757 = icmp uge i32 %755, %756
  br i1 %757, label %758, label %831

758:                                              ; preds = %742
  %759 = load i32, ptr %45, align 4, !tbaa !13
  %760 = load ptr, ptr %44, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %760, i32 0, i32 0
  %762 = load ptr, ptr %761, align 8, !tbaa !44
  %763 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %762, i32 0, i32 0
  %764 = load i32, ptr %763, align 1, !tbaa !48
  %765 = icmp ult i32 %759, %764
  br i1 %765, label %766, label %831

766:                                              ; preds = %758
  %767 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %768 = load ptr, ptr %767, align 8, !tbaa !11
  %769 = load i64, ptr %5, align 8, !tbaa !9
  %770 = sub i64 0, %769
  %771 = getelementptr inbounds i8, ptr %768, i64 %770
  %772 = load i32, ptr %19, align 4, !tbaa !13
  %773 = zext i32 %772 to i64
  %774 = getelementptr inbounds i8, ptr %771, i64 %773
  %775 = load i32, ptr %40, align 4, !tbaa !13
  %776 = zext i32 %775 to i64
  %777 = getelementptr inbounds i8, ptr %774, i64 %776
  %778 = load i32, ptr %16, align 4, !tbaa !13
  %779 = zext i32 %778 to i64
  %780 = sub i64 0, %779
  %781 = getelementptr inbounds i8, ptr %777, i64 %780
  %782 = load i64, ptr %24, align 8, !tbaa !9
  %783 = sub i64 0, %782
  %784 = getelementptr inbounds i8, ptr %781, i64 %783
  %785 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %786 = load ptr, ptr %785, align 8, !tbaa !11
  %787 = load i32, ptr %19, align 4, !tbaa !13
  %788 = zext i32 %787 to i64
  %789 = getelementptr inbounds i8, ptr %786, i64 %788
  %790 = load i32, ptr %45, align 4, !tbaa !13
  %791 = zext i32 %790 to i64
  %792 = getelementptr inbounds i8, ptr %789, i64 %791
  %793 = load i32, ptr %16, align 4, !tbaa !13
  %794 = zext i32 %793 to i64
  %795 = sub i64 0, %794
  %796 = getelementptr inbounds i8, ptr %792, i64 %795
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %784, ptr align 1 %796, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %797 = load i32, ptr %45, align 4, !tbaa !13
  %798 = load i32, ptr %40, align 4, !tbaa !13
  %799 = sub i32 %797, %798
  store i32 %799, ptr %46, align 4, !tbaa !13
  %800 = load ptr, ptr %44, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %800, i32 0, i32 0
  %802 = load ptr, ptr %801, align 8, !tbaa !44
  %803 = load i32, ptr %46, align 4, !tbaa !13
  %804 = zext i32 %803 to i64
  %805 = sub i64 0, %804
  %806 = getelementptr inbounds i8, ptr %802, i64 %805
  %807 = load ptr, ptr %44, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %807, i32 0, i32 0
  store ptr %806, ptr %808, align 8, !tbaa !44
  %809 = load ptr, ptr %44, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %809, i32 0, i32 1
  %811 = load ptr, ptr %810, align 8, !tbaa !51
  %812 = load i64, ptr %24, align 8, !tbaa !9
  %813 = sub i64 0, %812
  %814 = getelementptr inbounds i8, ptr %811, i64 %813
  %815 = load i64, ptr %5, align 8, !tbaa !9
  %816 = sub i64 0, %815
  %817 = getelementptr inbounds i8, ptr %814, i64 %816
  %818 = load ptr, ptr %44, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %818, i32 0, i32 1
  store ptr %817, ptr %819, align 8, !tbaa !51
  %820 = load i32, ptr %46, align 4, !tbaa !13
  %821 = load ptr, ptr %44, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %821, i32 0, i32 1
  %823 = load ptr, ptr %822, align 8, !tbaa !51
  %824 = getelementptr inbounds %"struct.Pe::ImageResourceDirectoryEntry", ptr %823, i32 0, i32 1
  %825 = load i32, ptr %824, align 1, !tbaa !40
  %826 = sub i32 %825, %820
  store i32 %826, ptr %824, align 1, !tbaa !40
  %827 = load i32, ptr %45, align 4, !tbaa !13
  %828 = zext i32 %827 to i64
  %829 = add i64 %828, 16
  %830 = trunc i64 %829 to i32
  store i32 %830, ptr %40, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %831

831:                                              ; preds = %766, %758, %742
  %832 = load ptr, ptr %44, align 8, !tbaa !5
  %833 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %832, i32 0, i32 0
  %834 = load ptr, ptr %833, align 8, !tbaa !44
  %835 = load i64, ptr %24, align 8, !tbaa !9
  %836 = sub i64 0, %835
  %837 = getelementptr inbounds i8, ptr %834, i64 %836
  %838 = load i64, ptr %5, align 8, !tbaa !9
  %839 = sub i64 0, %838
  %840 = getelementptr inbounds i8, ptr %837, i64 %839
  %841 = load ptr, ptr %44, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %841, i32 0, i32 0
  store ptr %840, ptr %842, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %843 = load ptr, ptr %44, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %843, i32 0, i32 0
  %845 = load ptr, ptr %844, align 8, !tbaa !44
  store ptr %845, ptr %47, align 8, !tbaa !5
  %846 = load ptr, ptr %47, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %846, i32 0, i32 0
  %848 = load i32, ptr %847, align 1, !tbaa !48
  %849 = and i32 %848, 3
  %850 = icmp eq i32 %849, 0
  br i1 %850, label %851, label %882

851:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  %852 = load i32, ptr %40, align 4, !tbaa !13
  %853 = zext i32 %852 to i64
  %854 = call noundef i64 @_Z7RoundUpmm(i64 noundef %853, i64 noundef 4)
  %855 = load i32, ptr %40, align 4, !tbaa !13
  %856 = zext i32 %855 to i64
  %857 = sub i64 %854, %856
  %858 = trunc i64 %857 to i32
  store i32 %858, ptr %48, align 4, !tbaa !13
  %859 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %860 = load ptr, ptr %859, align 8, !tbaa !11
  %861 = load i64, ptr %5, align 8, !tbaa !9
  %862 = sub i64 0, %861
  %863 = getelementptr inbounds i8, ptr %860, i64 %862
  %864 = load i32, ptr %19, align 4, !tbaa !13
  %865 = zext i32 %864 to i64
  %866 = getelementptr inbounds i8, ptr %863, i64 %865
  %867 = load i32, ptr %40, align 4, !tbaa !13
  %868 = zext i32 %867 to i64
  %869 = getelementptr inbounds i8, ptr %866, i64 %868
  %870 = load i32, ptr %16, align 4, !tbaa !13
  %871 = zext i32 %870 to i64
  %872 = sub i64 0, %871
  %873 = getelementptr inbounds i8, ptr %869, i64 %872
  %874 = load i64, ptr %24, align 8, !tbaa !9
  %875 = sub i64 0, %874
  %876 = getelementptr inbounds i8, ptr %873, i64 %875
  %877 = load i32, ptr %48, align 4, !tbaa !13
  %878 = zext i32 %877 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %876, i8 0, i64 %878, i1 false)
  %879 = load i32, ptr %48, align 4, !tbaa !13
  %880 = load i32, ptr %40, align 4, !tbaa !13
  %881 = add i32 %880, %879
  store i32 %881, ptr %40, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  br label %882

882:                                              ; preds = %851, %831
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %883 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %884 = load ptr, ptr %883, align 8, !tbaa !11
  %885 = load i32, ptr %19, align 4, !tbaa !13
  %886 = zext i32 %885 to i64
  %887 = getelementptr inbounds i8, ptr %884, i64 %886
  %888 = load ptr, ptr %47, align 8, !tbaa !5
  %889 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %888, i32 0, i32 0
  %890 = load i32, ptr %889, align 1, !tbaa !48
  %891 = zext i32 %890 to i64
  %892 = getelementptr inbounds i8, ptr %887, i64 %891
  %893 = load i32, ptr %16, align 4, !tbaa !13
  %894 = zext i32 %893 to i64
  %895 = sub i64 0, %894
  %896 = getelementptr inbounds i8, ptr %892, i64 %895
  %897 = load ptr, ptr %47, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %897, i32 0, i32 1
  %899 = load i32, ptr %898, align 1, !tbaa !50
  %900 = zext i32 %899 to i64
  %901 = load ptr, ptr %47, align 8, !tbaa !5
  %902 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %901, i32 0, i32 0
  %903 = load i32, ptr %902, align 1, !tbaa !48
  %904 = load i32, ptr %40, align 4, !tbaa !13
  %905 = sub i32 %903, %904
  %906 = zext i32 %905 to i64
  %907 = load i64, ptr %24, align 8, !tbaa !9
  %908 = add i64 %906, %907
  %909 = load i64, ptr %5, align 8, !tbaa !9
  %910 = add i64 %908, %909
  %911 = load ptr, ptr %44, align 8, !tbaa !5
  %912 = getelementptr inbounds %"struct.Pe::RsrcEntry", ptr %911, i32 0, i32 2
  %913 = call noundef i64 @_Z11LeanifyFilePvmmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %896, i64 noundef %900, i64 noundef %910, ptr noundef nonnull align 8 dereferenceable(32) %912)
  store i64 %913, ptr %49, align 8, !tbaa !9
  %914 = load i32, ptr %40, align 4, !tbaa !13
  %915 = load ptr, ptr %47, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %915, i32 0, i32 0
  store i32 %914, ptr %916, align 1, !tbaa !48
  %917 = load i64, ptr %49, align 8, !tbaa !9
  %918 = trunc i64 %917 to i32
  %919 = load ptr, ptr %47, align 8, !tbaa !5
  %920 = getelementptr inbounds %"struct.Pe::ImageResourceDataEntry", ptr %919, i32 0, i32 1
  store i32 %918, ptr %920, align 1, !tbaa !50
  %921 = load i64, ptr %49, align 8, !tbaa !9
  %922 = load i32, ptr %40, align 4, !tbaa !13
  %923 = zext i32 %922 to i64
  %924 = add i64 %923, %921
  %925 = trunc i64 %924 to i32
  store i32 %925, ptr %40, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %926

926:                                              ; preds = %882
  %927 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %731

928:                                              ; preds = %733
  %929 = load i32, ptr @depth, align 4, !tbaa !13
  %930 = add nsw i32 %929, -1
  store i32 %930, ptr @depth, align 4, !tbaa !13
  %931 = load i32, ptr %39, align 4, !tbaa !13
  %932 = load i32, ptr %40, align 4, !tbaa !13
  %933 = sub i32 %931, %932
  %934 = zext i32 %933 to i64
  store i64 %934, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %935 = load i32, ptr %19, align 4, !tbaa !13
  %936 = load i32, ptr %40, align 4, !tbaa !13
  %937 = add i32 %935, %936
  %938 = load i32, ptr %16, align 4, !tbaa !13
  %939 = sub i32 %937, %938
  store i32 %939, ptr %50, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %940 = load i32, ptr %50, align 4, !tbaa !13
  %941 = zext i32 %940 to i64
  %942 = load ptr, ptr %8, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %942, i32 0, i32 11
  %944 = load i32, ptr %943, align 1, !tbaa !22
  %945 = zext i32 %944 to i64
  %946 = call noundef i64 @_Z7RoundUpmm(i64 noundef %941, i64 noundef %945)
  %947 = trunc i64 %946 to i32
  store i32 %947, ptr %51, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %948 = load i32, ptr %19, align 4, !tbaa !13
  %949 = load i32, ptr %39, align 4, !tbaa !13
  %950 = add i32 %948, %949
  %951 = load i32, ptr %16, align 4, !tbaa !13
  %952 = sub i32 %950, %951
  %953 = zext i32 %952 to i64
  %954 = load ptr, ptr %8, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %954, i32 0, i32 11
  %956 = load i32, ptr %955, align 1, !tbaa !22
  %957 = zext i32 %956 to i64
  %958 = call noundef i64 @_Z7RoundUpmm(i64 noundef %953, i64 noundef %957)
  %959 = trunc i64 %958 to i32
  store i32 %959, ptr %52, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %960 = load i32, ptr %19, align 4, !tbaa !13
  %961 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  %962 = load i32, ptr %961, align 8, !tbaa !34
  %963 = add i32 %960, %962
  store i32 %963, ptr %53, align 4, !tbaa !13
  %964 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %965 = load ptr, ptr %964, align 8, !tbaa !11
  %966 = load i64, ptr %5, align 8, !tbaa !9
  %967 = sub i64 0, %966
  %968 = getelementptr inbounds i8, ptr %965, i64 %967
  %969 = load i32, ptr %50, align 4, !tbaa !13
  %970 = zext i32 %969 to i64
  %971 = getelementptr inbounds i8, ptr %968, i64 %970
  %972 = load i64, ptr %24, align 8, !tbaa !9
  %973 = sub i64 0, %972
  %974 = getelementptr inbounds i8, ptr %971, i64 %973
  %975 = load i64, ptr %28, align 8, !tbaa !9
  call void @llvm.memset.p0.i64(ptr align 1 %974, i8 0, i64 %975, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  %976 = load ptr, ptr %13, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %976, i64 1
  %978 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %977, i32 0, i32 0
  %979 = load i32, ptr %978, align 1, !tbaa !25
  %980 = load i32, ptr %16, align 4, !tbaa !13
  %981 = icmp ugt i32 %979, %980
  br i1 %981, label %982, label %997

982:                                              ; preds = %928
  %983 = load ptr, ptr %13, align 8, !tbaa !5
  %984 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %983, i64 1
  %985 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %984, i32 0, i32 0
  %986 = load i32, ptr %985, align 1, !tbaa !25
  %987 = load ptr, ptr %13, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %987, i64 1
  %989 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %988, i32 0, i32 1
  %990 = load i32, ptr %989, align 1, !tbaa !33
  %991 = add i32 %986, %990
  %992 = load i32, ptr %16, align 4, !tbaa !13
  %993 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  %994 = load i32, ptr %993, align 8, !tbaa !34
  %995 = add i32 %992, %994
  %996 = icmp ule i32 %991, %995
  br label %997

997:                                              ; preds = %982, %928
  %998 = phi i1 [ false, %928 ], [ %996, %982 ]
  %999 = zext i1 %998 to i8
  store i8 %999, ptr %54, align 1, !tbaa !52
  %1000 = load i32, ptr %51, align 4, !tbaa !13
  %1001 = load i32, ptr %53, align 4, !tbaa !13
  %1002 = icmp ule i32 %1000, %1001
  br i1 %1002, label %1003, label %1060

1003:                                             ; preds = %997
  %1004 = load i32, ptr %52, align 4, !tbaa !13
  %1005 = load i32, ptr %53, align 4, !tbaa !13
  %1006 = icmp eq i32 %1004, %1005
  br i1 %1006, label %1007, label %1060

1007:                                             ; preds = %1003
  %1008 = load i8, ptr %54, align 1, !tbaa !52, !range !54, !noundef !55
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1060, label %1010

1010:                                             ; preds = %1007
  %1011 = load i32, ptr %51, align 4, !tbaa !13
  %1012 = zext i32 %1011 to i64
  %1013 = load i32, ptr %50, align 4, !tbaa !13
  %1014 = zext i32 %1013 to i64
  %1015 = load i64, ptr %28, align 8, !tbaa !9
  %1016 = add i64 %1014, %1015
  %1017 = icmp ugt i64 %1012, %1016
  br i1 %1017, label %1018, label %1045

1018:                                             ; preds = %1010
  %1019 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1020 = load ptr, ptr %1019, align 8, !tbaa !11
  %1021 = load i64, ptr %5, align 8, !tbaa !9
  %1022 = sub i64 0, %1021
  %1023 = getelementptr inbounds i8, ptr %1020, i64 %1022
  %1024 = load i32, ptr %50, align 4, !tbaa !13
  %1025 = zext i32 %1024 to i64
  %1026 = getelementptr inbounds i8, ptr %1023, i64 %1025
  %1027 = load i64, ptr %28, align 8, !tbaa !9
  %1028 = getelementptr inbounds i8, ptr %1026, i64 %1027
  %1029 = load i64, ptr %24, align 8, !tbaa !9
  %1030 = sub i64 0, %1029
  %1031 = getelementptr inbounds i8, ptr %1028, i64 %1030
  %1032 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1033 = load ptr, ptr %1032, align 8, !tbaa !11
  %1034 = load i32, ptr %50, align 4, !tbaa !13
  %1035 = zext i32 %1034 to i64
  %1036 = getelementptr inbounds i8, ptr %1033, i64 %1035
  %1037 = load i64, ptr %28, align 8, !tbaa !9
  %1038 = getelementptr inbounds i8, ptr %1036, i64 %1037
  %1039 = load i32, ptr %51, align 4, !tbaa !13
  %1040 = load i32, ptr %50, align 4, !tbaa !13
  %1041 = sub i32 %1039, %1040
  %1042 = zext i32 %1041 to i64
  %1043 = load i64, ptr %28, align 8, !tbaa !9
  %1044 = sub i64 %1042, %1043
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1031, ptr align 1 %1038, i64 %1044, i1 false)
  br label %1045

1045:                                             ; preds = %1018, %1010
  %1046 = load i32, ptr %50, align 4, !tbaa !13
  %1047 = load i32, ptr %19, align 4, !tbaa !13
  %1048 = sub i32 %1046, %1047
  store i32 %1048, ptr %20, align 4, !tbaa !13
  %1049 = load i32, ptr %53, align 4, !tbaa !13
  %1050 = load i32, ptr %51, align 4, !tbaa !13
  %1051 = sub i32 %1049, %1050
  %1052 = zext i32 %1051 to i64
  store i64 %1052, ptr %28, align 8, !tbaa !9
  %1053 = load i64, ptr %28, align 8, !tbaa !9
  %1054 = load i64, ptr %24, align 8, !tbaa !9
  %1055 = add i64 %1054, %1053
  store i64 %1055, ptr %24, align 8, !tbaa !9
  %1056 = load i32, ptr %51, align 4, !tbaa !13
  %1057 = load i32, ptr %19, align 4, !tbaa !13
  %1058 = sub i32 %1056, %1057
  %1059 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  store i32 %1058, ptr %1059, align 8, !tbaa !34
  br label %1096

1060:                                             ; preds = %1007, %1003, %997
  %1061 = load i32, ptr %53, align 4, !tbaa !13
  %1062 = zext i32 %1061 to i64
  %1063 = load i32, ptr %50, align 4, !tbaa !13
  %1064 = zext i32 %1063 to i64
  %1065 = load i64, ptr %28, align 8, !tbaa !9
  %1066 = add i64 %1064, %1065
  %1067 = icmp ugt i64 %1062, %1066
  br i1 %1067, label %1068, label %1095

1068:                                             ; preds = %1060
  %1069 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1070 = load ptr, ptr %1069, align 8, !tbaa !11
  %1071 = load i64, ptr %5, align 8, !tbaa !9
  %1072 = sub i64 0, %1071
  %1073 = getelementptr inbounds i8, ptr %1070, i64 %1072
  %1074 = load i32, ptr %50, align 4, !tbaa !13
  %1075 = zext i32 %1074 to i64
  %1076 = getelementptr inbounds i8, ptr %1073, i64 %1075
  %1077 = load i64, ptr %28, align 8, !tbaa !9
  %1078 = getelementptr inbounds i8, ptr %1076, i64 %1077
  %1079 = load i64, ptr %24, align 8, !tbaa !9
  %1080 = sub i64 0, %1079
  %1081 = getelementptr inbounds i8, ptr %1078, i64 %1080
  %1082 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1083 = load ptr, ptr %1082, align 8, !tbaa !11
  %1084 = load i32, ptr %50, align 4, !tbaa !13
  %1085 = zext i32 %1084 to i64
  %1086 = getelementptr inbounds i8, ptr %1083, i64 %1085
  %1087 = load i64, ptr %28, align 8, !tbaa !9
  %1088 = getelementptr inbounds i8, ptr %1086, i64 %1087
  %1089 = load i32, ptr %53, align 4, !tbaa !13
  %1090 = load i32, ptr %50, align 4, !tbaa !13
  %1091 = sub i32 %1089, %1090
  %1092 = zext i32 %1091 to i64
  %1093 = load i64, ptr %28, align 8, !tbaa !9
  %1094 = sub i64 %1092, %1093
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1081, ptr align 1 %1088, i64 %1094, i1 false)
  br label %1095

1095:                                             ; preds = %1068, %1060
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %1096

1096:                                             ; preds = %1095, %1045
  %1097 = load i32, ptr %18, align 4, !tbaa !13
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1149

1099:                                             ; preds = %1096
  %1100 = load i32, ptr %17, align 4, !tbaa !13
  %1101 = load i32, ptr %19, align 4, !tbaa !13
  %1102 = icmp ugt i32 %1100, %1101
  br i1 %1102, label %1103, label %1149

1103:                                             ; preds = %1099
  %1104 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1105 = load ptr, ptr %1104, align 8, !tbaa !11
  %1106 = load i64, ptr %5, align 8, !tbaa !9
  %1107 = sub i64 0, %1106
  %1108 = getelementptr inbounds i8, ptr %1105, i64 %1107
  %1109 = load i32, ptr %53, align 4, !tbaa !13
  %1110 = zext i32 %1109 to i64
  %1111 = getelementptr inbounds i8, ptr %1108, i64 %1110
  %1112 = load i64, ptr %24, align 8, !tbaa !9
  %1113 = sub i64 0, %1112
  %1114 = getelementptr inbounds i8, ptr %1111, i64 %1113
  %1115 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1116 = load ptr, ptr %1115, align 8, !tbaa !11
  %1117 = load i32, ptr %53, align 4, !tbaa !13
  %1118 = zext i32 %1117 to i64
  %1119 = getelementptr inbounds i8, ptr %1116, i64 %1118
  %1120 = load i32, ptr %17, align 4, !tbaa !13
  %1121 = load i32, ptr %53, align 4, !tbaa !13
  %1122 = sub i32 %1120, %1121
  %1123 = zext i32 %1122 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1114, ptr align 1 %1119, i64 %1123, i1 false)
  %1124 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1125 = load ptr, ptr %1124, align 8, !tbaa !11
  %1126 = load i64, ptr %5, align 8, !tbaa !9
  %1127 = sub i64 0, %1126
  %1128 = getelementptr inbounds i8, ptr %1125, i64 %1127
  %1129 = load i32, ptr %17, align 4, !tbaa !13
  %1130 = zext i32 %1129 to i64
  %1131 = getelementptr inbounds i8, ptr %1128, i64 %1130
  %1132 = load i64, ptr %24, align 8, !tbaa !9
  %1133 = sub i64 0, %1132
  %1134 = getelementptr inbounds i8, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1136 = load ptr, ptr %1135, align 8, !tbaa !11
  %1137 = load i32, ptr %27, align 4, !tbaa !13
  %1138 = zext i32 %1137 to i64
  %1139 = getelementptr inbounds i8, ptr %1136, i64 %1138
  %1140 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1141 = load i64, ptr %1140, align 8, !tbaa !15
  %1142 = load i32, ptr %27, align 4, !tbaa !13
  %1143 = zext i32 %1142 to i64
  %1144 = sub i64 %1141, %1143
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1134, ptr align 1 %1139, i64 %1144, i1 false)
  %1145 = load i32, ptr %18, align 4, !tbaa !13
  %1146 = zext i32 %1145 to i64
  %1147 = load i64, ptr %24, align 8, !tbaa !9
  %1148 = add i64 %1147, %1146
  store i64 %1148, ptr %24, align 8, !tbaa !9
  br label %1171

1149:                                             ; preds = %1099, %1096
  %1150 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1151 = load ptr, ptr %1150, align 8, !tbaa !11
  %1152 = load i64, ptr %5, align 8, !tbaa !9
  %1153 = sub i64 0, %1152
  %1154 = getelementptr inbounds i8, ptr %1151, i64 %1153
  %1155 = load i32, ptr %53, align 4, !tbaa !13
  %1156 = zext i32 %1155 to i64
  %1157 = getelementptr inbounds i8, ptr %1154, i64 %1156
  %1158 = load i64, ptr %24, align 8, !tbaa !9
  %1159 = sub i64 0, %1158
  %1160 = getelementptr inbounds i8, ptr %1157, i64 %1159
  %1161 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1162 = load ptr, ptr %1161, align 8, !tbaa !11
  %1163 = load i32, ptr %53, align 4, !tbaa !13
  %1164 = zext i32 %1163 to i64
  %1165 = getelementptr inbounds i8, ptr %1162, i64 %1164
  %1166 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1167 = load i64, ptr %1166, align 8, !tbaa !15
  %1168 = load i32, ptr %53, align 4, !tbaa !13
  %1169 = zext i32 %1168 to i64
  %1170 = sub i64 %1167, %1169
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1160, ptr align 1 %1165, i64 %1170, i1 false)
  br label %1171

1171:                                             ; preds = %1149, %1103
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %1172

1172:                                             ; preds = %1171, %605
  br label %1245

1173:                                             ; preds = %458
  %1174 = load i32, ptr %18, align 4, !tbaa !13
  %1175 = icmp ne i32 %1174, 0
  br i1 %1175, label %1176, label %1221

1176:                                             ; preds = %1173
  %1177 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1178 = load ptr, ptr %1177, align 8, !tbaa !11
  %1179 = load i64, ptr %5, align 8, !tbaa !9
  %1180 = sub i64 0, %1179
  %1181 = getelementptr inbounds i8, ptr %1178, i64 %1180
  %1182 = load i32, ptr %23, align 4, !tbaa !13
  %1183 = zext i32 %1182 to i64
  %1184 = getelementptr inbounds i8, ptr %1181, i64 %1183
  %1185 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1186 = load ptr, ptr %1185, align 8, !tbaa !11
  %1187 = load i32, ptr %23, align 4, !tbaa !13
  %1188 = zext i32 %1187 to i64
  %1189 = getelementptr inbounds i8, ptr %1186, i64 %1188
  %1190 = load i64, ptr %24, align 8, !tbaa !9
  %1191 = getelementptr inbounds i8, ptr %1189, i64 %1190
  %1192 = load i32, ptr %17, align 4, !tbaa !13
  %1193 = load i32, ptr %23, align 4, !tbaa !13
  %1194 = sub i32 %1192, %1193
  %1195 = zext i32 %1194 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1184, ptr align 1 %1191, i64 %1195, i1 false)
  %1196 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1197 = load ptr, ptr %1196, align 8, !tbaa !11
  %1198 = load i64, ptr %5, align 8, !tbaa !9
  %1199 = sub i64 0, %1198
  %1200 = getelementptr inbounds i8, ptr %1197, i64 %1199
  %1201 = load i32, ptr %17, align 4, !tbaa !13
  %1202 = zext i32 %1201 to i64
  %1203 = getelementptr inbounds i8, ptr %1200, i64 %1202
  %1204 = load i64, ptr %24, align 8, !tbaa !9
  %1205 = sub i64 0, %1204
  %1206 = getelementptr inbounds i8, ptr %1203, i64 %1205
  %1207 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1208 = load ptr, ptr %1207, align 8, !tbaa !11
  %1209 = load i32, ptr %27, align 4, !tbaa !13
  %1210 = zext i32 %1209 to i64
  %1211 = getelementptr inbounds i8, ptr %1208, i64 %1210
  %1212 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1213 = load i64, ptr %1212, align 8, !tbaa !15
  %1214 = load i32, ptr %17, align 4, !tbaa !13
  %1215 = zext i32 %1214 to i64
  %1216 = sub i64 %1213, %1215
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1206, ptr align 1 %1211, i64 %1216, i1 false)
  %1217 = load i32, ptr %18, align 4, !tbaa !13
  %1218 = zext i32 %1217 to i64
  %1219 = load i64, ptr %24, align 8, !tbaa !9
  %1220 = add i64 %1219, %1218
  store i64 %1220, ptr %24, align 8, !tbaa !9
  br label %1244

1221:                                             ; preds = %1173
  %1222 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1223 = load ptr, ptr %1222, align 8, !tbaa !11
  %1224 = load i64, ptr %5, align 8, !tbaa !9
  %1225 = sub i64 0, %1224
  %1226 = getelementptr inbounds i8, ptr %1223, i64 %1225
  %1227 = load i32, ptr %23, align 4, !tbaa !13
  %1228 = zext i32 %1227 to i64
  %1229 = getelementptr inbounds i8, ptr %1226, i64 %1228
  %1230 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1231 = load ptr, ptr %1230, align 8, !tbaa !11
  %1232 = load i32, ptr %23, align 4, !tbaa !13
  %1233 = zext i32 %1232 to i64
  %1234 = getelementptr inbounds i8, ptr %1231, i64 %1233
  %1235 = load i64, ptr %24, align 8, !tbaa !9
  %1236 = getelementptr inbounds i8, ptr %1234, i64 %1235
  %1237 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1238 = load i64, ptr %1237, align 8, !tbaa !15
  %1239 = load i32, ptr %23, align 4, !tbaa !13
  %1240 = zext i32 %1239 to i64
  %1241 = sub i64 %1238, %1240
  %1242 = load i64, ptr %24, align 8, !tbaa !9
  %1243 = sub i64 %1241, %1242
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1229, ptr align 1 %1236, i64 %1243, i1 false)
  br label %1244

1244:                                             ; preds = %1221, %1176
  br label %1245

1245:                                             ; preds = %1244, %1172
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  %1246 = load ptr, ptr %13, align 8, !tbaa !5
  %1247 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1246, i64 2
  %1248 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1247, i32 0, i32 1
  %1249 = load i32, ptr %1248, align 1, !tbaa !33
  %1250 = zext i32 %1249 to i64
  %1251 = load ptr, ptr %8, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %1251, i32 0, i32 10
  %1253 = load i32, ptr %1252, align 1, !tbaa !23
  %1254 = zext i32 %1253 to i64
  %1255 = call noundef i64 @_Z7RoundUpmm(i64 noundef %1250, i64 noundef %1254)
  %1256 = load i32, ptr %20, align 4, !tbaa !13
  %1257 = zext i32 %1256 to i64
  %1258 = load ptr, ptr %8, align 8, !tbaa !5
  %1259 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %1258, i32 0, i32 10
  %1260 = load i32, ptr %1259, align 1, !tbaa !23
  %1261 = zext i32 %1260 to i64
  %1262 = call noundef i64 @_Z7RoundUpmm(i64 noundef %1257, i64 noundef %1261)
  %1263 = sub i64 %1255, %1262
  %1264 = trunc i64 %1263 to i32
  store i32 %1264, ptr %55, align 4, !tbaa !13
  %1265 = load i32, ptr %55, align 4, !tbaa !13
  %1266 = icmp slt i32 %1265, 0
  br i1 %1266, label %1267, label %1268

1267:                                             ; preds = %1245
  store i32 0, ptr %55, align 4, !tbaa !13
  br label %1268

1268:                                             ; preds = %1267, %1245
  %1269 = load i32, ptr %26, align 4, !tbaa !13
  %1270 = load i32, ptr %55, align 4, !tbaa !13
  %1271 = add i32 %1269, %1270
  %1272 = load ptr, ptr %8, align 8, !tbaa !5
  %1273 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %1272, i32 0, i32 19
  %1274 = load i32, ptr %1273, align 1, !tbaa !56
  %1275 = sub i32 %1274, %1271
  store i32 %1275, ptr %1273, align 1, !tbaa !56
  call void @_Z12VerbosePrintIA22_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(22) @.str.29)
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i32 0, ptr %56, align 4, !tbaa !13
  br label %1276

1276:                                             ; preds = %1403, %1268
  %1277 = load i32, ptr %56, align 4, !tbaa !13
  %1278 = load ptr, ptr %7, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"struct.Pe::ImageFileHeader", ptr %1278, i32 0, i32 1
  %1280 = load i16, ptr %1279, align 1, !tbaa !19
  %1281 = zext i16 %1280 to i32
  %1282 = icmp slt i32 %1277, %1281
  br i1 %1282, label %1284, label %1283

1283:                                             ; preds = %1276
  store i32 7, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %1406

1284:                                             ; preds = %1276
  %1285 = load ptr, ptr %14, align 8, !tbaa !5
  %1286 = load i32, ptr %56, align 4, !tbaa !13
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1285, i64 %1287
  %1289 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1288, i32 0, i32 2
  %1290 = load i32, ptr %1289, align 1, !tbaa !29
  %1291 = load i32, ptr %15, align 4, !tbaa !13
  %1292 = icmp ugt i32 %1290, %1291
  br i1 %1292, label %1293, label %1302

1293:                                             ; preds = %1284
  %1294 = load i32, ptr %26, align 4, !tbaa !13
  %1295 = load ptr, ptr %14, align 8, !tbaa !5
  %1296 = load i32, ptr %56, align 4, !tbaa !13
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1295, i64 %1297
  %1299 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1298, i32 0, i32 2
  %1300 = load i32, ptr %1299, align 1, !tbaa !29
  %1301 = sub i32 %1300, %1294
  store i32 %1301, ptr %1299, align 1, !tbaa !29
  br label %1302

1302:                                             ; preds = %1293, %1284
  %1303 = load ptr, ptr %14, align 8, !tbaa !5
  %1304 = load i32, ptr %56, align 4, !tbaa !13
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1303, i64 %1305
  %1307 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1306, i32 0, i32 2
  %1308 = load i32, ptr %1307, align 1, !tbaa !29
  %1309 = load i32, ptr %16, align 4, !tbaa !13
  %1310 = icmp ugt i32 %1308, %1309
  br i1 %1310, label %1311, label %1320

1311:                                             ; preds = %1302
  %1312 = load i32, ptr %55, align 4, !tbaa !13
  %1313 = load ptr, ptr %14, align 8, !tbaa !5
  %1314 = load i32, ptr %56, align 4, !tbaa !13
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1313, i64 %1315
  %1317 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1316, i32 0, i32 2
  %1318 = load i32, ptr %1317, align 1, !tbaa !29
  %1319 = sub i32 %1318, %1312
  store i32 %1319, ptr %1317, align 1, !tbaa !29
  br label %1344

1320:                                             ; preds = %1302
  %1321 = load ptr, ptr %14, align 8, !tbaa !5
  %1322 = load i32, ptr %56, align 4, !tbaa !13
  %1323 = sext i32 %1322 to i64
  %1324 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1321, i64 %1323
  %1325 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1324, i32 0, i32 2
  %1326 = load i32, ptr %1325, align 1, !tbaa !29
  %1327 = load i32, ptr %16, align 4, !tbaa !13
  %1328 = icmp eq i32 %1326, %1327
  br i1 %1328, label %1329, label %1343

1329:                                             ; preds = %1320
  %1330 = getelementptr inbounds %class.Pe, ptr %59, i32 0, i32 2
  %1331 = load i32, ptr %1330, align 8, !tbaa !34
  %1332 = load ptr, ptr %14, align 8, !tbaa !5
  %1333 = load i32, ptr %56, align 4, !tbaa !13
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1332, i64 %1334
  %1336 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1335, i32 0, i32 3
  store i32 %1331, ptr %1336, align 1, !tbaa !32
  %1337 = load i32, ptr %20, align 4, !tbaa !13
  %1338 = load ptr, ptr %14, align 8, !tbaa !5
  %1339 = load i32, ptr %56, align 4, !tbaa !13
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1338, i64 %1340
  %1342 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1341, i32 0, i32 1
  store i32 %1337, ptr %1342, align 1, !tbaa !40
  br label %1343

1343:                                             ; preds = %1329, %1320
  br label %1344

1344:                                             ; preds = %1343, %1311
  %1345 = load ptr, ptr %14, align 8, !tbaa !5
  %1346 = load i32, ptr %56, align 4, !tbaa !13
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1345, i64 %1347
  %1349 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1348, i32 0, i32 4
  %1350 = load i32, ptr %1349, align 1, !tbaa !31
  %1351 = load i32, ptr %17, align 4, !tbaa !13
  %1352 = icmp ugt i32 %1350, %1351
  br i1 %1352, label %1353, label %1362

1353:                                             ; preds = %1344
  %1354 = load i32, ptr %18, align 4, !tbaa !13
  %1355 = load ptr, ptr %14, align 8, !tbaa !5
  %1356 = load i32, ptr %56, align 4, !tbaa !13
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1355, i64 %1357
  %1359 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1358, i32 0, i32 4
  %1360 = load i32, ptr %1359, align 1, !tbaa !31
  %1361 = sub i32 %1360, %1354
  store i32 %1361, ptr %1359, align 1, !tbaa !31
  br label %1362

1362:                                             ; preds = %1353, %1344
  %1363 = load ptr, ptr %14, align 8, !tbaa !5
  %1364 = load i32, ptr %56, align 4, !tbaa !13
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1363, i64 %1365
  %1367 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1366, i32 0, i32 4
  %1368 = load i32, ptr %1367, align 1, !tbaa !31
  %1369 = load i32, ptr %19, align 4, !tbaa !13
  %1370 = icmp ugt i32 %1368, %1369
  br i1 %1370, label %1371, label %1382

1371:                                             ; preds = %1362
  %1372 = load i64, ptr %28, align 8, !tbaa !9
  %1373 = load ptr, ptr %14, align 8, !tbaa !5
  %1374 = load i32, ptr %56, align 4, !tbaa !13
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1373, i64 %1375
  %1377 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1376, i32 0, i32 4
  %1378 = load i32, ptr %1377, align 1, !tbaa !31
  %1379 = zext i32 %1378 to i64
  %1380 = sub i64 %1379, %1372
  %1381 = trunc i64 %1380 to i32
  store i32 %1381, ptr %1377, align 1, !tbaa !31
  br label %1382

1382:                                             ; preds = %1371, %1362
  %1383 = load ptr, ptr %14, align 8, !tbaa !5
  %1384 = load i32, ptr %56, align 4, !tbaa !13
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1383, i64 %1385
  %1387 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1386, i32 0, i32 4
  %1388 = load i32, ptr %1387, align 1, !tbaa !31
  %1389 = load i32, ptr %23, align 4, !tbaa !13
  %1390 = icmp ugt i32 %1388, %1389
  br i1 %1390, label %1391, label %1402

1391:                                             ; preds = %1382
  %1392 = load i64, ptr %25, align 8, !tbaa !9
  %1393 = load ptr, ptr %14, align 8, !tbaa !5
  %1394 = load i32, ptr %56, align 4, !tbaa !13
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1393, i64 %1395
  %1397 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %1396, i32 0, i32 4
  %1398 = load i32, ptr %1397, align 1, !tbaa !31
  %1399 = zext i32 %1398 to i64
  %1400 = sub i64 %1399, %1392
  %1401 = trunc i64 %1400 to i32
  store i32 %1401, ptr %1397, align 1, !tbaa !31
  br label %1402

1402:                                             ; preds = %1391, %1382
  br label %1403

1403:                                             ; preds = %1402
  %1404 = load i32, ptr %56, align 4, !tbaa !13
  %1405 = add nsw i32 %1404, 1
  store i32 %1405, ptr %56, align 4, !tbaa !13
  br label %1276, !llvm.loop !57

1406:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %1407 = load ptr, ptr %13, align 8, !tbaa !5
  %1408 = getelementptr inbounds i8, ptr %1407, i64 -4
  %1409 = load i32, ptr %1408, align 4, !tbaa !13
  store i32 %1409, ptr %57, align 4, !tbaa !13
  %1410 = load i32, ptr %57, align 4, !tbaa !13
  %1411 = icmp ugt i32 %1410, 16
  br i1 %1411, label %1412, label %1413

1412:                                             ; preds = %1406
  store i32 16, ptr %57, align 4, !tbaa !13
  br label %1413

1413:                                             ; preds = %1412, %1406
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  store i32 0, ptr %58, align 4, !tbaa !13
  br label %1414

1414:                                             ; preds = %1466, %1413
  %1415 = load i32, ptr %58, align 4, !tbaa !13
  %1416 = load i32, ptr %57, align 4, !tbaa !13
  %1417 = icmp ult i32 %1415, %1416
  br i1 %1417, label %1419, label %1418

1418:                                             ; preds = %1414
  store i32 10, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %1469

1419:                                             ; preds = %1414
  %1420 = load ptr, ptr %13, align 8, !tbaa !5
  %1421 = load i32, ptr %58, align 4, !tbaa !13
  %1422 = zext i32 %1421 to i64
  %1423 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1420, i64 %1422
  %1424 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1423, i32 0, i32 0
  %1425 = load i32, ptr %1424, align 1, !tbaa !25
  %1426 = load i32, ptr %15, align 4, !tbaa !13
  %1427 = icmp ugt i32 %1425, %1426
  br i1 %1427, label %1428, label %1437

1428:                                             ; preds = %1419
  %1429 = load i32, ptr %26, align 4, !tbaa !13
  %1430 = load ptr, ptr %13, align 8, !tbaa !5
  %1431 = load i32, ptr %58, align 4, !tbaa !13
  %1432 = zext i32 %1431 to i64
  %1433 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1430, i64 %1432
  %1434 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1433, i32 0, i32 0
  %1435 = load i32, ptr %1434, align 1, !tbaa !25
  %1436 = sub i32 %1435, %1429
  store i32 %1436, ptr %1434, align 1, !tbaa !25
  br label %1437

1437:                                             ; preds = %1428, %1419
  %1438 = load ptr, ptr %13, align 8, !tbaa !5
  %1439 = load i32, ptr %58, align 4, !tbaa !13
  %1440 = zext i32 %1439 to i64
  %1441 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1438, i64 %1440
  %1442 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1441, i32 0, i32 0
  %1443 = load i32, ptr %1442, align 1, !tbaa !25
  %1444 = zext i32 %1443 to i64
  %1445 = load i32, ptr %16, align 4, !tbaa !13
  %1446 = zext i32 %1445 to i64
  %1447 = load i32, ptr %20, align 4, !tbaa !13
  %1448 = zext i32 %1447 to i64
  %1449 = load ptr, ptr %8, align 8, !tbaa !5
  %1450 = getelementptr inbounds %"struct.Pe::ImageOptionalHeader", ptr %1449, i32 0, i32 10
  %1451 = load i32, ptr %1450, align 1, !tbaa !23
  %1452 = zext i32 %1451 to i64
  %1453 = call noundef i64 @_Z7RoundUpmm(i64 noundef %1448, i64 noundef %1452)
  %1454 = add i64 %1446, %1453
  %1455 = icmp uge i64 %1444, %1454
  br i1 %1455, label %1456, label %1465

1456:                                             ; preds = %1437
  %1457 = load i32, ptr %55, align 4, !tbaa !13
  %1458 = load ptr, ptr %13, align 8, !tbaa !5
  %1459 = load i32, ptr %58, align 4, !tbaa !13
  %1460 = zext i32 %1459 to i64
  %1461 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1458, i64 %1460
  %1462 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1461, i32 0, i32 0
  %1463 = load i32, ptr %1462, align 1, !tbaa !25
  %1464 = sub i32 %1463, %1457
  store i32 %1464, ptr %1462, align 1, !tbaa !25
  br label %1465

1465:                                             ; preds = %1456, %1437
  br label %1466

1466:                                             ; preds = %1465
  %1467 = load i32, ptr %58, align 4, !tbaa !13
  %1468 = add i32 %1467, 1
  store i32 %1468, ptr %58, align 4, !tbaa !13
  br label %1414, !llvm.loop !58

1469:                                             ; preds = %1418
  %1470 = load ptr, ptr %13, align 8, !tbaa !5
  %1471 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1470, i64 2
  %1472 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1471, i32 0, i32 1
  %1473 = load i32, ptr %1472, align 1, !tbaa !33
  %1474 = load i32, ptr %20, align 4, !tbaa !13
  %1475 = icmp ugt i32 %1473, %1474
  br i1 %1475, label %1476, label %1481

1476:                                             ; preds = %1469
  %1477 = load i32, ptr %20, align 4, !tbaa !13
  %1478 = load ptr, ptr %13, align 8, !tbaa !5
  %1479 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1478, i64 2
  %1480 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %1479, i32 0, i32 1
  store i32 %1477, ptr %1480, align 1, !tbaa !33
  br label %1481

1481:                                             ; preds = %1476, %1469
  %1482 = load i64, ptr %5, align 8, !tbaa !9
  %1483 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 1
  %1484 = load ptr, ptr %1483, align 8, !tbaa !11
  %1485 = sub i64 0, %1482
  %1486 = getelementptr inbounds i8, ptr %1484, i64 %1485
  store ptr %1486, ptr %1483, align 8, !tbaa !11
  %1487 = load i64, ptr %24, align 8, !tbaa !9
  %1488 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1489 = load i64, ptr %1488, align 8, !tbaa !15
  %1490 = sub i64 %1489, %1487
  store i64 %1490, ptr %1488, align 8, !tbaa !15
  %1491 = getelementptr inbounds %class.Format, ptr %59, i32 0, i32 2
  %1492 = load i64, ptr %1491, align 8, !tbaa !15
  store i64 %1492, ptr %3, align 8
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %1494

1493:                                             ; preds = %514, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %1496

1494:                                             ; preds = %1481, %139, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  %1495 = load i64, ptr %3, align 8
  ret i64 %1495

1496:                                             ; preds = %1493
  %1497 = load ptr, ptr %31, align 8
  %1498 = load i32, ptr %32, align 4
  %1499 = insertvalue { ptr, i32 } poison, ptr %1497, 0
  %1500 = insertvalue { ptr, i32 } %1499, i32 %1498, 1
  resume { ptr, i32 } %1500
}

; 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) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA35_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(35)) #2

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

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

; 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) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA39_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(39)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA26_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(26)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_Z7RoundUpmm(i64 noundef, i64 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintImJA27_cEEvRKT_DpRKT0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(27)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS3_SaIS3_EEEEZNS2_7LeanifyEmE3$_0EvT_SA_T0_"(ptr, ptr) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN2Pe11IsRSRCValidEjj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA32_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(32)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare void @_Z13PrintFileNameRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #7

declare noundef i64 @_Z11LeanifyFilePvmmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA22_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(22)) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "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 #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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS6Format", !6, i64 8, !10, i64 16}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!12, !10, i64 16}
!16 = !{!17, !18, i64 16}
!17 = !{!"_ZTSN2Pe15ImageFileHeaderE", !18, i64 0, !18, i64 2, !14, i64 4, !14, i64 8, !14, i64 12, !18, i64 16, !18, i64 18}
!18 = !{!"short", !7, i64 0}
!19 = !{!17, !18, i64 2}
!20 = !{!21, !18, i64 0}
!21 = !{!"_ZTSN2Pe19ImageOptionalHeaderE", !18, i64 0, !7, i64 2, !7, i64 3, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !18, i64 40, !18, i64 42, !18, i64 44, !18, i64 46, !18, i64 48, !18, i64 50, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !18, i64 68, !18, i64 70, !14, i64 72, !14, i64 76, !14, i64 80, !14, i64 84, !14, i64 88, !14, i64 92}
!22 = !{!21, !14, i64 36}
!23 = !{!21, !14, i64 32}
!24 = !{!21, !18, i64 68}
!25 = !{!26, !14, i64 0}
!26 = !{!"_ZTSN2Pe18ImageDataDirectoryE", !14, i64 0, !14, i64 4}
!27 = !{!17, !18, i64 18}
!28 = !{!21, !14, i64 60}
!29 = !{!30, !14, i64 12}
!30 = !{!"_ZTSN2Pe18ImageSectionHeaderE", !7, i64 0, !7, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !18, i64 32, !18, i64 34, !14, i64 36}
!31 = !{!30, !14, i64 20}
!32 = !{!30, !14, i64 16}
!33 = !{!26, !14, i64 4}
!34 = !{!35, !14, i64 32}
!35 = !{!"_ZTS2Pe", !12, i64 0, !6, i64 24, !14, i64 32, !36, i64 40}
!36 = !{!"_ZTSSt6vectorIN2Pe9RsrcEntryESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!7, !7, i64 0}
!41 = !{!35, !6, i64 24}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !6, i64 0}
!45 = !{!"_ZTSN2Pe9RsrcEntryE", !6, i64 0, !6, i64 8, !46, i64 16}
!46 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !47, i64 0, !10, i64 8, !7, i64 16}
!47 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!48 = !{!49, !14, i64 0}
!49 = !{!"_ZTSN2Pe22ImageResourceDataEntryE", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!50 = !{!49, !14, i64 4}
!51 = !{!45, !6, i64 8}
!52 = !{!53, !53, i64 0}
!53 = !{!"bool", !7, i64 0}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!21, !14, i64 56}
!57 = distinct !{!57, !43}
!58 = distinct !{!58, !43}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"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::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.Pe::ImageSectionHeader" = type { [8 x i8], %union.anon.3, i32, i32, i32, i32, i32, i16, i16, i32 }
%union.anon.3 = type { i32 }
%"struct.Pe::ImageDataDirectory" = type { i32, i32 }

@_ZN2Pe12header_magicE = external dso_local local_unnamed_addr constant [2 x i8], align 1
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.23 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [32 x i8], align 1
@depth = external local_unnamed_addr global i32, align 4
@max_depth = external local_unnamed_addr global i32, align 4
@.str.29 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN2Pe7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(64) %0, i64 noundef %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca i64, align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = getelementptr inbounds i8, ptr %0, i64 8
  %11 = load ptr, ptr %10, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %11, i64 60
  %13 = load i32, ptr %12, align 4, !tbaa !11
  %14 = zext i32 %13 to i64
  %15 = getelementptr inbounds i8, ptr %11, i64 %14
  %16 = getelementptr inbounds i8, ptr %15, i64 4
  %17 = getelementptr inbounds i8, ptr %15, i64 24
  %18 = add i32 %13, 4
  %19 = zext i32 %18 to i64
  %20 = add nuw nsw i64 %19, 116
  %21 = getelementptr inbounds i8, ptr %0, i64 16
  %22 = load i64, ptr %21, align 8, !tbaa !13
  %23 = icmp ugt i64 %20, %22
  br i1 %23, label %48, label %24

24:                                               ; preds = %2
  %25 = load i32, ptr %15, align 4, !tbaa !11
  %.not = icmp eq i32 %25, 17744
  br i1 %.not, label %26, label %48

26:                                               ; preds = %24
  %27 = getelementptr inbounds i8, ptr %15, i64 20
  %28 = load i16, ptr %27, align 1, !tbaa !14
  %29 = zext i16 %28 to i64
  %30 = getelementptr inbounds i8, ptr %15, i64 6
  %31 = load i16, ptr %30, align 1, !tbaa !17
  %32 = zext i16 %31 to i64
  %33 = mul nuw nsw i64 %32, 40
  %34 = add nuw nsw i64 %19, 20
  %35 = add nuw nsw i64 %34, %29
  %36 = add nuw nsw i64 %35, %33
  %37 = icmp ugt i64 %36, %22
  br i1 %37, label %48, label %38

38:                                               ; preds = %26
  %39 = load i16, ptr %17, align 1, !tbaa !18
  switch i16 %39, label %48 [
    i16 267, label %40
    i16 523, label %40
  ]

40:                                               ; preds = %38, %38
  %41 = getelementptr inbounds i8, ptr %15, i64 60
  %42 = load i32, ptr %41, align 1, !tbaa !20
  %43 = icmp eq i32 %42, 0
  br i1 %43, label %48, label %44

44:                                               ; preds = %40
  %45 = getelementptr inbounds i8, ptr %15, i64 56
  %46 = load i32, ptr %45, align 1, !tbaa !21
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %52

48:                                               ; preds = %38, %44, %40, %26, %24, %2
  %49 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.23)
  %50 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %51 = tail call noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %1)
  br label %609

52:                                               ; preds = %44
  %53 = getelementptr inbounds i8, ptr %15, i64 92
  %54 = load i16, ptr %53, align 1, !tbaa !22
  %55 = icmp eq i16 %54, 1
  br i1 %55, label %56, label %58

56:                                               ; preds = %52
  tail call void @_Z12VerbosePrintIA35_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(35) @.str.24)
  %57 = tail call noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %1)
  br label %609

58:                                               ; preds = %52
  %spec.select = tail call i64 @llvm.umax.i64(i64 %36, i64 %20)
  %59 = icmp ugt i32 %13, 63
  br i1 %59, label %60, label %80

60:                                               ; preds = %58
  %61 = add i32 %13, -16
  %62 = zext i32 %61 to i64
  %63 = sub nsw i64 %spec.select, %62
  %64 = sub i64 0, %1
  %65 = getelementptr inbounds i8, ptr %11, i64 %64
  %66 = load i16, ptr @_ZN2Pe12header_magicE, align 1
  store i16 %66, ptr %65, align 1
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 %64
  %69 = getelementptr inbounds i8, ptr %68, i64 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(14) %69, i8 0, i64 14, i1 false)
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %70, i64 %64
  %72 = getelementptr inbounds i8, ptr %71, i64 16
  %73 = getelementptr inbounds i8, ptr %70, i64 %14
  %74 = add nsw i64 %63, -16
  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %72, ptr nonnull align 1 %73, i64 %74, i1 false)
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %75, i64 %64
  %77 = getelementptr inbounds i8, ptr %76, i64 20
  %78 = getelementptr inbounds i8, ptr %76, i64 40
  %79 = getelementptr inbounds i8, ptr %76, i64 60
  store i32 16, ptr %79, align 4, !tbaa !11
  br label %93

80:                                               ; preds = %58
  tail call void @_Z12VerbosePrintIA39_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(39) @.str.25)
  %.not466 = icmp eq i64 %1, 0
  br i1 %.not466, label %93, label %81

81:                                               ; preds = %80
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = sub i64 0, %1
  %84 = getelementptr inbounds i8, ptr %82, i64 %83
  %85 = getelementptr inbounds i8, ptr %82, i64 %14
  %86 = getelementptr inbounds i8, ptr %85, i64 84
  %87 = load i32, ptr %86, align 4, !tbaa !11
  %88 = zext i32 %87 to i64
  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %84, ptr align 1 %82, i64 %88, i1 false)
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 %83
  %91 = getelementptr inbounds i8, ptr %90, i64 %14
  %92 = getelementptr inbounds i8, ptr %91, i64 4
  br label %93

93:                                               ; preds = %80, %81, %60
  %.1 = phi i64 [ %63, %60 ], [ %spec.select, %81 ], [ %spec.select, %80 ]
  %.0403 = phi ptr [ %78, %60 ], [ %17, %81 ], [ %17, %80 ]
  %.0402 = phi ptr [ %77, %60 ], [ %92, %81 ], [ %16, %80 ]
  %94 = load i16, ptr %.0403, align 1, !tbaa !18
  %95 = icmp eq i16 %94, 267
  %96 = select i1 %95, i64 96, i64 112
  %97 = getelementptr inbounds i8, ptr %.0403, i64 %96
  %98 = getelementptr inbounds i8, ptr %.0402, i64 16
  %99 = load i16, ptr %98, align 1, !tbaa !14
  %100 = zext i16 %99 to i64
  %101 = getelementptr inbounds i8, ptr %.0403, i64 %100
  %102 = getelementptr inbounds i8, ptr %97, i64 40
  %103 = load i32, ptr %102, align 1, !tbaa !23
  %104 = getelementptr inbounds i8, ptr %97, i64 16
  %105 = load i32, ptr %104, align 1, !tbaa !23
  %106 = getelementptr inbounds i8, ptr %.0402, i64 18
  %107 = load i16, ptr %106, align 1, !tbaa !25
  %108 = and i16 %107, 8192
  %.not467 = icmp eq i16 %108, 0
  br i1 %.not467, label %109, label %111

109:                                              ; preds = %93
  %110 = or i16 %107, 1
  store i16 %110, ptr %106, align 1, !tbaa !25
  br label %111

111:                                              ; preds = %109, %93
  %112 = getelementptr inbounds i8, ptr %.0403, i64 60
  %113 = load i32, ptr %112, align 1, !tbaa !26
  %114 = getelementptr inbounds i8, ptr %.0402, i64 2
  %115 = load i16, ptr %114, align 1, !tbaa !17
  %.not530 = icmp eq i16 %115, 0
  br i1 %.not530, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %111
  %.not481 = icmp eq i32 %103, 0
  %116 = getelementptr inbounds i8, ptr %97, i64 44
  %.not482 = icmp eq i32 %105, 0
  %117 = getelementptr inbounds i8, ptr %0, i64 32
  %118 = getelementptr inbounds i8, ptr %0, i64 24
  br label %129

._crit_edge:                                      ; preds = %179, %111
  %.0417.lcssa = phi i32 [ %113, %111 ], [ %.1418, %179 ]
  %.0413.lcssa = phi i32 [ 0, %111 ], [ %.1414, %179 ]
  %.0411.lcssa = phi i32 [ 0, %111 ], [ %.1412, %179 ]
  %.0409.lcssa = phi i32 [ 0, %111 ], [ %.1410, %179 ]
  %.0407.lcssa = phi i32 [ 0, %111 ], [ %.1408, %179 ]
  %.2.lcssa = phi i64 [ %.1, %111 ], [ %.3, %179 ]
  %119 = zext i32 %.0417.lcssa to i64
  %120 = load i64, ptr %21, align 8, !tbaa !13
  %121 = icmp ult i64 %120, %119
  %122 = trunc nuw i64 %120 to i32
  %spec.select485 = select i1 %121, i32 %122, i32 %.0417.lcssa
  %123 = getelementptr inbounds i8, ptr %.0403, i64 36
  %124 = load i32, ptr %123, align 1, !tbaa !20
  %125 = zext i32 %124 to i64
  %126 = tail call noundef i64 @_Z7RoundUpmm(i64 noundef %.2.lcssa, i64 noundef %125)
  %127 = trunc i64 %126 to i32
  %128 = icmp ugt i32 %spec.select485, %127
  br i1 %128, label %184, label %187

129:                                              ; preds = %.lr.ph, %179
  %130 = phi i16 [ %115, %.lr.ph ], [ %181, %179 ]
  %.2510 = phi i64 [ %.1, %.lr.ph ], [ %.3, %179 ]
  %.0407509 = phi i32 [ 0, %.lr.ph ], [ %.1408, %179 ]
  %.0409508 = phi i32 [ 0, %.lr.ph ], [ %.1410, %179 ]
  %.0411507 = phi i32 [ 0, %.lr.ph ], [ %.1412, %179 ]
  %.0413506 = phi i32 [ 0, %.lr.ph ], [ %.1414, %179 ]
  %.0417505 = phi i32 [ %113, %.lr.ph ], [ %.1418, %179 ]
  %.0420504 = phi i32 [ 0, %.lr.ph ], [ %180, %179 ]
  br i1 %.not481, label %153, label %131

131:                                              ; preds = %129
  %132 = sext i32 %.0420504 to i64
  %133 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %101, i64 %132
  %134 = getelementptr inbounds i8, ptr %133, i64 12
  %135 = load i32, ptr %134, align 1, !tbaa !27
  %136 = icmp eq i32 %135, %103
  br i1 %136, label %137, label %153

137:                                              ; preds = %131
  %138 = load i16, ptr %106, align 1, !tbaa !25
  %139 = and i16 %138, 1
  %.not483 = icmp eq i16 %139, 0
  br i1 %.not483, label %170, label %140

140:                                              ; preds = %137
  %141 = getelementptr inbounds i8, ptr %133, i64 20
  %142 = load i32, ptr %141, align 1, !tbaa !29
  %143 = getelementptr inbounds i8, ptr %133, i64 16
  %144 = load i32, ptr %143, align 1, !tbaa !30
  store i32 0, ptr %102, align 1, !tbaa !23
  store i32 0, ptr %116, align 1, !tbaa !31
  %145 = add i16 %130, -1
  store i16 %145, ptr %114, align 1, !tbaa !17
  %146 = getelementptr i8, ptr %133, i64 40
  %147 = zext i16 %145 to i32
  %148 = sub nsw i32 %147, %.0420504
  %149 = sext i32 %148 to i64
  %150 = mul nsw i64 %149, 40
  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %133, ptr align 1 %146, i64 %150, i1 false)
  %151 = add i64 %.2510, -40
  %152 = add nsw i32 %.0420504, -1
  tail call void @_Z12VerbosePrintIA26_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(26) @.str.26)
  br label %170

153:                                              ; preds = %131, %129
  br i1 %.not482, label %170, label %154

154:                                              ; preds = %153
  %155 = sext i32 %.0420504 to i64
  %156 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %101, i64 %155
  %157 = getelementptr inbounds i8, ptr %156, i64 12
  %158 = load i32, ptr %157, align 1, !tbaa !27
  %159 = icmp eq i32 %158, %105
  br i1 %159, label %160, label %170

160:                                              ; preds = %154
  %161 = getelementptr inbounds i8, ptr %156, i64 20
  %162 = load i32, ptr %161, align 1, !tbaa !29
  %163 = getelementptr inbounds i8, ptr %156, i64 16
  %164 = load i32, ptr %163, align 1, !tbaa !30
  store i32 %164, ptr %117, align 8, !tbaa !32
  %165 = getelementptr inbounds i8, ptr %156, i64 8
  %166 = load i32, ptr %165, align 1, !tbaa !38
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = zext i32 %162 to i64
  %169 = getelementptr inbounds i8, ptr %167, i64 %168
  store ptr %169, ptr %118, align 8, !tbaa !39
  br label %170

170:                                              ; preds = %153, %154, %160, %137, %140
  %.1421 = phi i32 [ %152, %140 ], [ %.0420504, %137 ], [ %.0420504, %160 ], [ %.0420504, %154 ], [ %.0420504, %153 ]
  %.1414 = phi i32 [ %.0413506, %140 ], [ %.0413506, %137 ], [ %166, %160 ], [ %.0413506, %154 ], [ %.0413506, %153 ]
  %.1412 = phi i32 [ %.0411507, %140 ], [ %.0411507, %137 ], [ %162, %160 ], [ %.0411507, %154 ], [ %.0411507, %153 ]
  %.1410 = phi i32 [ %144, %140 ], [ %.0409508, %137 ], [ %.0409508, %160 ], [ %.0409508, %154 ], [ %.0409508, %153 ]
  %.1408 = phi i32 [ %142, %140 ], [ %.0407509, %137 ], [ %.0407509, %160 ], [ %.0407509, %154 ], [ %.0407509, %153 ]
  %.3 = phi i64 [ %151, %140 ], [ %.2510, %137 ], [ %.2510, %160 ], [ %.2510, %154 ], [ %.2510, %153 ]
  %171 = sext i32 %.1421 to i64
  %172 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %101, i64 %171
  %173 = getelementptr inbounds i8, ptr %172, i64 20
  %174 = load i32, ptr %173, align 1, !tbaa !29
  %175 = icmp ult i32 %174, %.0417505
  br i1 %175, label %176, label %179

176:                                              ; preds = %170
  %177 = getelementptr inbounds i8, ptr %172, i64 16
  %178 = load i32, ptr %177, align 1, !tbaa !30
  %.not484 = icmp eq i32 %178, 0
  %spec.select486 = select i1 %.not484, i32 %.0417505, i32 %174
  br label %179

179:                                              ; preds = %176, %170
  %.1418 = phi i32 [ %.0417505, %170 ], [ %spec.select486, %176 ]
  %180 = add nsw i32 %.1421, 1
  %181 = load i16, ptr %114, align 1, !tbaa !17
  %182 = zext i16 %181 to i32
  %183 = icmp slt i32 %180, %182
  br i1 %183, label %129, label %._crit_edge, !llvm.loop !40

184:                                              ; preds = %._crit_edge
  %185 = sub i32 %spec.select485, %127
  %186 = zext i32 %185 to i64
  store i32 %127, ptr %112, align 1, !tbaa !26
  br label %189

187:                                              ; preds = %._crit_edge
  %188 = zext i32 %spec.select485 to i64
  %.not468 = icmp ugt i64 %.2.lcssa, %188
  %spec.select487 = select i1 %.not468, i32 %127, i32 %spec.select485
  br label %189

189:                                              ; preds = %187, %184
  %.0426 = phi i64 [ %186, %184 ], [ 0, %187 ]
  %.0425 = phi i32 [ %127, %184 ], [ %spec.select487, %187 ]
  %190 = sub nsw i64 0, %.0426
  br i1 %59, label %191, label %198

191:                                              ; preds = %189
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = sub i64 0, %1
  %194 = getelementptr inbounds i8, ptr %192, i64 %193
  %195 = getelementptr inbounds i8, ptr %194, i64 %.2.lcssa
  %196 = zext i32 %.0425 to i64
  %197 = sub i64 %196, %.2.lcssa
  tail call void @llvm.memset.p0.i64(ptr align 1 %195, i8 0, i64 %197, i1 false)
  br label %198

198:                                              ; preds = %191, %189
  %199 = zext i32 %.0409.lcssa to i64
  %200 = getelementptr inbounds i8, ptr %.0403, i64 32
  %201 = load i32, ptr %200, align 1, !tbaa !21
  %202 = zext i32 %201 to i64
  %203 = tail call noundef i64 @_Z7RoundUpmm(i64 noundef %199, i64 noundef %202)
  %204 = trunc i64 %203 to i32
  %205 = add i32 %.0407.lcssa, %.0409.lcssa
  %206 = getelementptr inbounds i8, ptr %0, i64 32
  %207 = load i32, ptr %206, align 8, !tbaa !32
  %.not469 = icmp eq i32 %207, 0
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  br i1 %.not469, label %504, label %209

209:                                              ; preds = %198
  %210 = icmp ugt i32 %105, %103
  br i1 %210, label %211, label %222

211:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %212 unwind label %217

212:                                              ; preds = %211
  %213 = zext i32 %.0411.lcssa to i64
  %214 = getelementptr inbounds i8, ptr %208, i64 %213
  invoke void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef %214, ptr noundef nonnull %3, i32 noundef %204)
          to label %215 unwind label %219

215:                                              ; preds = %212
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  %216 = sub i32 %105, %204
  br label %232

217:                                              ; preds = %211
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %212
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br label %221

221:                                              ; preds = %219, %217
  %.pn472 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #9
  br label %608

222:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %223 unwind label %227

223:                                              ; preds = %222
  %224 = zext i32 %.0411.lcssa to i64
  %225 = getelementptr inbounds i8, ptr %208, i64 %224
  invoke void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef %225, ptr noundef nonnull %5, i32 noundef 0)
          to label %226 unwind label %229

226:                                              ; preds = %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  br label %232

227:                                              ; preds = %222
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %231

229:                                              ; preds = %223
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br label %231

231:                                              ; preds = %229, %227
  %.pn = phi { ptr, i32 } [ %230, %229 ], [ %228, %227 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  br label %608

232:                                              ; preds = %226, %215
  %.0405 = phi i32 [ %216, %215 ], [ %105, %226 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %233 = getelementptr inbounds i8, ptr %0, i64 40
  %234 = call noundef i64 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  store i64 %234, ptr %7, align 8, !tbaa !42
  call void @_Z12VerbosePrintImJA27_cEEvRKT_DpRKT0_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 1 dereferenceable(27) @.str.27)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  %235 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  %236 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS3_SaIS3_EEEEZNS2_7LeanifyEmE3$_0EvT_SA_T0_"(ptr %235, ptr %236)
  %237 = call noundef zeroext i1 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  br i1 %237, label %240, label %238

238:                                              ; preds = %232
  %239 = call noundef zeroext i1 @_ZN2Pe11IsRSRCValidEjj(ptr noundef nonnull align 8 dereferenceable(64) %0, i32 noundef %.0405, i32 noundef %.0413.lcssa)
  br i1 %239, label %265, label %240

240:                                              ; preds = %238, %232
  call void @_Z12VerbosePrintIA32_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(32) @.str.28)
  %.not479 = icmp eq i32 %.0409.lcssa, 0
  %241 = load ptr, ptr %10, align 8, !tbaa !5
  %242 = sub i64 0, %1
  %243 = getelementptr inbounds i8, ptr %241, i64 %242
  %244 = zext i32 %.0425 to i64
  %245 = getelementptr inbounds i8, ptr %243, i64 %244
  %246 = getelementptr inbounds i8, ptr %241, i64 %244
  %247 = getelementptr inbounds i8, ptr %246, i64 %.0426
  br i1 %.not479, label %261, label %248

248:                                              ; preds = %240
  %249 = sub i32 %.0407.lcssa, %.0425
  %250 = zext i32 %249 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %245, ptr align 1 %247, i64 %250, i1 false)
  %251 = load ptr, ptr %10, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 %242
  %253 = zext i32 %.0407.lcssa to i64
  %254 = getelementptr inbounds i8, ptr %252, i64 %253
  %255 = getelementptr inbounds i8, ptr %254, i64 %190
  %256 = zext i32 %205 to i64
  %257 = getelementptr inbounds i8, ptr %251, i64 %256
  %258 = load i64, ptr %21, align 8, !tbaa !13
  %259 = sub i64 %258, %253
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %255, ptr align 1 %257, i64 %259, i1 false)
  %260 = add nuw nsw i64 %.0426, %199
  br label %528

261:                                              ; preds = %240
  %262 = load i64, ptr %21, align 8, !tbaa !13
  %263 = add nuw nsw i64 %.0426, %244
  %264 = sub i64 %262, %263
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %245, ptr align 1 %247, i64 %264, i1 false)
  br label %528

265:                                              ; preds = %238
  %266 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  %267 = load ptr, ptr %266, align 8, !tbaa !43
  %268 = load i32, ptr %267, align 1, !tbaa !47
  %269 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  %270 = load ptr, ptr %269, align 8, !tbaa !43
  %271 = getelementptr inbounds i8, ptr %270, i64 4
  %272 = load i32, ptr %271, align 1, !tbaa !49
  %273 = add i32 %272, %268
  %274 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef 0) #9
  %275 = load ptr, ptr %274, align 8, !tbaa !43
  %276 = load i32, ptr %275, align 1, !tbaa !47
  %.not475 = icmp ne i32 %.0409.lcssa, 0
  %277 = icmp ult i32 %.0407.lcssa, %.0411.lcssa
  %or.cond = select i1 %.not475, i1 %277, i1 false
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = sub i64 0, %1
  %280 = getelementptr inbounds i8, ptr %278, i64 %279
  %281 = zext i32 %.0425 to i64
  %282 = getelementptr inbounds i8, ptr %280, i64 %281
  %283 = getelementptr inbounds i8, ptr %278, i64 %281
  %284 = getelementptr inbounds i8, ptr %283, i64 %.0426
  br i1 %or.cond, label %285, label %304

285:                                              ; preds = %265
  %286 = sub i32 %.0407.lcssa, %.0425
  %287 = zext i32 %286 to i64
  %288 = sub nsw i64 %287, %.0426
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %282, ptr align 1 %284, i64 %288, i1 false)
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = getelementptr inbounds i8, ptr %289, i64 %279
  %291 = zext i32 %.0407.lcssa to i64
  %292 = getelementptr inbounds i8, ptr %290, i64 %291
  %293 = getelementptr inbounds i8, ptr %292, i64 %190
  %294 = zext i32 %205 to i64
  %295 = getelementptr inbounds i8, ptr %289, i64 %294
  %296 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef 0) #9
  %297 = load ptr, ptr %296, align 8, !tbaa !43
  %298 = load i32, ptr %297, align 1, !tbaa !47
  %299 = add i32 %205, %.0405
  %300 = sub i32 %.0411.lcssa, %299
  %301 = add i32 %300, %298
  %302 = zext i32 %301 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %293, ptr align 1 %295, i64 %302, i1 false)
  %303 = add nuw nsw i64 %.0426, %199
  br label %315

304:                                              ; preds = %265
  %305 = zext i32 %.0411.lcssa to i64
  %306 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef 0) #9
  %307 = load ptr, ptr %306, align 8, !tbaa !43
  %308 = load i32, ptr %307, align 1, !tbaa !47
  %309 = zext i32 %308 to i64
  %310 = zext i32 %.0405 to i64
  %311 = add nuw nsw i64 %.0426, %281
  %312 = add nuw nsw i64 %311, %310
  %313 = sub nsw i64 %305, %312
  %314 = add nsw i64 %313, %309
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %282, ptr align 1 %284, i64 %314, i1 false)
  br label %315

315:                                              ; preds = %304, %285
  %.1427 = phi i64 [ %303, %285 ], [ %.0426, %304 ]
  %316 = load i32, ptr @depth, align 4, !tbaa !11
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr @depth, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %318 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  store ptr %318, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %319 = call ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  store ptr %319, ptr %9, align 8
  %320 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  br i1 %320, label %.lr.ph519, label %.._crit_edge520_crit_edge

.._crit_edge520_crit_edge:                        ; preds = %315
  %.pre538 = sub i64 0, %1
  %.pre539 = sub nsw i64 0, %.1427
  br label %._crit_edge520

.lr.ph519:                                        ; preds = %315
  %321 = getelementptr inbounds i8, ptr %0, i64 24
  %322 = zext i32 %.0405 to i64
  %323 = sub i64 0, %1
  %324 = zext i32 %.0411.lcssa to i64
  %325 = sub nsw i64 0, %322
  %326 = sub nsw i64 0, %.1427
  %327 = add i64 %.1427, %1
  br label %354

._crit_edge520:                                   ; preds = %415, %.._crit_edge520_crit_edge
  %.pre-phi540 = phi i64 [ %.pre539, %.._crit_edge520_crit_edge ], [ %326, %415 ]
  %.pre-phi = phi i64 [ %.pre538, %.._crit_edge520_crit_edge ], [ %323, %415 ]
  %.0422.lcssa = phi i32 [ %276, %.._crit_edge520_crit_edge ], [ %431, %415 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  %328 = load i32, ptr @depth, align 4, !tbaa !11
  %329 = add nsw i32 %328, -1
  store i32 %329, ptr @depth, align 4, !tbaa !11
  %330 = sub i32 %273, %.0422.lcssa
  %331 = zext i32 %330 to i64
  %332 = sub i32 %.0411.lcssa, %.0405
  %333 = add i32 %332, %.0422.lcssa
  %334 = zext i32 %333 to i64
  %335 = load i32, ptr %123, align 1, !tbaa !20
  %336 = zext i32 %335 to i64
  %337 = call noundef i64 @_Z7RoundUpmm(i64 noundef %334, i64 noundef %336)
  %338 = trunc i64 %337 to i32
  %339 = add i32 %332, %273
  %340 = zext i32 %339 to i64
  %341 = load i32, ptr %123, align 1, !tbaa !20
  %342 = zext i32 %341 to i64
  %343 = call noundef i64 @_Z7RoundUpmm(i64 noundef %340, i64 noundef %342)
  %344 = trunc i64 %343 to i32
  %345 = load i32, ptr %206, align 8, !tbaa !32
  %346 = add i32 %345, %.0411.lcssa
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i64 %.pre-phi
  %349 = getelementptr inbounds i8, ptr %348, i64 %334
  %350 = getelementptr inbounds i8, ptr %349, i64 %.pre-phi540
  call void @llvm.memset.p0.i64(ptr align 1 %350, i8 0, i64 %331, i1 false)
  %351 = getelementptr inbounds i8, ptr %97, i64 8
  %352 = load i32, ptr %351, align 1, !tbaa !23
  %353 = icmp ugt i32 %352, %.0405
  br i1 %353, label %434, label %441

354:                                              ; preds = %.lr.ph519, %415
  %.0422517 = phi i32 [ %276, %.lr.ph519 ], [ %431, %415 ]
  %355 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %356 = load i32, ptr @depth, align 4, !tbaa !11
  %357 = load i32, ptr @max_depth, align 4, !tbaa !11
  %.not477 = icmp sgt i32 %356, %357
  br i1 %.not477, label %360, label %358

358:                                              ; preds = %354
  %359 = getelementptr inbounds i8, ptr %355, i64 16
  call void @_Z13PrintFileNameRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %359)
  br label %360

360:                                              ; preds = %358, %354
  %361 = load ptr, ptr %355, align 8, !tbaa !43
  %362 = load ptr, ptr %321, align 8, !tbaa !39
  %363 = ptrtoint ptr %361 to i64
  %364 = ptrtoint ptr %362 to i64
  %365 = sub i64 %363, %364
  %366 = trunc i64 %365 to i32
  %367 = add i32 %.0405, %366
  %.not478 = icmp ult i32 %367, %.0422517
  br i1 %.not478, label %396, label %368

368:                                              ; preds = %360
  %369 = load i32, ptr %361, align 1, !tbaa !47
  %370 = icmp ult i32 %367, %369
  br i1 %370, label %371, label %396

371:                                              ; preds = %368
  %372 = load ptr, ptr %10, align 8, !tbaa !5
  %373 = getelementptr inbounds i8, ptr %372, i64 %323
  %374 = getelementptr inbounds i8, ptr %373, i64 %324
  %375 = zext i32 %.0422517 to i64
  %376 = getelementptr inbounds i8, ptr %374, i64 %375
  %377 = getelementptr inbounds i8, ptr %376, i64 %325
  %378 = getelementptr inbounds i8, ptr %377, i64 %326
  %379 = getelementptr inbounds i8, ptr %372, i64 %324
  %380 = zext i32 %367 to i64
  %381 = getelementptr inbounds i8, ptr %379, i64 %380
  %382 = getelementptr inbounds i8, ptr %381, i64 %325
  call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %378, ptr noundef nonnull align 1 dereferenceable(16) %382, i64 16, i1 false)
  %383 = sub i32 %367, %.0422517
  %384 = load ptr, ptr %355, align 8, !tbaa !43
  %385 = zext i32 %383 to i64
  %386 = sub nsw i64 0, %385
  %387 = getelementptr inbounds i8, ptr %384, i64 %386
  store ptr %387, ptr %355, align 8, !tbaa !43
  %388 = getelementptr inbounds i8, ptr %355, i64 8
  %389 = load ptr, ptr %388, align 8, !tbaa !50
  %390 = getelementptr inbounds i8, ptr %389, i64 %326
  %391 = getelementptr inbounds i8, ptr %390, i64 %323
  store ptr %391, ptr %388, align 8, !tbaa !50
  %392 = getelementptr inbounds i8, ptr %391, i64 4
  %393 = load i32, ptr %392, align 1, !tbaa !38
  %394 = sub i32 %393, %383
  store i32 %394, ptr %392, align 1, !tbaa !38
  %395 = add i32 %367, 16
  %.pre = load ptr, ptr %355, align 8, !tbaa !43
  br label %396

396:                                              ; preds = %371, %368, %360
  %397 = phi ptr [ %.pre, %371 ], [ %361, %368 ], [ %361, %360 ]
  %.1423 = phi i32 [ %395, %371 ], [ %.0422517, %368 ], [ %.0422517, %360 ]
  %398 = getelementptr inbounds i8, ptr %397, i64 %326
  %399 = getelementptr inbounds i8, ptr %398, i64 %323
  store ptr %399, ptr %355, align 8, !tbaa !43
  %400 = load i32, ptr %399, align 1, !tbaa !47
  %401 = and i32 %400, 3
  %402 = icmp eq i32 %401, 0
  br i1 %402, label %403, label %415

403:                                              ; preds = %396
  %404 = zext i32 %.1423 to i64
  %405 = call noundef i64 @_Z7RoundUpmm(i64 noundef %404, i64 noundef 4)
  %406 = trunc i64 %405 to i32
  %407 = sub i32 %406, %.1423
  %408 = load ptr, ptr %10, align 8, !tbaa !5
  %409 = getelementptr inbounds i8, ptr %408, i64 %323
  %410 = getelementptr inbounds i8, ptr %409, i64 %324
  %411 = getelementptr inbounds i8, ptr %410, i64 %404
  %412 = getelementptr inbounds i8, ptr %411, i64 %325
  %413 = getelementptr inbounds i8, ptr %412, i64 %326
  %414 = zext i32 %407 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %413, i8 0, i64 %414, i1 false)
  %.pre537 = load i32, ptr %399, align 1, !tbaa !47
  br label %415

415:                                              ; preds = %403, %396
  %416 = phi i32 [ %.pre537, %403 ], [ %400, %396 ]
  %.2424 = phi i32 [ %406, %403 ], [ %.1423, %396 ]
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = getelementptr inbounds i8, ptr %417, i64 %324
  %419 = zext i32 %416 to i64
  %420 = getelementptr inbounds i8, ptr %418, i64 %419
  %421 = getelementptr inbounds i8, ptr %420, i64 %325
  %422 = getelementptr inbounds i8, ptr %399, i64 4
  %423 = load i32, ptr %422, align 1, !tbaa !49
  %424 = zext i32 %423 to i64
  %425 = sub i32 %416, %.2424
  %426 = zext i32 %425 to i64
  %427 = add i64 %327, %426
  %428 = getelementptr inbounds i8, ptr %355, i64 16
  %429 = call noundef i64 @_Z11LeanifyFilePvmmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef %421, i64 noundef %424, i64 noundef %427, ptr noundef nonnull align 8 dereferenceable(32) %428)
  store i32 %.2424, ptr %399, align 1, !tbaa !47
  %430 = trunc i64 %429 to i32
  store i32 %430, ptr %422, align 1, !tbaa !49
  %431 = add i32 %.2424, %430
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %433 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  br i1 %433, label %354, label %._crit_edge520

434:                                              ; preds = %._crit_edge520
  %435 = getelementptr inbounds i8, ptr %97, i64 12
  %436 = load i32, ptr %435, align 1, !tbaa !31
  %437 = add i32 %436, %352
  %438 = load i32, ptr %206, align 8, !tbaa !32
  %439 = add i32 %438, %.0405
  %440 = icmp ule i32 %437, %439
  br label %441

441:                                              ; preds = %434, %._crit_edge520
  %442 = phi i1 [ false, %._crit_edge520 ], [ %440, %434 ]
  %.not476 = icmp ult i32 %346, %338
  %443 = icmp ne i32 %346, %344
  %or.cond488.not492 = or i1 %.not476, %443
  %brmerge = select i1 %or.cond488.not492, i1 true, i1 %442
  %444 = add nuw nsw i64 %334, %331
  br i1 %brmerge, label %465, label %445

445:                                              ; preds = %441
  %446 = and i64 %337, 4294967295
  %447 = icmp ugt i64 %446, %444
  br i1 %447, label %448, label %459

448:                                              ; preds = %445
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = getelementptr inbounds i8, ptr %449, i64 %.pre-phi
  %451 = getelementptr inbounds i8, ptr %450, i64 %334
  %452 = getelementptr inbounds i8, ptr %451, i64 %331
  %453 = getelementptr inbounds i8, ptr %452, i64 %.pre-phi540
  %454 = getelementptr inbounds i8, ptr %449, i64 %334
  %455 = getelementptr inbounds i8, ptr %454, i64 %331
  %456 = sub i32 %338, %333
  %457 = zext i32 %456 to i64
  %458 = sub nsw i64 %457, %331
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %453, ptr align 1 %455, i64 %458, i1 false)
  br label %459

459:                                              ; preds = %448, %445
  %460 = sub i32 %333, %.0411.lcssa
  %461 = sub i32 %344, %338
  %462 = zext i32 %461 to i64
  %463 = add nuw nsw i64 %.1427, %462
  %464 = sub i32 %338, %.0411.lcssa
  store i32 %464, ptr %206, align 8, !tbaa !32
  br label %479

465:                                              ; preds = %441
  %466 = zext i32 %346 to i64
  %467 = icmp ult i64 %444, %466
  br i1 %467, label %468, label %479

468:                                              ; preds = %465
  %469 = load ptr, ptr %10, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 %.pre-phi
  %471 = getelementptr inbounds i8, ptr %470, i64 %334
  %472 = getelementptr inbounds i8, ptr %471, i64 %331
  %473 = getelementptr inbounds i8, ptr %472, i64 %.pre-phi540
  %474 = getelementptr inbounds i8, ptr %469, i64 %334
  %475 = getelementptr inbounds i8, ptr %474, i64 %331
  %476 = sub i32 %346, %333
  %477 = zext i32 %476 to i64
  %478 = sub nsw i64 %477, %331
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %473, ptr align 1 %475, i64 %478, i1 false)
  br label %479

479:                                              ; preds = %465, %468, %459
  %.0437 = phi i32 [ %461, %459 ], [ 0, %468 ], [ 0, %465 ]
  %.2428 = phi i64 [ %463, %459 ], [ %.1427, %468 ], [ %.1427, %465 ]
  %.2415 = phi i32 [ %460, %459 ], [ %.0413.lcssa, %468 ], [ %.0413.lcssa, %465 ]
  %480 = icmp ugt i32 %.0407.lcssa, %.0411.lcssa
  %or.cond490 = select i1 %.not475, i1 %480, i1 false
  %481 = load ptr, ptr %10, align 8, !tbaa !5
  %482 = getelementptr inbounds i8, ptr %481, i64 %.pre-phi
  %483 = zext i32 %346 to i64
  %484 = getelementptr inbounds i8, ptr %482, i64 %483
  %485 = sub nsw i64 0, %.2428
  %486 = getelementptr inbounds i8, ptr %484, i64 %485
  %487 = getelementptr inbounds i8, ptr %481, i64 %483
  br i1 %or.cond490, label %488, label %501

488:                                              ; preds = %479
  %489 = sub i32 %.0407.lcssa, %346
  %490 = zext i32 %489 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %486, ptr align 1 %487, i64 %490, i1 false)
  %491 = load ptr, ptr %10, align 8, !tbaa !5
  %492 = getelementptr inbounds i8, ptr %491, i64 %.pre-phi
  %493 = zext i32 %.0407.lcssa to i64
  %494 = getelementptr inbounds i8, ptr %492, i64 %493
  %495 = getelementptr inbounds i8, ptr %494, i64 %485
  %496 = zext i32 %205 to i64
  %497 = getelementptr inbounds i8, ptr %491, i64 %496
  %498 = load i64, ptr %21, align 8, !tbaa !13
  %499 = sub i64 %498, %496
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %495, ptr align 1 %497, i64 %499, i1 false)
  %500 = add nsw i64 %.2428, %199
  br label %528

501:                                              ; preds = %479
  %502 = load i64, ptr %21, align 8, !tbaa !13
  %503 = sub i64 %502, %483
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %486, ptr align 1 %487, i64 %503, i1 false)
  br label %528

504:                                              ; preds = %198
  %.not470 = icmp eq i32 %.0409.lcssa, 0
  %505 = sub i64 0, %1
  %506 = getelementptr inbounds i8, ptr %208, i64 %505
  %507 = zext i32 %.0425 to i64
  %508 = getelementptr inbounds i8, ptr %506, i64 %507
  %509 = getelementptr inbounds i8, ptr %208, i64 %507
  %510 = getelementptr inbounds i8, ptr %509, i64 %.0426
  br i1 %.not470, label %524, label %511

511:                                              ; preds = %504
  %512 = sub i32 %.0407.lcssa, %.0425
  %513 = zext i32 %512 to i64
  tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %508, ptr align 1 %510, i64 %513, i1 false)
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = getelementptr inbounds i8, ptr %514, i64 %505
  %516 = zext i32 %.0407.lcssa to i64
  %517 = getelementptr inbounds i8, ptr %515, i64 %516
  %518 = getelementptr inbounds i8, ptr %517, i64 %190
  %519 = zext i32 %205 to i64
  %520 = getelementptr inbounds i8, ptr %514, i64 %519
  %521 = load i64, ptr %21, align 8, !tbaa !13
  %522 = sub i64 %521, %516
  tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %518, ptr align 1 %520, i64 %522, i1 false)
  %523 = add nuw nsw i64 %.0426, %199
  br label %528

524:                                              ; preds = %504
  %525 = load i64, ptr %21, align 8, !tbaa !13
  %526 = add nuw nsw i64 %.0426, %507
  %527 = sub i64 %525, %526
  tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %508, ptr align 1 %510, i64 %527, i1 false)
  br label %528

528:                                              ; preds = %488, %501, %511, %524, %261, %248
  %.1438 = phi i32 [ 0, %248 ], [ 0, %261 ], [ 0, %511 ], [ 0, %524 ], [ %.0437, %501 ], [ %.0437, %488 ]
  %.4 = phi i64 [ %260, %248 ], [ %.0426, %261 ], [ %523, %511 ], [ %.0426, %524 ], [ %.2428, %501 ], [ %500, %488 ]
  %.3416 = phi i32 [ %.0413.lcssa, %248 ], [ %.0413.lcssa, %261 ], [ %.0413.lcssa, %511 ], [ %.0413.lcssa, %524 ], [ %.2415, %501 ], [ %.2415, %488 ]
  %.1406 = phi i32 [ %.0405, %248 ], [ %.0405, %261 ], [ %105, %511 ], [ %105, %524 ], [ %.0405, %501 ], [ %.0405, %488 ]
  %529 = getelementptr inbounds i8, ptr %97, i64 20
  %530 = load i32, ptr %529, align 1, !tbaa !31
  %531 = zext i32 %530 to i64
  %532 = load i32, ptr %200, align 1, !tbaa !21
  %533 = zext i32 %532 to i64
  %534 = call noundef i64 @_Z7RoundUpmm(i64 noundef %531, i64 noundef %533)
  %535 = zext i32 %.3416 to i64
  %536 = load i32, ptr %200, align 1, !tbaa !21
  %537 = zext i32 %536 to i64
  %538 = call noundef i64 @_Z7RoundUpmm(i64 noundef %535, i64 noundef %537)
  %539 = sub i64 %534, %538
  %540 = trunc i64 %539 to i32
  %spec.store.select = call i32 @llvm.smax.i32(i32 %540, i32 0)
  %541 = getelementptr inbounds i8, ptr %.0403, i64 56
  %542 = load i32, ptr %541, align 1, !tbaa !51
  %543 = add i32 %spec.store.select, %204
  %544 = sub i32 %542, %543
  store i32 %544, ptr %541, align 1, !tbaa !51
  call void @_Z12VerbosePrintIA22_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(22) @.str.29)
  %545 = load i16, ptr %114, align 1, !tbaa !17
  %.not531 = icmp eq i16 %545, 0
  br i1 %.not531, label %._crit_edge525, label %.lr.ph524

.lr.ph524:                                        ; preds = %528
  %546 = trunc nuw i64 %.0426 to i32
  br label %550

._crit_edge525:                                   ; preds = %578, %528
  %547 = getelementptr inbounds i8, ptr %97, i64 -4
  %548 = load i32, ptr %547, align 4, !tbaa !11
  %.not532 = icmp eq i32 %548, 0
  br i1 %.not532, label %._crit_edge529, label %.lr.ph528

.lr.ph528:                                        ; preds = %._crit_edge525
  %spec.store.select1 = call i32 @llvm.umin.i32(i32 %548, i32 16)
  %549 = zext i32 %.1406 to i64
  %wide.trip.count = zext nneg i32 %spec.store.select1 to i64
  br label %584

550:                                              ; preds = %.lr.ph524, %578
  %indvars.iv = phi i64 [ 0, %.lr.ph524 ], [ %indvars.iv.next, %578 ]
  %551 = getelementptr inbounds %"struct.Pe::ImageSectionHeader", ptr %101, i64 %indvars.iv
  %552 = getelementptr inbounds i8, ptr %551, i64 12
  %553 = load i32, ptr %552, align 1, !tbaa !27
  %554 = icmp ugt i32 %553, %103
  br i1 %554, label %555, label %557

555:                                              ; preds = %550
  %556 = sub i32 %553, %204
  store i32 %556, ptr %552, align 1, !tbaa !27
  br label %557

557:                                              ; preds = %555, %550
  %558 = phi i32 [ %556, %555 ], [ %553, %550 ]
  %559 = icmp ugt i32 %558, %.1406
  br i1 %559, label %560, label %562

560:                                              ; preds = %557
  %561 = sub i32 %558, %spec.store.select
  store i32 %561, ptr %552, align 1, !tbaa !27
  br label %568

562:                                              ; preds = %557
  %563 = icmp eq i32 %558, %.1406
  br i1 %563, label %564, label %568

564:                                              ; preds = %562
  %565 = load i32, ptr %206, align 8, !tbaa !32
  %566 = getelementptr inbounds i8, ptr %551, i64 16
  store i32 %565, ptr %566, align 1, !tbaa !30
  %567 = getelementptr inbounds i8, ptr %551, i64 8
  store i32 %.3416, ptr %567, align 1, !tbaa !38
  br label %568

568:                                              ; preds = %562, %564, %560
  %569 = getelementptr inbounds i8, ptr %551, i64 20
  %570 = load i32, ptr %569, align 1, !tbaa !29
  %.not542 = icmp ugt i32 %570, %.0407.lcssa
  %571 = select i1 %.not542, i32 %.0409.lcssa, i32 0
  %572 = sub i32 %570, %571
  %.not543 = icmp ugt i32 %572, %.0411.lcssa
  %573 = select i1 %.not543, i32 %.1438, i32 0
  %574 = sub i32 %572, %573
  %.not544.not = or i1 %.not542, %.not543
  %.not545 = icmp ugt i32 %574, %.0425
  %575 = or i1 %.not544.not, %.not545
  br i1 %575, label %576, label %578

576:                                              ; preds = %568
  %577 = select i1 %.not545, i32 %546, i32 0
  %spec.select541 = sub i32 %574, %577
  store i32 %spec.select541, ptr %569, align 1, !tbaa !29
  br label %578

578:                                              ; preds = %568, %576
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %579 = load i16, ptr %114, align 1, !tbaa !17
  %580 = zext i16 %579 to i64
  %581 = icmp ult i64 %indvars.iv.next, %580
  br i1 %581, label %550, label %._crit_edge525, !llvm.loop !52

._crit_edge529:                                   ; preds = %600, %._crit_edge525
  %582 = load i32, ptr %529, align 1, !tbaa !31
  %583 = icmp ugt i32 %582, %.3416
  br i1 %583, label %601, label %602

584:                                              ; preds = %.lr.ph528, %600
  %indvars.iv534 = phi i64 [ 0, %.lr.ph528 ], [ %indvars.iv.next535, %600 ]
  %585 = getelementptr inbounds %"struct.Pe::ImageDataDirectory", ptr %97, i64 %indvars.iv534
  %586 = load i32, ptr %585, align 1, !tbaa !23
  %587 = icmp ugt i32 %586, %103
  br i1 %587, label %588, label %590

588:                                              ; preds = %584
  %589 = sub i32 %586, %204
  store i32 %589, ptr %585, align 1, !tbaa !23
  br label %590

590:                                              ; preds = %588, %584
  %591 = phi i32 [ %589, %588 ], [ %586, %584 ]
  %592 = zext i32 %591 to i64
  %593 = load i32, ptr %200, align 1, !tbaa !21
  %594 = zext i32 %593 to i64
  %595 = call noundef i64 @_Z7RoundUpmm(i64 noundef %535, i64 noundef %594)
  %596 = add i64 %595, %549
  %.not480 = icmp ugt i64 %596, %592
  br i1 %.not480, label %600, label %597

597:                                              ; preds = %590
  %598 = load i32, ptr %585, align 1, !tbaa !23
  %599 = sub i32 %598, %spec.store.select
  store i32 %599, ptr %585, align 1, !tbaa !23
  br label %600

600:                                              ; preds = %590, %597
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge529, label %584, !llvm.loop !53

601:                                              ; preds = %._crit_edge529
  store i32 %.3416, ptr %529, align 1, !tbaa !31
  br label %602

602:                                              ; preds = %601, %._crit_edge529
  %603 = load ptr, ptr %10, align 8, !tbaa !5
  %604 = sub i64 0, %1
  %605 = getelementptr inbounds i8, ptr %603, i64 %604
  store ptr %605, ptr %10, align 8, !tbaa !5
  %606 = load i64, ptr %21, align 8, !tbaa !13
  %607 = sub i64 %606, %.4
  store i64 %607, ptr %21, align 8, !tbaa !13
  br label %609

608:                                              ; preds = %231, %221
  %.pn472.pn = phi { ptr, i32 } [ %.pn472, %221 ], [ %.pn, %231 ]
  resume { ptr, i32 } %.pn472.pn

609:                                              ; preds = %602, %56, %48
  %.0401 = phi i64 [ %51, %48 ], [ %57, %56 ], [ %607, %602 ]
  ret i64 %.0401
}

; 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 #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN6Format7LeanifyEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA35_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(35)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA39_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(39)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA26_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(26)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_Z7RoundUpmm(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN2Pe12TraverseRSRCEPNS_22ImageResourceDirectoryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintImJA27_cEEvRKT_DpRKT0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(27)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS3_SaIS3_EEEEZNS2_7LeanifyEmE3$_0EvT_SA_T0_"(ptr, ptr) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIN2Pe9RsrcEntryESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN2Pe11IsRSRCValidEjj(ptr noundef nonnull align 8 dereferenceable(64), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA32_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(32)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN2Pe9RsrcEntryESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare void @_Z13PrintFileNameRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

declare noundef i64 @_Z11LeanifyFilePvmmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef, i64 noundef, i64 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN2Pe9RsrcEntryESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z12VerbosePrintIA22_cEvRKT_(ptr noundef nonnull align 1 dereferenceable(22)) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { 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, !7, i64 8}
!6 = !{!"_ZTS6Format", !7, i64 8, !10, i64 16}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !8, i64 0}
!13 = !{!6, !10, i64 16}
!14 = !{!15, !16, i64 16}
!15 = !{!"_ZTSN2Pe15ImageFileHeaderE", !16, i64 0, !16, i64 2, !12, i64 4, !12, i64 8, !12, i64 12, !16, i64 16, !16, i64 18}
!16 = !{!"short", !8, i64 0}
!17 = !{!15, !16, i64 2}
!18 = !{!19, !16, i64 0}
!19 = !{!"_ZTSN2Pe19ImageOptionalHeaderE", !16, i64 0, !8, i64 2, !8, i64 3, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !16, i64 40, !16, i64 42, !16, i64 44, !16, i64 46, !16, i64 48, !16, i64 50, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !16, i64 68, !16, i64 70, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92}
!20 = !{!19, !12, i64 36}
!21 = !{!19, !12, i64 32}
!22 = !{!19, !16, i64 68}
!23 = !{!24, !12, i64 0}
!24 = !{!"_ZTSN2Pe18ImageDataDirectoryE", !12, i64 0, !12, i64 4}
!25 = !{!15, !16, i64 18}
!26 = !{!19, !12, i64 60}
!27 = !{!28, !12, i64 12}
!28 = !{!"_ZTSN2Pe18ImageSectionHeaderE", !8, i64 0, !8, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !16, i64 32, !16, i64 34, !12, i64 36}
!29 = !{!28, !12, i64 20}
!30 = !{!28, !12, i64 16}
!31 = !{!24, !12, i64 4}
!32 = !{!33, !12, i64 32}
!33 = !{!"_ZTS2Pe", !6, i64 0, !7, i64 24, !12, i64 32, !34, i64 40}
!34 = !{!"_ZTSSt6vectorIN2Pe9RsrcEntryESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN2Pe9RsrcEntryESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!38 = !{!8, !8, i64 0}
!39 = !{!33, !7, i64 24}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!10, !10, i64 0}
!43 = !{!44, !7, i64 0}
!44 = !{!"_ZTSN2Pe9RsrcEntryE", !7, i64 0, !7, i64 8, !45, i64 16}
!45 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !46, i64 0, !10, i64 8, !8, i64 16}
!46 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!47 = !{!48, !12, i64 0}
!48 = !{!"_ZTSN2Pe22ImageResourceDataEntryE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!49 = !{!48, !12, i64 4}
!50 = !{!44, !7, i64 8}
!51 = !{!19, !12, i64 56}
!52 = distinct !{!52, !41}
!53 = distinct !{!53, !41}


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