; LLVM IR from venumb/ZSPACE :: cpp/depends/lodePNG/lodepng_unittest.ll (Z7testXYZv)

; 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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.lodepng::State" = type { %struct.LodePNGState.base, [4 x i8] }
%struct.LodePNGState.base = type <{ ptr, %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32 }>
%struct.LodePNGDecoderSettings = type { %struct.LodePNGDecompressSettings, i32, i32, i32, i32, i32, i32 }
%struct.LodePNGDecompressSettings = type { i32, i32, ptr, ptr, ptr }
%struct.LodePNGEncoderSettings = type { %struct.LodePNGCompressSettings, i32, i32, i32, ptr, i32, i32, i32 }
%struct.LodePNGCompressSettings = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.23" = type { i8 }
%"class.std::allocator" = type { i8 }
%struct.LodePNGState = type <{ ptr, %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32, [4 x i8] }>

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.565 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.570 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4failv() #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(1)) #0

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 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)) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13assertNoErrorj(i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z9getRandomv() #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) #0

declare void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508)) unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z4diffIhhET_S0_T0_(i8 noundef zeroext, i8 noundef zeroext) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7testXYZv() #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca %"class.std::allocator.0", align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.lodepng::State", align 8
  %10 = alloca %"class.std::vector.21", align 8
  %11 = alloca %"class.std::allocator.23", align 1
  %12 = alloca [3 x float], align 4
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca %"class.std::allocator.0", align 1
  %15 = alloca i64, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.lodepng::State", align 8
  %25 = alloca %"class.std::vector.21", align 8
  %26 = alloca %"class.std::allocator.23", align 1
  %27 = alloca [3 x float], align 4
  %28 = alloca %"class.std::vector", align 8
  %29 = alloca %"class.std::allocator.0", align 1
  %30 = alloca i64, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %struct.LodePNGInfo, align 8
  %40 = alloca %"class.lodepng::State", align 8
  %41 = alloca %"class.std::vector.21", align 8
  %42 = alloca %"class.std::allocator.23", align 1
  %43 = alloca [3 x float], align 4
  %44 = alloca %"class.std::vector", align 8
  %45 = alloca %"class.std::allocator.0", align 1
  %46 = alloca i64, align 8
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca i8, align 1
  %59 = alloca %"class.lodepng::State", align 8
  %60 = alloca %"class.std::vector.21", align 8
  %61 = alloca %"class.std::allocator.23", align 1
  %62 = alloca [3 x float], align 4
  %63 = alloca %"class.std::vector", align 8
  %64 = alloca %"class.std::allocator.0", align 1
  %65 = alloca i64, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca i32, align 4
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.564)
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 4, ptr %1) #6
  store i32 512, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #6
  store i32 512, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #6
  %82 = load i32, ptr %1, align 4, !tbaa !5
  %83 = load i32, ptr %2, align 4, !tbaa !5
  %84 = mul i32 %82, %83
  %85 = mul i32 %84, 4
  %86 = mul i32 %85, 2
  %87 = zext i32 %86 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %87, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %88 unwind label %94

88:                                               ; preds = %0
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  store i64 0, ptr %7, align 8, !tbaa !9
  br label %89

89:                                               ; preds = %104, %88
  %90 = load i64, ptr %7, align 8, !tbaa !9
  %91 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %92 = icmp ult i64 %90, %91
  br i1 %92, label %98, label %93

93:                                               ; preds = %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  br label %107

94:                                               ; preds = %0
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %5, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  br label %886

98:                                               ; preds = %89
  %99 = call noundef i32 @_Z9getRandomv()
  %100 = and i32 %99, 255
  %101 = trunc i32 %100 to i8
  %102 = load i64, ptr %7, align 8, !tbaa !9
  %103 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %102) #6
  store i8 %101, ptr %103, align 1, !tbaa !11
  br label %104

104:                                              ; preds = %98
  %105 = load i64, ptr %7, align 8, !tbaa !9
  %106 = add i64 %105, 1
  store i64 %106, ptr %7, align 8, !tbaa !9
  br label %89, !llvm.loop !12

107:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 3, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 512, ptr %9) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %9)
          to label %108 unwind label %143

108:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #6
  %109 = load i32, ptr %1, align 4, !tbaa !5
  %110 = load i32, ptr %2, align 4, !tbaa !5
  %111 = mul i32 %109, %110
  %112 = mul i32 %111, 4
  %113 = zext i32 %112 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %113, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %114 unwind label %147

114:                                              ; preds = %108
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %12) #6
  %115 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %116 = getelementptr inbounds [3 x float], ptr %12, i64 0, i64 0
  %117 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %118 = load i32, ptr %1, align 4, !tbaa !5
  %119 = load i32, ptr %2, align 4, !tbaa !5
  %120 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %115, ptr noundef %116, ptr noundef %117, i32 noundef %118, i32 noundef %119, ptr noundef %9)
          to label %121 unwind label %151

121:                                              ; preds = %114
  invoke void @_Z13assertNoErrorj(i32 noundef %120)
          to label %122 unwind label %151

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #6
  %123 = load i32, ptr %1, align 4, !tbaa !5
  %124 = load i32, ptr %2, align 4, !tbaa !5
  %125 = mul i32 %123, %124
  %126 = mul i32 %125, 4
  %127 = zext i32 %126 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %127, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %128 unwind label %155

128:                                              ; preds = %122
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  %129 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  %130 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  %131 = load i32, ptr %1, align 4, !tbaa !5
  %132 = load i32, ptr %2, align 4, !tbaa !5
  %133 = getelementptr inbounds [3 x float], ptr %12, i64 0, i64 0
  %134 = load i32, ptr %8, align 4, !tbaa !5
  %135 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %129, ptr noundef %130, i32 noundef %131, i32 noundef %132, ptr noundef %9, ptr noundef %133, i32 noundef %134)
          to label %136 unwind label %159

136:                                              ; preds = %128
  invoke void @_Z13assertNoErrorj(i32 noundef %135)
          to label %137 unwind label %159

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %253, %137
  %139 = load i64, ptr %15, align 8, !tbaa !9
  %140 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  %141 = icmp ult i64 %139, %140
  br i1 %141, label %163, label %142

142:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %257

143:                                              ; preds = %107
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %5, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %6, align 4
  br label %299

147:                                              ; preds = %108
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %5, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  br label %298

151:                                              ; preds = %121, %114
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %5, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %6, align 4
  br label %297

155:                                              ; preds = %122
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %5, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  br label %296

159:                                              ; preds = %136, %128
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %5, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %6, align 4
  br label %295

163:                                              ; preds = %138
  %164 = load i64, ptr %15, align 8, !tbaa !9
  %165 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %164) #6
  %166 = load i8, ptr %165, align 1, !tbaa !11
  %167 = zext i8 %166 to i32
  %168 = load i64, ptr %15, align 8, !tbaa !9
  %169 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %168) #6
  %170 = load i8, ptr %169, align 1, !tbaa !11
  %171 = zext i8 %170 to i32
  %172 = icmp ne i32 %167, %171
  br i1 %172, label %173, label %252

173:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %174 unwind label %200

174:                                              ; preds = %173
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.565)
          to label %175 unwind label %204

175:                                              ; preds = %174
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.3)
          to label %176 unwind label %208

176:                                              ; preds = %175
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.566)
          to label %177 unwind label %212

177:                                              ; preds = %176
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.18)
          to label %178 unwind label %216

178:                                              ; preds = %177
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %180 unwind label %220

180:                                              ; preds = %178
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.19)
          to label %182 unwind label %229

182:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  %183 = load i64, ptr %15, align 8, !tbaa !9
  %184 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %183) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 1 dereferenceable(1) %184)
          to label %185 unwind label %233

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %187 unwind label %237

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef @.str.20)
          to label %189 unwind label %237

189:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #6
  %190 = load i64, ptr %15, align 8, !tbaa !9
  %191 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %190) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 1 dereferenceable(1) %191)
          to label %192 unwind label %241

192:                                              ; preds = %189
  %193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %194 unwind label %245

194:                                              ; preds = %192
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef @.str.21)
          to label %196 unwind label %245

196:                                              ; preds = %194
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %198 unwind label %245

198:                                              ; preds = %196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  invoke void @_Z4failv()
          to label %199 unwind label %229

199:                                              ; preds = %198
  br label %252

200:                                              ; preds = %173
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %5, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %6, align 4
  br label %228

204:                                              ; preds = %174
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %5, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %6, align 4
  br label %227

208:                                              ; preds = %175
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %5, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %6, align 4
  br label %226

212:                                              ; preds = %176
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %5, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %6, align 4
  br label %225

216:                                              ; preds = %177
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %5, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %6, align 4
  br label %224

220:                                              ; preds = %178
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %5, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %224

224:                                              ; preds = %220, %216
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %225

225:                                              ; preds = %224, %212
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %226

226:                                              ; preds = %225, %208
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %227

227:                                              ; preds = %226, %204
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %228

228:                                              ; preds = %227, %200
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %256

229:                                              ; preds = %198, %180
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %5, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %6, align 4
  br label %256

233:                                              ; preds = %182
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %5, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %6, align 4
  br label %251

237:                                              ; preds = %187, %185
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %5, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %6, align 4
  br label %250

241:                                              ; preds = %189
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %5, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %6, align 4
  br label %249

245:                                              ; preds = %196, %194, %192
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %5, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %249

249:                                              ; preds = %245, %241
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #6
  br label %250

250:                                              ; preds = %249, %237
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %251

251:                                              ; preds = %250, %233
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %256

252:                                              ; preds = %199, %163
  br label %253

253:                                              ; preds = %252
  %254 = load i64, ptr %15, align 8, !tbaa !9
  %255 = add i64 %254, 1
  store i64 %255, ptr %15, align 8, !tbaa !9
  br label %138, !llvm.loop !14

256:                                              ; preds = %251, %229, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %295

257:                                              ; preds = %142
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %9) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 512, ptr %24) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %24)
          to label %258 unwind label %300

258:                                              ; preds = %257
  %259 = getelementptr inbounds %struct.LodePNGState, ptr %24, i32 0, i32 3
  %260 = getelementptr inbounds %struct.LodePNGColorMode, ptr %259, i32 0, i32 1
  store i32 16, ptr %260, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #6
  %261 = load i32, ptr %1, align 4, !tbaa !5
  %262 = load i32, ptr %2, align 4, !tbaa !5
  %263 = mul i32 %261, %262
  %264 = mul i32 %263, 4
  %265 = zext i32 %264 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %265, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %266 unwind label %304

266:                                              ; preds = %258
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %27) #6
  %267 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  %268 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 0
  %269 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %270 = load i32, ptr %1, align 4, !tbaa !5
  %271 = load i32, ptr %2, align 4, !tbaa !5
  %272 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %267, ptr noundef %268, ptr noundef %269, i32 noundef %270, i32 noundef %271, ptr noundef %24)
          to label %273 unwind label %308

273:                                              ; preds = %266
  invoke void @_Z13assertNoErrorj(i32 noundef %272)
          to label %274 unwind label %308

274:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #6
  %275 = load i32, ptr %1, align 4, !tbaa !5
  %276 = load i32, ptr %2, align 4, !tbaa !5
  %277 = mul i32 %275, %276
  %278 = mul i32 %277, 8
  %279 = zext i32 %278 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %279, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %280 unwind label %312

280:                                              ; preds = %274
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  %281 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %282 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  %283 = load i32, ptr %1, align 4, !tbaa !5
  %284 = load i32, ptr %2, align 4, !tbaa !5
  %285 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 0
  %286 = load i32, ptr %8, align 4, !tbaa !5
  %287 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %281, ptr noundef %282, i32 noundef %283, i32 noundef %284, ptr noundef %24, ptr noundef %285, i32 noundef %286)
          to label %288 unwind label %316

288:                                              ; preds = %280
  invoke void @_Z13assertNoErrorj(i32 noundef %287)
          to label %289 unwind label %316

289:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  store i64 0, ptr %30, align 8, !tbaa !9
  br label %290

290:                                              ; preds = %410, %289
  %291 = load i64, ptr %30, align 8, !tbaa !9
  %292 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  %293 = icmp ult i64 %291, %292
  br i1 %293, label %320, label %294

294:                                              ; preds = %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %414

295:                                              ; preds = %256, %159
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  br label %296

296:                                              ; preds = %295, %155
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  br label %297

297:                                              ; preds = %296, %151
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #6
  br label %298

298:                                              ; preds = %297, %147
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %9) #6
  br label %299

299:                                              ; preds = %298, %143
  call void @llvm.lifetime.end.p0(i64 512, ptr %9) #6
  br label %885

300:                                              ; preds = %257
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %5, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %6, align 4
  br label %469

304:                                              ; preds = %258
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %5, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  br label %468

308:                                              ; preds = %273, %266
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %5, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %6, align 4
  br label %467

312:                                              ; preds = %274
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %5, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  br label %466

316:                                              ; preds = %288, %280
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %5, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %6, align 4
  br label %465

320:                                              ; preds = %290
  %321 = load i64, ptr %30, align 8, !tbaa !9
  %322 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %321) #6
  %323 = load i8, ptr %322, align 1, !tbaa !11
  %324 = zext i8 %323 to i32
  %325 = load i64, ptr %30, align 8, !tbaa !9
  %326 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %325) #6
  %327 = load i8, ptr %326, align 1, !tbaa !11
  %328 = zext i8 %327 to i32
  %329 = icmp ne i32 %324, %328
  br i1 %329, label %330, label %409

330:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %331 unwind label %357

331:                                              ; preds = %330
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.567)
          to label %332 unwind label %361

332:                                              ; preds = %331
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef @.str.3)
          to label %333 unwind label %365

333:                                              ; preds = %332
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.566)
          to label %334 unwind label %369

334:                                              ; preds = %333
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.18)
          to label %335 unwind label %373

335:                                              ; preds = %334
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %337 unwind label %377

337:                                              ; preds = %335
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.19)
          to label %339 unwind label %386

339:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #6
  %340 = load i64, ptr %30, align 8, !tbaa !9
  %341 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %340) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 1 dereferenceable(1) %341)
          to label %342 unwind label %390

342:                                              ; preds = %339
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %344 unwind label %394

344:                                              ; preds = %342
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef @.str.20)
          to label %346 unwind label %394

346:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #6
  %347 = load i64, ptr %30, align 8, !tbaa !9
  %348 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %347) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 1 dereferenceable(1) %348)
          to label %349 unwind label %398

349:                                              ; preds = %346
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %351 unwind label %402

351:                                              ; preds = %349
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %350, ptr noundef @.str.21)
          to label %353 unwind label %402

353:                                              ; preds = %351
  %354 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %355 unwind label %402

355:                                              ; preds = %353
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #6
  invoke void @_Z4failv()
          to label %356 unwind label %386

356:                                              ; preds = %355
  br label %409

357:                                              ; preds = %330
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %5, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %6, align 4
  br label %385

361:                                              ; preds = %331
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %5, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %6, align 4
  br label %384

365:                                              ; preds = %332
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %5, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %6, align 4
  br label %383

369:                                              ; preds = %333
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %5, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %6, align 4
  br label %382

373:                                              ; preds = %334
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %5, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %6, align 4
  br label %381

377:                                              ; preds = %335
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %5, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %381

381:                                              ; preds = %377, %373
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %382

382:                                              ; preds = %381, %369
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #6
  br label %383

383:                                              ; preds = %382, %365
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  br label %384

384:                                              ; preds = %383, %361
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %385

385:                                              ; preds = %384, %357
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  br label %413

386:                                              ; preds = %355, %337
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %5, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %6, align 4
  br label %413

390:                                              ; preds = %339
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %5, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %6, align 4
  br label %408

394:                                              ; preds = %344, %342
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %5, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %6, align 4
  br label %407

398:                                              ; preds = %346
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %5, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %6, align 4
  br label %406

402:                                              ; preds = %353, %351, %349
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %5, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %406

406:                                              ; preds = %402, %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #6
  br label %407

407:                                              ; preds = %406, %394
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  br label %408

408:                                              ; preds = %407, %390
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #6
  br label %413

409:                                              ; preds = %356, %320
  br label %410

410:                                              ; preds = %409
  %411 = load i64, ptr %30, align 8, !tbaa !9
  %412 = add i64 %411, 1
  store i64 %412, ptr %30, align 8, !tbaa !9
  br label %290, !llvm.loop !27

413:                                              ; preds = %408, %386, %385
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %465

414:                                              ; preds = %294
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %24) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 312, ptr %39) #6
  invoke void @_Z17lodepng_info_initP11LodePNGInfo(ptr noundef %39)
          to label %415 unwind label %470

415:                                              ; preds = %414
  %416 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 22
  store i32 1, ptr %416, align 4, !tbaa !28
  %417 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 23
  store i32 30000, ptr %417, align 8, !tbaa !29
  %418 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 24
  store i32 1, ptr %418, align 4, !tbaa !30
  %419 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 25
  store i32 10000, ptr %419, align 8, !tbaa !31
  %420 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 26
  store i32 20000, ptr %420, align 4, !tbaa !32
  %421 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 27
  store i32 30000, ptr %421, align 8, !tbaa !33
  %422 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 28
  store i32 50000, ptr %422, align 4, !tbaa !34
  %423 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 29
  store i32 70000, ptr %423, align 8, !tbaa !35
  %424 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 30
  store i32 11000, ptr %424, align 4, !tbaa !36
  %425 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 31
  store i32 13000, ptr %425, align 8, !tbaa !37
  %426 = getelementptr inbounds %struct.LodePNGInfo, ptr %39, i32 0, i32 32
  store i32 17000, ptr %426, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 512, ptr %40) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %40)
          to label %427 unwind label %474

427:                                              ; preds = %415
  %428 = getelementptr inbounds %struct.LodePNGState, ptr %40, i32 0, i32 4
  %429 = invoke noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef %428, ptr noundef %39)
          to label %430 unwind label %478

430:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #6
  %431 = load i32, ptr %1, align 4, !tbaa !5
  %432 = load i32, ptr %2, align 4, !tbaa !5
  %433 = mul i32 %431, %432
  %434 = mul i32 %433, 4
  %435 = zext i32 %434 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %435, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %436 unwind label %482

436:                                              ; preds = %430
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %43) #6
  %437 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  %438 = getelementptr inbounds [3 x float], ptr %43, i64 0, i64 0
  %439 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %440 = load i32, ptr %1, align 4, !tbaa !5
  %441 = load i32, ptr %2, align 4, !tbaa !5
  %442 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %437, ptr noundef %438, ptr noundef %439, i32 noundef %440, i32 noundef %441, ptr noundef %40)
          to label %443 unwind label %486

443:                                              ; preds = %436
  invoke void @_Z13assertNoErrorj(i32 noundef %442)
          to label %444 unwind label %486

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #6
  %445 = load i32, ptr %1, align 4, !tbaa !5
  %446 = load i32, ptr %2, align 4, !tbaa !5
  %447 = mul i32 %445, %446
  %448 = mul i32 %447, 4
  %449 = zext i32 %448 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %449, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %450 unwind label %490

450:                                              ; preds = %444
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  %451 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #6
  %452 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  %453 = load i32, ptr %1, align 4, !tbaa !5
  %454 = load i32, ptr %2, align 4, !tbaa !5
  %455 = getelementptr inbounds [3 x float], ptr %43, i64 0, i64 0
  %456 = load i32, ptr %8, align 4, !tbaa !5
  %457 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %451, ptr noundef %452, i32 noundef %453, i32 noundef %454, ptr noundef %40, ptr noundef %455, i32 noundef %456)
          to label %458 unwind label %494

458:                                              ; preds = %450
  invoke void @_Z13assertNoErrorj(i32 noundef %457)
          to label %459 unwind label %494

459:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  store i64 0, ptr %46, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %642, %459
  %461 = load i64, ptr %46, align 8, !tbaa !9
  %462 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #6
  %463 = icmp ult i64 %461, %462
  br i1 %463, label %498, label %464

464:                                              ; preds = %460
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %646

465:                                              ; preds = %413, %316
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  br label %466

466:                                              ; preds = %465, %312
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  br label %467

467:                                              ; preds = %466, %308
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  br label %468

468:                                              ; preds = %467, %304
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %24) #6
  br label %469

469:                                              ; preds = %468, %300
  call void @llvm.lifetime.end.p0(i64 512, ptr %24) #6
  br label %885

470:                                              ; preds = %876, %414
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %5, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %6, align 4
  br label %884

474:                                              ; preds = %415
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %5, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %6, align 4
  br label %692

478:                                              ; preds = %427
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %5, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %6, align 4
  br label %691

482:                                              ; preds = %430
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %5, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #6
  br label %690

486:                                              ; preds = %443, %436
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %5, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %6, align 4
  br label %689

490:                                              ; preds = %444
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %5, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #6
  br label %688

494:                                              ; preds = %458, %450
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %5, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %6, align 4
  br label %687

498:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  store i32 0, ptr %47, align 4, !tbaa !5
  %499 = load i64, ptr %46, align 8, !tbaa !9
  %500 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %499) #6
  %501 = load i8, ptr %500, align 1, !tbaa !11
  %502 = zext i8 %501 to i32
  %503 = icmp sle i32 %502, 2
  br i1 %503, label %504, label %505

504:                                              ; preds = %498
  store i32 3, ptr %47, align 4, !tbaa !5
  br label %514

505:                                              ; preds = %498
  %506 = load i64, ptr %46, align 8, !tbaa !9
  %507 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %506) #6
  %508 = load i8, ptr %507, align 1, !tbaa !11
  %509 = zext i8 %508 to i32
  %510 = icmp sle i32 %509, 4
  br i1 %510, label %511, label %512

511:                                              ; preds = %505
  store i32 2, ptr %47, align 4, !tbaa !5
  br label %513

512:                                              ; preds = %505
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %513

513:                                              ; preds = %512, %511
  br label %514

514:                                              ; preds = %513, %504
  %515 = load i64, ptr %46, align 8, !tbaa !9
  %516 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %515) #6
  %517 = load i8, ptr %516, align 1, !tbaa !11
  %518 = load i64, ptr %46, align 8, !tbaa !9
  %519 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %518) #6
  %520 = load i8, ptr %519, align 1, !tbaa !11
  %521 = load i32, ptr %47, align 4, !tbaa !5
  %522 = invoke noundef zeroext i1 @_Z6isNearIhhjEbT_T0_T1_(i8 noundef zeroext %517, i8 noundef zeroext %520, i32 noundef %521)
          to label %523 unwind label %569

523:                                              ; preds = %514
  br i1 %522, label %641, label %524

524:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %525 unwind label %573

525:                                              ; preds = %524
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.568)
          to label %526 unwind label %577

526:                                              ; preds = %525
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.3)
          to label %527 unwind label %581

527:                                              ; preds = %526
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.566)
          to label %528 unwind label %585

528:                                              ; preds = %527
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef @.str.548)
          to label %529 unwind label %589

529:                                              ; preds = %528
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %531 unwind label %593

531:                                              ; preds = %529
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.549)
          to label %533 unwind label %569

533:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #6
  %534 = load i64, ptr %46, align 8, !tbaa !9
  %535 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %534) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 1 dereferenceable(1) %535)
          to label %536 unwind label %602

536:                                              ; preds = %533
  %537 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %538 unwind label %606

538:                                              ; preds = %536
  %539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %537, ptr noundef @.str.20)
          to label %540 unwind label %606

540:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  %541 = load i64, ptr %46, align 8, !tbaa !9
  %542 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %541) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 1 dereferenceable(1) %542)
          to label %543 unwind label %610

543:                                              ; preds = %540
  %544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %539, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %545 unwind label %614

545:                                              ; preds = %543
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %544, ptr noundef @.str.550)
          to label %547 unwind label %614

547:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %548 unwind label %618

548:                                              ; preds = %547
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %546, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %550 unwind label %622

550:                                              ; preds = %548
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef @.str.551)
          to label %552 unwind label %622

552:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  %553 = load i64, ptr %46, align 8, !tbaa !9
  %554 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %553) #6
  %555 = load i8, ptr %554, align 1, !tbaa !11
  %556 = load i64, ptr %46, align 8, !tbaa !9
  %557 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %556) #6
  %558 = load i8, ptr %557, align 1, !tbaa !11
  %559 = invoke noundef zeroext i8 @_Z4diffIhhET_S0_T0_(i8 noundef zeroext %555, i8 noundef zeroext %558)
          to label %560 unwind label %626

560:                                              ; preds = %552
  store i8 %559, ptr %58, align 1, !tbaa !11
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %561 unwind label %626

561:                                              ; preds = %560
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %551, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %563 unwind label %630

563:                                              ; preds = %561
  %564 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %562, ptr noundef @.str.21)
          to label %565 unwind label %630

565:                                              ; preds = %563
  %566 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %564, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %567 unwind label %630

567:                                              ; preds = %565
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #6
  invoke void @_Z4failv()
          to label %568 unwind label %569

568:                                              ; preds = %567
  br label %641

569:                                              ; preds = %567, %531, %514
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %5, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %6, align 4
  br label %645

573:                                              ; preds = %524
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %5, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %6, align 4
  br label %601

577:                                              ; preds = %525
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %5, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %6, align 4
  br label %600

581:                                              ; preds = %526
  %582 = landingpad { ptr, i32 }
          cleanup
  %583 = extractvalue { ptr, i32 } %582, 0
  store ptr %583, ptr %5, align 8
  %584 = extractvalue { ptr, i32 } %582, 1
  store i32 %584, ptr %6, align 4
  br label %599

585:                                              ; preds = %527
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %5, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %6, align 4
  br label %598

589:                                              ; preds = %528
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %5, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %6, align 4
  br label %597

593:                                              ; preds = %529
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %5, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %597

597:                                              ; preds = %593, %589
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #6
  br label %598

598:                                              ; preds = %597, %585
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  br label %599

599:                                              ; preds = %598, %581
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #6
  br label %600

600:                                              ; preds = %599, %577
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %601

601:                                              ; preds = %600, %573
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #6
  br label %645

602:                                              ; preds = %533
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %5, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %6, align 4
  br label %640

606:                                              ; preds = %538, %536
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %5, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %6, align 4
  br label %639

610:                                              ; preds = %540
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %5, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %6, align 4
  br label %638

614:                                              ; preds = %545, %543
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %5, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %6, align 4
  br label %637

618:                                              ; preds = %547
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %5, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %6, align 4
  br label %636

622:                                              ; preds = %550, %548
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %5, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %6, align 4
  br label %635

626:                                              ; preds = %560, %552
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %5, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %6, align 4
  br label %634

630:                                              ; preds = %565, %563, %561
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %5, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %634

634:                                              ; preds = %630, %626
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  br label %635

635:                                              ; preds = %634, %622
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #6
  br label %636

636:                                              ; preds = %635, %618
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #6
  br label %637

637:                                              ; preds = %636, %614
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %638

638:                                              ; preds = %637, %610
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  br label %639

639:                                              ; preds = %638, %606
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #6
  br label %640

640:                                              ; preds = %639, %602
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #6
  br label %645

641:                                              ; preds = %568, %523
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %642

642:                                              ; preds = %641
  %643 = load i64, ptr %46, align 8, !tbaa !9
  %644 = add i64 %643, 1
  store i64 %644, ptr %46, align 8, !tbaa !9
  br label %460, !llvm.loop !39

645:                                              ; preds = %640, %601, %569
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  br label %687

646:                                              ; preds = %464
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %43) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %40) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 512, ptr %59) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %59)
          to label %647 unwind label %693

647:                                              ; preds = %646
  %648 = getelementptr inbounds %struct.LodePNGState, ptr %59, i32 0, i32 4
  %649 = invoke noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef %648, ptr noundef %39)
          to label %650 unwind label %697

650:                                              ; preds = %647
  %651 = getelementptr inbounds %struct.LodePNGState, ptr %59, i32 0, i32 3
  %652 = getelementptr inbounds %struct.LodePNGColorMode, ptr %651, i32 0, i32 1
  store i32 16, ptr %652, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #6
  %653 = load i32, ptr %1, align 4, !tbaa !5
  %654 = load i32, ptr %2, align 4, !tbaa !5
  %655 = mul i32 %653, %654
  %656 = mul i32 %655, 4
  %657 = zext i32 %656 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %657, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %658 unwind label %701

658:                                              ; preds = %650
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %62) #6
  %659 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #6
  %660 = getelementptr inbounds [3 x float], ptr %62, i64 0, i64 0
  %661 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %662 = load i32, ptr %1, align 4, !tbaa !5
  %663 = load i32, ptr %2, align 4, !tbaa !5
  %664 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %659, ptr noundef %660, ptr noundef %661, i32 noundef %662, i32 noundef %663, ptr noundef %59)
          to label %665 unwind label %705

665:                                              ; preds = %658
  invoke void @_Z13assertNoErrorj(i32 noundef %664)
          to label %666 unwind label %705

666:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #6
  %667 = load i32, ptr %1, align 4, !tbaa !5
  %668 = load i32, ptr %2, align 4, !tbaa !5
  %669 = mul i32 %667, %668
  %670 = mul i32 %669, 8
  %671 = zext i32 %670 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %671, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %672 unwind label %709

672:                                              ; preds = %666
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  %673 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  %674 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %60) #6
  %675 = load i32, ptr %1, align 4, !tbaa !5
  %676 = load i32, ptr %2, align 4, !tbaa !5
  %677 = getelementptr inbounds [3 x float], ptr %62, i64 0, i64 0
  %678 = load i32, ptr %8, align 4, !tbaa !5
  %679 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %673, ptr noundef %674, i32 noundef %675, i32 noundef %676, ptr noundef %59, ptr noundef %677, i32 noundef %678)
          to label %680 unwind label %713

680:                                              ; preds = %672
  invoke void @_Z13assertNoErrorj(i32 noundef %679)
          to label %681 unwind label %713

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %682

682:                                              ; preds = %872, %681
  %683 = load i64, ptr %65, align 8, !tbaa !9
  %684 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  %685 = icmp ult i64 %683, %684
  br i1 %685, label %717, label %686

686:                                              ; preds = %682
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  br label %876

687:                                              ; preds = %645, %494
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #6
  br label %688

688:                                              ; preds = %687, %490
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #6
  br label %689

689:                                              ; preds = %688, %486
  call void @llvm.lifetime.end.p0(i64 12, ptr %43) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  br label %690

690:                                              ; preds = %689, %482
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #6
  br label %691

691:                                              ; preds = %690, %478
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %40) #6
  br label %692

692:                                              ; preds = %691, %474
  call void @llvm.lifetime.end.p0(i64 512, ptr %40) #6
  br label %884

693:                                              ; preds = %646
  %694 = landingpad { ptr, i32 }
          cleanup
  %695 = extractvalue { ptr, i32 } %694, 0
  store ptr %695, ptr %5, align 8
  %696 = extractvalue { ptr, i32 } %694, 1
  store i32 %696, ptr %6, align 4
  br label %883

697:                                              ; preds = %647
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %5, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %6, align 4
  br label %882

701:                                              ; preds = %650
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %5, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  br label %881

705:                                              ; preds = %665, %658
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %5, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %6, align 4
  br label %880

709:                                              ; preds = %666
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %5, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %6, align 4
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #6
  br label %879

713:                                              ; preds = %680, %672
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %5, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %6, align 4
  br label %878

717:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %718 = load i64, ptr %65, align 8, !tbaa !9
  %719 = add i64 %718, 0
  %720 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %719) #6
  %721 = load i8, ptr %720, align 1, !tbaa !11
  %722 = zext i8 %721 to i32
  %723 = mul i32 %722, 256
  %724 = load i64, ptr %65, align 8, !tbaa !9
  %725 = add i64 %724, 1
  %726 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %725) #6
  %727 = load i8, ptr %726, align 1, !tbaa !11
  %728 = zext i8 %727 to i32
  %729 = add i32 %723, %728
  store i32 %729, ptr %66, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %730 = load i64, ptr %65, align 8, !tbaa !9
  %731 = add i64 %730, 0
  %732 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %731) #6
  %733 = load i8, ptr %732, align 1, !tbaa !11
  %734 = zext i8 %733 to i32
  %735 = mul i32 %734, 256
  %736 = load i64, ptr %65, align 8, !tbaa !9
  %737 = add i64 %736, 1
  %738 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %737) #6
  %739 = load i8, ptr %738, align 1, !tbaa !11
  %740 = zext i8 %739 to i32
  %741 = add i32 %735, %740
  store i32 %741, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  store i32 0, ptr %68, align 4, !tbaa !5
  %742 = load i32, ptr %66, align 4, !tbaa !5
  %743 = icmp ult i32 %742, 2048
  br i1 %743, label %744, label %745

744:                                              ; preds = %717
  store i32 768, ptr %68, align 4, !tbaa !5
  br label %756

745:                                              ; preds = %717
  %746 = load i32, ptr %66, align 4, !tbaa !5
  %747 = icmp ult i32 %746, 4096
  br i1 %747, label %748, label %749

748:                                              ; preds = %745
  store i32 24, ptr %68, align 4, !tbaa !5
  br label %755

749:                                              ; preds = %745
  %750 = load i32, ptr %66, align 4, !tbaa !5
  %751 = icmp ult i32 %750, 16384
  br i1 %751, label %752, label %753

752:                                              ; preds = %749
  store i32 4, ptr %68, align 4, !tbaa !5
  br label %754

753:                                              ; preds = %749
  store i32 2, ptr %68, align 4, !tbaa !5
  br label %754

754:                                              ; preds = %753, %752
  br label %755

755:                                              ; preds = %754, %748
  br label %756

756:                                              ; preds = %755, %744
  %757 = load i32, ptr %66, align 4, !tbaa !5
  %758 = load i32, ptr %67, align 4, !tbaa !5
  %759 = load i32, ptr %68, align 4, !tbaa !5
  %760 = invoke noundef zeroext i1 @_Z6isNearIjjjEbT_T0_T1_(i32 noundef %757, i32 noundef %758, i32 noundef %759)
          to label %761 unwind label %799

761:                                              ; preds = %756
  br i1 %760, label %871, label %762

762:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %763 unwind label %803

763:                                              ; preds = %762
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.569)
          to label %764 unwind label %807

764:                                              ; preds = %763
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef @.str.3)
          to label %765 unwind label %811

765:                                              ; preds = %764
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef @.str.570)
          to label %766 unwind label %815

766:                                              ; preds = %765
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.548)
          to label %767 unwind label %819

767:                                              ; preds = %766
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %769 unwind label %823

769:                                              ; preds = %767
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  %770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.549)
          to label %771 unwind label %799

771:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 4 dereferenceable(4) %66)
          to label %772 unwind label %832

772:                                              ; preds = %771
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %770, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %774 unwind label %836

774:                                              ; preds = %772
  %775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef @.str.20)
          to label %776 unwind label %836

776:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 4 dereferenceable(4) %67)
          to label %777 unwind label %840

777:                                              ; preds = %776
  %778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %775, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %779 unwind label %844

779:                                              ; preds = %777
  %780 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %778, ptr noundef @.str.550)
          to label %781 unwind label %844

781:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 4 dereferenceable(4) %68)
          to label %782 unwind label %848

782:                                              ; preds = %781
  %783 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %780, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %784 unwind label %852

784:                                              ; preds = %782
  %785 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %783, ptr noundef @.str.551)
          to label %786 unwind label %852

786:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #6
  %787 = load i32, ptr %66, align 4, !tbaa !5
  %788 = load i32, ptr %67, align 4, !tbaa !5
  %789 = invoke noundef i32 @_Z4diffIjjET_S0_T0_(i32 noundef %787, i32 noundef %788)
          to label %790 unwind label %856

790:                                              ; preds = %786
  store i32 %789, ptr %79, align 4, !tbaa !5
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 4 dereferenceable(4) %79)
          to label %791 unwind label %856

791:                                              ; preds = %790
  %792 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %785, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %793 unwind label %860

793:                                              ; preds = %791
  %794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %792, ptr noundef @.str.21)
          to label %795 unwind label %860

795:                                              ; preds = %793
  %796 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %794, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %797 unwind label %860

797:                                              ; preds = %795
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #6
  invoke void @_Z4failv()
          to label %798 unwind label %799

798:                                              ; preds = %797
  br label %871

799:                                              ; preds = %797, %769, %756
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %5, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %6, align 4
  br label %875

803:                                              ; preds = %762
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %5, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %6, align 4
  br label %831

807:                                              ; preds = %763
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %5, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %6, align 4
  br label %830

811:                                              ; preds = %764
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %5, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %6, align 4
  br label %829

815:                                              ; preds = %765
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %5, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %6, align 4
  br label %828

819:                                              ; preds = %766
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %5, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %6, align 4
  br label %827

823:                                              ; preds = %767
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %5, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #6
  br label %827

827:                                              ; preds = %823, %819
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  br label %828

828:                                              ; preds = %827, %815
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #6
  br label %829

829:                                              ; preds = %828, %811
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #6
  br label %830

830:                                              ; preds = %829, %807
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #6
  br label %831

831:                                              ; preds = %830, %803
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #6
  br label %875

832:                                              ; preds = %771
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %5, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %6, align 4
  br label %870

836:                                              ; preds = %774, %772
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %5, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %6, align 4
  br label %869

840:                                              ; preds = %776
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %5, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %6, align 4
  br label %868

844:                                              ; preds = %779, %777
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %5, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %6, align 4
  br label %867

848:                                              ; preds = %781
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %5, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %6, align 4
  br label %866

852:                                              ; preds = %784, %782
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %5, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %6, align 4
  br label %865

856:                                              ; preds = %790, %786
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %5, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %6, align 4
  br label %864

860:                                              ; preds = %795, %793, %791
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %5, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %864

864:                                              ; preds = %860, %856
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #6
  br label %865

865:                                              ; preds = %864, %852
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #6
  br label %866

866:                                              ; preds = %865, %848
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #6
  br label %867

867:                                              ; preds = %866, %844
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #6
  br label %868

868:                                              ; preds = %867, %840
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #6
  br label %869

869:                                              ; preds = %868, %836
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #6
  br label %870

870:                                              ; preds = %869, %832
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #6
  br label %875

871:                                              ; preds = %798, %761
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %872

872:                                              ; preds = %871
  %873 = load i64, ptr %65, align 8, !tbaa !9
  %874 = add i64 %873, 2
  store i64 %874, ptr %65, align 8, !tbaa !9
  br label %682, !llvm.loop !40

875:                                              ; preds = %870, %831, %799
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  br label %878

876:                                              ; preds = %686
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %62) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %59) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr %59) #6
  invoke void @_Z20lodepng_info_cleanupP11LodePNGInfo(ptr noundef %39)
          to label %877 unwind label %470

877:                                              ; preds = %876
  call void @llvm.lifetime.end.p0(i64 312, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #6
  ret void

878:                                              ; preds = %875, %713
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #6
  br label %879

879:                                              ; preds = %878, %709
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #6
  br label %880

880:                                              ; preds = %879, %705
  call void @llvm.lifetime.end.p0(i64 12, ptr %62) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #6
  br label %881

881:                                              ; preds = %880, %701
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #6
  br label %882

882:                                              ; preds = %881, %697
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %59) #6
  br label %883

883:                                              ; preds = %882, %693
  call void @llvm.lifetime.end.p0(i64 512, ptr %59) #6
  br label %884

884:                                              ; preds = %883, %692, %470
  call void @llvm.lifetime.end.p0(i64 312, ptr %39) #6
  br label %885

885:                                              ; preds = %884, %469, %299
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  br label %886

886:                                              ; preds = %885, %94
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %1) #6
  br label %887

887:                                              ; preds = %886
  %888 = load ptr, ptr %5, align 8
  %889 = load i32, ptr %6, align 4
  %890 = insertvalue { ptr, i32 } poison, ptr %888, 0
  %891 = insertvalue { ptr, i32 } %890, i32 %889, 1
  resume { ptr, i32 } %891
}

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

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

declare noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) #4

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

declare noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_Z17lodepng_info_initP11LodePNGInfo(ptr noundef) #4

declare noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z6isNearIhhjEbT_T0_T1_(i8 noundef zeroext, i8 noundef zeroext, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z6isNearIjjjEbT_T0_T1_(i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4diffIjjET_S0_T0_(i32 noundef, i32 noundef) #3

declare void @_Z20lodepng_info_cleanupP11LodePNGInfo(ptr noundef) #4

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16, !6, i64 156}
!16 = !{!"_ZTS12LodePNGState", !17, i64 8, !20, i64 64, !23, i64 152, !25, i64 192, !6, i64 504}
!17 = !{!"_ZTS22LodePNGDecoderSettings", !18, i64 0, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52}
!18 = !{!"_ZTS25LodePNGDecompressSettings", !6, i64 0, !6, i64 4, !19, i64 8, !19, i64 16, !19, i64 24}
!19 = !{!"any pointer", !7, i64 0}
!20 = !{!"_ZTS22LodePNGEncoderSettings", !21, i64 0, !6, i64 48, !6, i64 52, !22, i64 56, !19, i64 64, !6, i64 72, !6, i64 76, !6, i64 80}
!21 = !{!"_ZTS23LodePNGCompressSettings", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !19, i64 24, !19, i64 32, !19, i64 40}
!22 = !{!"_ZTS21LodePNGFilterStrategy", !7, i64 0}
!23 = !{!"_ZTS16LodePNGColorMode", !24, i64 0, !6, i64 4, !19, i64 8, !10, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36}
!24 = !{!"_ZTS16LodePNGColorType", !7, i64 0}
!25 = !{!"_ZTS11LodePNGInfo", !6, i64 0, !6, i64 4, !6, i64 8, !23, i64 16, !6, i64 56, !6, i64 60, !6, i64 64, !6, i64 68, !10, i64 72, !19, i64 80, !19, i64 88, !10, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !19, i64 128, !6, i64 136, !26, i64 140, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !6, i64 220, !6, i64 224, !6, i64 228, !6, i64 232, !19, i64 240, !19, i64 248, !6, i64 256, !7, i64 264, !7, i64 288}
!26 = !{!"_ZTS11LodePNGTime", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!27 = distinct !{!27, !13}
!28 = !{!25, !6, i64 180}
!29 = !{!25, !6, i64 184}
!30 = !{!25, !6, i64 188}
!31 = !{!25, !6, i64 192}
!32 = !{!25, !6, i64 196}
!33 = !{!25, !6, i64 200}
!34 = !{!25, !6, i64 204}
!35 = !{!25, !6, i64 208}
!36 = !{!25, !6, i64 212}
!37 = !{!25, !6, i64 216}
!38 = !{!25, !6, i64 220}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}


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

%"class.std::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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"class.lodepng::State" = type { %struct.LodePNGState.base, [4 x i8] }
%struct.LodePNGState.base = type <{ ptr, %struct.LodePNGDecoderSettings, %struct.LodePNGEncoderSettings, %struct.LodePNGColorMode, %struct.LodePNGInfo, i32 }>
%struct.LodePNGDecoderSettings = type { %struct.LodePNGDecompressSettings, i32, i32, i32, i32, i32, i32 }
%struct.LodePNGDecompressSettings = type { i32, i32, ptr, ptr, ptr }
%struct.LodePNGEncoderSettings = type { %struct.LodePNGCompressSettings, i32, i32, i32, ptr, i32, i32, i32 }
%struct.LodePNGCompressSettings = type { i32, i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.LodePNGColorMode = type { i32, i32, ptr, i64, i32, i32, i32, i32 }
%struct.LodePNGInfo = type { i32, i32, i32, %struct.LodePNGColorMode, i32, i32, i32, i32, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, i32, %struct.LodePNGTime, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, i32, [3 x ptr], [3 x i64] }
%struct.LodePNGTime = type { i32, i32, i32, i32, i32, i32 }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.23" = type { i8 }
%"class.std::allocator" = type { i8 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.548 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.549 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.550 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.551 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.564 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.565 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.566 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.567 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.568 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.569 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.570 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z4failv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #0

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; 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 #0 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)) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z13assertNoErrorj(i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z9getRandomv() local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

declare void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508)) unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z4diffIhhET_S0_T0_(i8 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7testXYZv() local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::vector", align 8
  %2 = alloca %"class.std::allocator.0", align 1
  %3 = alloca %"class.lodepng::State", align 8
  %4 = alloca %"class.std::vector.21", align 8
  %5 = alloca %"class.std::allocator.23", align 1
  %6 = alloca [3 x float], align 4
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::allocator.0", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.lodepng::State", align 8
  %18 = alloca %"class.std::vector.21", align 8
  %19 = alloca %"class.std::allocator.23", align 1
  %20 = alloca [3 x float], align 4
  %21 = alloca %"class.std::vector", align 8
  %22 = alloca %"class.std::allocator.0", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %struct.LodePNGInfo, align 8
  %32 = alloca %"class.lodepng::State", align 8
  %33 = alloca %"class.std::vector.21", align 8
  %34 = alloca %"class.std::allocator.23", align 1
  %35 = alloca [3 x float], align 4
  %36 = alloca %"class.std::vector", align 8
  %37 = alloca %"class.std::allocator.0", align 1
  %38 = alloca i32, align 4
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator", align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca i8, align 1
  %50 = alloca %"class.lodepng::State", align 8
  %51 = alloca %"class.std::vector.21", align 8
  %52 = alloca %"class.std::allocator.23", align 1
  %53 = alloca [3 x float], align 4
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca %"class.std::allocator.0", align 1
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::allocator", align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca i32, align 4
  %70 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.564)
  %71 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef 2097152, ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %72 unwind label %74

72:                                               ; preds = %0
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #6
  %73 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %.not242 = icmp eq i64 %73, 0
  br i1 %.not242, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %72
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %3) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %3)
          to label %82 unwind label %95

74:                                               ; preds = %0
  %75 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #6
  br label %558

.lr.ph:                                           ; preds = %72, %.lr.ph
  %.074229 = phi i64 [ %79, %.lr.ph ], [ 0, %72 ]
  %76 = call noundef i32 @_Z9getRandomv()
  %77 = trunc i32 %76 to i8
  %78 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.074229) #6
  store i8 %77, ptr %78, align 1, !tbaa !5
  %79 = add nuw i64 %.074229, 1
  %80 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %81 = icmp ult i64 %79, %80
  br i1 %81, label %.lr.ph, label %._crit_edge, !llvm.loop !8

82:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %83 unwind label %97

83:                                               ; preds = %82
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #6
  %84 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %85 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %86 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %84, ptr noundef nonnull %6, ptr noundef %85, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %3)
          to label %87 unwind label %99

87:                                               ; preds = %83
  invoke void @_Z13assertNoErrorj(i32 noundef %86)
          to label %88 unwind label %99

88:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %89 unwind label %101

89:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  %90 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  %91 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  %92 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %90, ptr noundef %91, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %3, ptr noundef nonnull %6, i32 noundef 3)
          to label %93 unwind label %103

93:                                               ; preds = %89
  invoke void @_Z13assertNoErrorj(i32 noundef %92)
          to label %.preheader228 unwind label %103

.preheader228:                                    ; preds = %93
  %94 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  %.not243 = icmp eq i64 %94, 0
  br i1 %.not243, label %._crit_edge232, label %.lr.ph231

._crit_edge232:                                   ; preds = %163, %.preheader228
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %3) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %17) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %17)
          to label %167 unwind label %186

95:                                               ; preds = %._crit_edge
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %185

97:                                               ; preds = %82
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  br label %184

99:                                               ; preds = %87, %83
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %183

101:                                              ; preds = %88
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  br label %182

103:                                              ; preds = %93, %89
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %181

.lr.ph231:                                        ; preds = %.preheader228, %163
  %.072230 = phi i64 [ %164, %163 ], [ 0, %.preheader228 ]
  %105 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.072230) #6
  %106 = load i8, ptr %105, align 1, !tbaa !5
  %107 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.072230) #6
  %108 = load i8, ptr %107, align 1, !tbaa !5
  %.not206 = icmp eq i8 %106, %108
  br i1 %.not206, label %163, label %109

109:                                              ; preds = %.lr.ph231
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %110 unwind label %133

110:                                              ; preds = %109
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.565)
          to label %111 unwind label %135

111:                                              ; preds = %110
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.3)
          to label %112 unwind label %137

112:                                              ; preds = %111
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.566)
          to label %113 unwind label %139

113:                                              ; preds = %112
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.18)
          to label %114 unwind label %141

114:                                              ; preds = %113
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %116 unwind label %143

116:                                              ; preds = %114
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19)
          to label %118 unwind label %150

118:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  %119 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.072230) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %120 unwind label %152

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %122 unwind label %154

122:                                              ; preds = %120
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @.str.20)
          to label %124 unwind label %154

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #6
  %125 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.072230) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 1 dereferenceable(1) %125)
          to label %126 unwind label %156

126:                                              ; preds = %124
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %128 unwind label %158

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull @.str.21)
          to label %130 unwind label %158

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %132 unwind label %158

132:                                              ; preds = %130
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  invoke void @_Z4failv()
          to label %163 unwind label %150

133:                                              ; preds = %109
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %149

135:                                              ; preds = %110
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %148

137:                                              ; preds = %111
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %147

139:                                              ; preds = %112
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %146

141:                                              ; preds = %113
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %145

143:                                              ; preds = %114
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %145

145:                                              ; preds = %143, %141
  %.pn207 = phi { ptr, i32 } [ %144, %143 ], [ %142, %141 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %146

146:                                              ; preds = %145, %139
  %.pn207.pn = phi { ptr, i32 } [ %.pn207, %145 ], [ %140, %139 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %147

147:                                              ; preds = %146, %137
  %.pn207.pn.pn = phi { ptr, i32 } [ %.pn207.pn, %146 ], [ %138, %137 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %148

148:                                              ; preds = %147, %135
  %.pn207.pn.pn.pn = phi { ptr, i32 } [ %.pn207.pn.pn, %147 ], [ %136, %135 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %149

149:                                              ; preds = %148, %133
  %.pn207.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn207.pn.pn.pn, %148 ], [ %134, %133 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %181

150:                                              ; preds = %132, %116
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %181

152:                                              ; preds = %118
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %162

154:                                              ; preds = %122, %120
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %161

156:                                              ; preds = %124
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %160

158:                                              ; preds = %130, %128, %126
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %160

160:                                              ; preds = %158, %156
  %.pn213 = phi { ptr, i32 } [ %159, %158 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  br label %161

161:                                              ; preds = %160, %154
  %.pn213.pn = phi { ptr, i32 } [ %.pn213, %160 ], [ %155, %154 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %162

162:                                              ; preds = %161, %152
  %.pn213.pn.pn = phi { ptr, i32 } [ %.pn213.pn, %161 ], [ %153, %152 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  br label %181

163:                                              ; preds = %.lr.ph231, %132
  %164 = add nuw i64 %.072230, 1
  %165 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  %166 = icmp ult i64 %164, %165
  br i1 %166, label %.lr.ph231, label %._crit_edge232, !llvm.loop !10

167:                                              ; preds = %._crit_edge232
  %168 = getelementptr inbounds i8, ptr %17, i64 156
  store i32 16, ptr %168, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %169 unwind label %188

169:                                              ; preds = %167
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #6
  %170 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  %171 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %172 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %170, ptr noundef nonnull %20, ptr noundef %171, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %17)
          to label %173 unwind label %190

173:                                              ; preds = %169
  invoke void @_Z13assertNoErrorj(i32 noundef %172)
          to label %174 unwind label %190

174:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef 2097152, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %175 unwind label %192

175:                                              ; preds = %174
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  %176 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  %177 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  %178 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %176, ptr noundef %177, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %17, ptr noundef nonnull %20, i32 noundef 3)
          to label %179 unwind label %194

179:                                              ; preds = %175
  invoke void @_Z13assertNoErrorj(i32 noundef %178)
          to label %.preheader227 unwind label %194

.preheader227:                                    ; preds = %179
  %180 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  %.not244 = icmp eq i64 %180, 0
  br i1 %.not244, label %._crit_edge235, label %.lr.ph234

._crit_edge235:                                   ; preds = %254, %.preheader227
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %17) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 312, ptr nonnull %31) #6
  invoke void @_Z17lodepng_info_initP11LodePNGInfo(ptr noundef nonnull %31)
          to label %258 unwind label %285

181:                                              ; preds = %149, %150, %162, %103
  %.pn217.pn = phi { ptr, i32 } [ %104, %103 ], [ %151, %150 ], [ %.pn213.pn.pn, %162 ], [ %.pn207.pn.pn.pn.pn, %149 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  br label %182

182:                                              ; preds = %181, %101
  %.pn217.pn.pn = phi { ptr, i32 } [ %.pn217.pn, %181 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  br label %183

183:                                              ; preds = %182, %99
  %.pn217.pn.pn.pn = phi { ptr, i32 } [ %.pn217.pn.pn, %182 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #6
  br label %184

184:                                              ; preds = %183, %97
  %.pn217.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn217.pn.pn.pn, %183 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %3) #6
  br label %185

185:                                              ; preds = %184, %95
  %.pn217.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn217.pn.pn.pn.pn, %184 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %3) #6
  br label %557

186:                                              ; preds = %._crit_edge232
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %284

188:                                              ; preds = %167
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  br label %283

190:                                              ; preds = %173, %169
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %282

192:                                              ; preds = %174
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  br label %281

194:                                              ; preds = %179, %175
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %280

.lr.ph234:                                        ; preds = %.preheader227, %254
  %.071233 = phi i64 [ %255, %254 ], [ 0, %.preheader227 ]
  %196 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.071233) #6
  %197 = load i8, ptr %196, align 1, !tbaa !5
  %198 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.071233) #6
  %199 = load i8, ptr %198, align 1, !tbaa !5
  %.not = icmp eq i8 %197, %199
  br i1 %.not, label %254, label %200

200:                                              ; preds = %.lr.ph234
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %201 unwind label %224

201:                                              ; preds = %200
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.567)
          to label %202 unwind label %226

202:                                              ; preds = %201
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.3)
          to label %203 unwind label %228

203:                                              ; preds = %202
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.566)
          to label %204 unwind label %230

204:                                              ; preds = %203
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.18)
          to label %205 unwind label %232

205:                                              ; preds = %204
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %207 unwind label %234

207:                                              ; preds = %205
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.19)
          to label %209 unwind label %241

209:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  %210 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.071233) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 1 dereferenceable(1) %210)
          to label %211 unwind label %243

211:                                              ; preds = %209
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %213 unwind label %245

213:                                              ; preds = %211
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull @.str.20)
          to label %215 unwind label %245

215:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  %216 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.071233) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 1 dereferenceable(1) %216)
          to label %217 unwind label %247

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %219 unwind label %249

219:                                              ; preds = %217
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @.str.21)
          to label %221 unwind label %249

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %223 unwind label %249

223:                                              ; preds = %221
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  invoke void @_Z4failv()
          to label %254 unwind label %241

224:                                              ; preds = %200
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %240

226:                                              ; preds = %201
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %239

228:                                              ; preds = %202
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %238

230:                                              ; preds = %203
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %237

232:                                              ; preds = %204
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %205
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  br label %236

236:                                              ; preds = %234, %232
  %.pn189 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %237

237:                                              ; preds = %236, %230
  %.pn189.pn = phi { ptr, i32 } [ %.pn189, %236 ], [ %231, %230 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %238

238:                                              ; preds = %237, %228
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %237 ], [ %229, %228 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %239

239:                                              ; preds = %238, %226
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %238 ], [ %227, %226 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %240

240:                                              ; preds = %239, %224
  %.pn189.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn.pn, %239 ], [ %225, %224 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  br label %280

241:                                              ; preds = %223, %207
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %280

243:                                              ; preds = %209
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %253

245:                                              ; preds = %213, %211
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %252

247:                                              ; preds = %215
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %221, %219, %217
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %251

251:                                              ; preds = %249, %247
  %.pn195 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %252

252:                                              ; preds = %251, %245
  %.pn195.pn = phi { ptr, i32 } [ %.pn195, %251 ], [ %246, %245 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %253

253:                                              ; preds = %252, %243
  %.pn195.pn.pn = phi { ptr, i32 } [ %.pn195.pn, %252 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  br label %280

254:                                              ; preds = %.lr.ph234, %223
  %255 = add nuw i64 %.071233, 1
  %256 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  %257 = icmp ult i64 %255, %256
  br i1 %257, label %.lr.ph234, label %._crit_edge235, !llvm.loop !25

258:                                              ; preds = %._crit_edge235
  %259 = getelementptr inbounds i8, ptr %31, i64 180
  store <4 x i32> <i32 1, i32 30000, i32 1, i32 10000>, ptr %259, align 4, !tbaa !26
  %260 = getelementptr inbounds i8, ptr %31, i64 196
  store <4 x i32> <i32 20000, i32 30000, i32 50000, i32 70000>, ptr %260, align 4, !tbaa !26
  %261 = getelementptr inbounds i8, ptr %31, i64 212
  store i32 11000, ptr %261, align 4, !tbaa !27
  %262 = getelementptr inbounds i8, ptr %31, i64 216
  store i32 13000, ptr %262, align 8, !tbaa !28
  %263 = getelementptr inbounds i8, ptr %31, i64 220
  store i32 17000, ptr %263, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %32) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %32)
          to label %264 unwind label %287

264:                                              ; preds = %258
  %265 = getelementptr inbounds i8, ptr %32, i64 192
  %266 = invoke noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef nonnull %265, ptr noundef nonnull %31)
          to label %267 unwind label %289

267:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %268 unwind label %291

268:                                              ; preds = %267
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #6
  %269 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  %270 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %271 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %269, ptr noundef nonnull %35, ptr noundef %270, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %32)
          to label %272 unwind label %293

272:                                              ; preds = %268
  invoke void @_Z13assertNoErrorj(i32 noundef %271)
          to label %273 unwind label %293

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %274 unwind label %295

274:                                              ; preds = %273
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  %275 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  %276 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  %277 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %275, ptr noundef %276, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %32, ptr noundef nonnull %35, i32 noundef 3)
          to label %278 unwind label %297

278:                                              ; preds = %274
  invoke void @_Z13assertNoErrorj(i32 noundef %277)
          to label %.preheader226 unwind label %297

.preheader226:                                    ; preds = %278
  %279 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  %.not245 = icmp eq i64 %279, 0
  br i1 %.not245, label %._crit_edge238, label %.lr.ph237

._crit_edge238:                                   ; preds = %397, %.preheader226
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %32) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %50) #6
  invoke void @_ZN7lodepng5StateC1Ev(ptr noundef nonnull align 8 dereferenceable(508) %50)
          to label %402 unwind label %425

280:                                              ; preds = %240, %241, %253, %194
  %.pn199.pn = phi { ptr, i32 } [ %195, %194 ], [ %242, %241 ], [ %.pn195.pn.pn, %253 ], [ %.pn189.pn.pn.pn.pn, %240 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #6
  br label %281

281:                                              ; preds = %280, %192
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %280 ], [ %193, %192 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %282

282:                                              ; preds = %281, %190
  %.pn199.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn, %281 ], [ %191, %190 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #6
  br label %283

283:                                              ; preds = %282, %188
  %.pn199.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn.pn, %282 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %17) #6
  br label %284

284:                                              ; preds = %283, %186
  %.pn199.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn.pn.pn, %283 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %17) #6
  br label %557

285:                                              ; preds = %._crit_edge241, %._crit_edge235
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %556

287:                                              ; preds = %258
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %424

289:                                              ; preds = %264
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %423

291:                                              ; preds = %267
  %292 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  br label %422

293:                                              ; preds = %272, %268
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %421

295:                                              ; preds = %273
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  br label %420

297:                                              ; preds = %278, %274
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %419

.lr.ph237:                                        ; preds = %.preheader226, %397
  %.070236 = phi i64 [ %398, %397 ], [ 0, %.preheader226 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  store i32 0, ptr %38, align 4, !tbaa !26
  %299 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.070236) #6
  %300 = load i8, ptr %299, align 1, !tbaa !5
  %301 = icmp ult i8 %300, 3
  br i1 %301, label %302, label %303

302:                                              ; preds = %.lr.ph237
  store i32 3, ptr %38, align 4, !tbaa !26
  br label %309

303:                                              ; preds = %.lr.ph237
  %304 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.070236) #6
  %305 = load i8, ptr %304, align 1, !tbaa !5
  %306 = icmp ult i8 %305, 5
  br i1 %306, label %307, label %308

307:                                              ; preds = %303
  store i32 2, ptr %38, align 4, !tbaa !26
  br label %309

308:                                              ; preds = %303
  store i32 0, ptr %38, align 4, !tbaa !26
  br label %309

309:                                              ; preds = %307, %308, %302
  %310 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.070236) #6
  %311 = load i8, ptr %310, align 1, !tbaa !5
  %312 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %.070236) #6
  %313 = load i8, ptr %312, align 1, !tbaa !5
  %314 = load i32, ptr %38, align 4, !tbaa !26
  %315 = call noundef zeroext i1 @_Z6isNearIhhjEbT_T0_T1_(i8 noundef zeroext %311, i8 noundef zeroext %313, i32 noundef %314)
  br i1 %315, label %397, label %316

316:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %317 unwind label %357

317:                                              ; preds = %316
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.568)
          to label %318 unwind label %359

318:                                              ; preds = %317
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.3)
          to label %319 unwind label %361

319:                                              ; preds = %318
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull @.str.566)
          to label %320 unwind label %363

320:                                              ; preds = %319
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.548)
          to label %321 unwind label %365

321:                                              ; preds = %320
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %323 unwind label %367

323:                                              ; preds = %321
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.549)
          to label %325 unwind label %355

325:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #6
  %326 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.070236) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 1 dereferenceable(1) %326)
          to label %327 unwind label %374

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %329 unwind label %376

329:                                              ; preds = %327
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef nonnull @.str.20)
          to label %331 unwind label %376

331:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  %332 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %.070236) #6
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 1 dereferenceable(1) %332)
          to label %333 unwind label %378

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %335 unwind label %380

335:                                              ; preds = %333
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull @.str.550)
          to label %337 unwind label %380

337:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %338 unwind label %382

338:                                              ; preds = %337
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %340 unwind label %384

340:                                              ; preds = %338
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull @.str.551)
          to label %342 unwind label %384

342:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #6
  %343 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.070236) #6
  %344 = load i8, ptr %343, align 1, !tbaa !5
  %345 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %.070236) #6
  %346 = load i8, ptr %345, align 1, !tbaa !5
  %347 = call noundef zeroext i8 @_Z4diffIhhET_S0_T0_(i8 noundef zeroext %344, i8 noundef zeroext %346)
  store i8 %347, ptr %49, align 1, !tbaa !5
  invoke void @_Z8valtostrIhENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %348 unwind label %386

348:                                              ; preds = %342
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %350 unwind label %388

350:                                              ; preds = %348
  %351 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull @.str.21)
          to label %352 unwind label %388

352:                                              ; preds = %350
  %353 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %351, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %354 unwind label %388

354:                                              ; preds = %352
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  invoke void @_Z4failv()
          to label %397 unwind label %355

355:                                              ; preds = %354, %323
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %401

357:                                              ; preds = %316
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %373

359:                                              ; preds = %317
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %372

361:                                              ; preds = %318
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %371

363:                                              ; preds = %319
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %370

365:                                              ; preds = %320
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %369

367:                                              ; preds = %321
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #6
  br label %369

369:                                              ; preds = %367, %365
  %.pn166 = phi { ptr, i32 } [ %368, %367 ], [ %366, %365 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %370

370:                                              ; preds = %369, %363
  %.pn166.pn = phi { ptr, i32 } [ %.pn166, %369 ], [ %364, %363 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #6
  br label %371

371:                                              ; preds = %370, %361
  %.pn166.pn.pn = phi { ptr, i32 } [ %.pn166.pn, %370 ], [ %362, %361 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  br label %372

372:                                              ; preds = %371, %359
  %.pn166.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn, %371 ], [ %360, %359 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #6
  br label %373

373:                                              ; preds = %372, %357
  %.pn166.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn166.pn.pn.pn, %372 ], [ %358, %357 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  br label %401

374:                                              ; preds = %325
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %396

376:                                              ; preds = %329, %327
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %395

378:                                              ; preds = %331
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %394

380:                                              ; preds = %335, %333
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %393

382:                                              ; preds = %337
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %392

384:                                              ; preds = %340, %338
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %391

386:                                              ; preds = %342
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %390

388:                                              ; preds = %352, %350, %348
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %390

390:                                              ; preds = %388, %386
  %.pn172 = phi { ptr, i32 } [ %389, %388 ], [ %387, %386 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #6
  br label %391

391:                                              ; preds = %390, %384
  %.pn172.pn = phi { ptr, i32 } [ %.pn172, %390 ], [ %385, %384 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %392

392:                                              ; preds = %391, %382
  %.pn172.pn.pn = phi { ptr, i32 } [ %.pn172.pn, %391 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #6
  br label %393

393:                                              ; preds = %392, %380
  %.pn172.pn.pn.pn = phi { ptr, i32 } [ %.pn172.pn.pn, %392 ], [ %381, %380 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  br label %394

394:                                              ; preds = %393, %378
  %.pn172.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn172.pn.pn.pn, %393 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  br label %395

395:                                              ; preds = %394, %376
  %.pn172.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn172.pn.pn.pn.pn, %394 ], [ %377, %376 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %396

396:                                              ; preds = %395, %374
  %.pn172.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn172.pn.pn.pn.pn.pn, %395 ], [ %375, %374 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #6
  br label %401

397:                                              ; preds = %354, %309
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  %398 = add nuw i64 %.070236, 1
  %399 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  %400 = icmp ult i64 %398, %399
  br i1 %400, label %.lr.ph237, label %._crit_edge238, !llvm.loop !30

401:                                              ; preds = %396, %373, %355
  %.pn180 = phi { ptr, i32 } [ %356, %355 ], [ %.pn172.pn.pn.pn.pn.pn.pn, %396 ], [ %.pn166.pn.pn.pn.pn, %373 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  br label %419

402:                                              ; preds = %._crit_edge238
  %403 = getelementptr inbounds i8, ptr %50, i64 192
  %404 = invoke noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef nonnull %403, ptr noundef nonnull %31)
          to label %405 unwind label %427

405:                                              ; preds = %402
  %406 = getelementptr inbounds i8, ptr %50, i64 156
  store i32 16, ptr %406, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #6
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 1048576, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %407 unwind label %429

407:                                              ; preds = %405
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %53) #6
  %408 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #6
  %409 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  %410 = invoke noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef %408, ptr noundef nonnull %53, ptr noundef %409, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %50)
          to label %411 unwind label %431

411:                                              ; preds = %407
  invoke void @_Z13assertNoErrorj(i32 noundef %410)
          to label %412 unwind label %431

412:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #6
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  invoke void @_ZNSt6vectorIhSaIhEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef 2097152, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %413 unwind label %433

413:                                              ; preds = %412
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #6
  %414 = call noundef ptr @_ZNSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #6
  %415 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #6
  %416 = invoke noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef %414, ptr noundef %415, i32 noundef 512, i32 noundef 512, ptr noundef nonnull %50, ptr noundef nonnull %53, i32 noundef 3)
          to label %417 unwind label %435

417:                                              ; preds = %413
  invoke void @_Z13assertNoErrorj(i32 noundef %416)
          to label %.preheader unwind label %435

.preheader:                                       ; preds = %417
  %418 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #6
  %.not246 = icmp eq i64 %418, 0
  br i1 %.not246, label %._crit_edge241, label %.lr.ph240

._crit_edge241:                                   ; preds = %544, %.preheader
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #6
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %50) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %50) #6
  invoke void @_Z20lodepng_info_cleanupP11LodePNGInfo(ptr noundef nonnull %31)
          to label %549 unwind label %285

419:                                              ; preds = %401, %297
  %.pn180.pn = phi { ptr, i32 } [ %.pn180, %401 ], [ %298, %297 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #6
  br label %420

420:                                              ; preds = %419, %295
  %.pn180.pn.pn = phi { ptr, i32 } [ %.pn180.pn, %419 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #6
  br label %421

421:                                              ; preds = %420, %293
  %.pn180.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn, %420 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  br label %422

422:                                              ; preds = %421, %291
  %.pn180.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn.pn, %421 ], [ %292, %291 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #6
  br label %423

423:                                              ; preds = %422, %289
  %.pn180.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn.pn.pn, %422 ], [ %290, %289 ]
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %32) #6
  br label %424

424:                                              ; preds = %423, %287
  %.pn180.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn.pn.pn.pn, %423 ], [ %288, %287 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %32) #6
  br label %556

425:                                              ; preds = %._crit_edge238
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %555

427:                                              ; preds = %402
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %554

429:                                              ; preds = %405
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #6
  br label %553

431:                                              ; preds = %411, %407
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %552

433:                                              ; preds = %412
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #6
  br label %551

435:                                              ; preds = %417, %413
  %436 = landingpad { ptr, i32 }
          cleanup
  br label %550

.lr.ph240:                                        ; preds = %.preheader, %544
  %.0239 = phi i64 [ %545, %544 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #6
  %437 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %.0239) #6
  %438 = load i8, ptr %437, align 1, !tbaa !5
  %439 = zext i8 %438 to i32
  %440 = shl nuw nsw i32 %439, 8
  %441 = or disjoint i64 %.0239, 1
  %442 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %441) #6
  %443 = load i8, ptr %442, align 1, !tbaa !5
  %444 = zext i8 %443 to i32
  %445 = or disjoint i32 %440, %444
  store i32 %445, ptr %56, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #6
  %446 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %.0239) #6
  %447 = load i8, ptr %446, align 1, !tbaa !5
  %448 = zext i8 %447 to i32
  %449 = shl nuw nsw i32 %448, 8
  %450 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %441) #6
  %451 = load i8, ptr %450, align 1, !tbaa !5
  %452 = zext i8 %451 to i32
  %453 = or disjoint i32 %449, %452
  store i32 %453, ptr %57, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #6
  %454 = load i32, ptr %56, align 4, !tbaa !26
  %455 = icmp ult i32 %454, 2048
  br i1 %455, label %456, label %457

456:                                              ; preds = %.lr.ph240
  store i32 768, ptr %58, align 4, !tbaa !26
  br label %464

457:                                              ; preds = %.lr.ph240
  %458 = icmp ult i32 %454, 4096
  br i1 %458, label %459, label %460

459:                                              ; preds = %457
  store i32 24, ptr %58, align 4, !tbaa !26
  br label %464

460:                                              ; preds = %457
  %461 = icmp ult i32 %454, 16384
  br i1 %461, label %462, label %463

462:                                              ; preds = %460
  store i32 4, ptr %58, align 4, !tbaa !26
  br label %464

463:                                              ; preds = %460
  store i32 2, ptr %58, align 4, !tbaa !26
  br label %464

464:                                              ; preds = %459, %463, %462, %456
  %465 = phi i32 [ 24, %459 ], [ 2, %463 ], [ 4, %462 ], [ 768, %456 ]
  %466 = call noundef zeroext i1 @_Z6isNearIjjjEbT_T0_T1_(i32 noundef %454, i32 noundef %453, i32 noundef %465)
  br i1 %466, label %544, label %467

467:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.10, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %468 unwind label %504

468:                                              ; preds = %467
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull @.str.569)
          to label %469 unwind label %506

469:                                              ; preds = %468
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull @.str.3)
          to label %470 unwind label %508

470:                                              ; preds = %469
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull @.str.570)
          to label %471 unwind label %510

471:                                              ; preds = %470
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.548)
          to label %472 unwind label %512

472:                                              ; preds = %471
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %59)
          to label %474 unwind label %514

474:                                              ; preds = %472
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.549)
          to label %476 unwind label %502

476:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %477 unwind label %521

477:                                              ; preds = %476
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %479 unwind label %523

479:                                              ; preds = %477
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull @.str.20)
          to label %481 unwind label %523

481:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %482 unwind label %525

482:                                              ; preds = %481
  %483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %484 unwind label %527

484:                                              ; preds = %482
  %485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %483, ptr noundef nonnull @.str.550)
          to label %486 unwind label %527

486:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #6
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 4 dereferenceable(4) %58)
          to label %487 unwind label %529

487:                                              ; preds = %486
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %485, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %489 unwind label %531

489:                                              ; preds = %487
  %490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %488, ptr noundef nonnull @.str.551)
          to label %491 unwind label %531

491:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #6
  %492 = load i32, ptr %56, align 4, !tbaa !26
  %493 = load i32, ptr %57, align 4, !tbaa !26
  %494 = call noundef i32 @_Z4diffIjjET_S0_T0_(i32 noundef %492, i32 noundef %493)
  store i32 %494, ptr %69, align 4, !tbaa !26
  invoke void @_Z8valtostrIjENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 4 dereferenceable(4) %69)
          to label %495 unwind label %533

495:                                              ; preds = %491
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %490, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %497 unwind label %535

497:                                              ; preds = %495
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef nonnull @.str.21)
          to label %499 unwind label %535

499:                                              ; preds = %497
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %501 unwind label %535

501:                                              ; preds = %499
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  invoke void @_Z4failv()
          to label %544 unwind label %502

502:                                              ; preds = %501, %474
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %548

504:                                              ; preds = %467
  %505 = landingpad { ptr, i32 }
          cleanup
  br label %520

506:                                              ; preds = %468
  %507 = landingpad { ptr, i32 }
          cleanup
  br label %519

508:                                              ; preds = %469
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %518

510:                                              ; preds = %470
  %511 = landingpad { ptr, i32 }
          cleanup
  br label %517

512:                                              ; preds = %471
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %516

514:                                              ; preds = %472
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #6
  br label %516

516:                                              ; preds = %514, %512
  %.pn = phi { ptr, i32 } [ %515, %514 ], [ %513, %512 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %517

517:                                              ; preds = %516, %510
  %.pn.pn = phi { ptr, i32 } [ %.pn, %516 ], [ %511, %510 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %518

518:                                              ; preds = %517, %508
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %517 ], [ %509, %508 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %519

519:                                              ; preds = %518, %506
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %518 ], [ %507, %506 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #6
  br label %520

520:                                              ; preds = %519, %504
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %519 ], [ %505, %504 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #6
  br label %548

521:                                              ; preds = %476
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %543

523:                                              ; preds = %479, %477
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %542

525:                                              ; preds = %481
  %526 = landingpad { ptr, i32 }
          cleanup
  br label %541

527:                                              ; preds = %484, %482
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %540

529:                                              ; preds = %486
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %539

531:                                              ; preds = %489, %487
  %532 = landingpad { ptr, i32 }
          cleanup
  br label %538

533:                                              ; preds = %491
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %537

535:                                              ; preds = %499, %497, %495
  %536 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #6
  br label %537

537:                                              ; preds = %535, %533
  %.pn150 = phi { ptr, i32 } [ %536, %535 ], [ %534, %533 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #6
  br label %538

538:                                              ; preds = %537, %531
  %.pn150.pn = phi { ptr, i32 } [ %.pn150, %537 ], [ %532, %531 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %539

539:                                              ; preds = %538, %529
  %.pn150.pn.pn = phi { ptr, i32 } [ %.pn150.pn, %538 ], [ %530, %529 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  br label %540

540:                                              ; preds = %539, %527
  %.pn150.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn, %539 ], [ %528, %527 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #6
  br label %541

541:                                              ; preds = %540, %525
  %.pn150.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn, %540 ], [ %526, %525 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #6
  br label %542

542:                                              ; preds = %541, %523
  %.pn150.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn, %541 ], [ %524, %523 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %543

543:                                              ; preds = %542, %521
  %.pn150.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn.pn, %542 ], [ %522, %521 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %65) #6
  br label %548

544:                                              ; preds = %501, %464
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  %545 = add i64 %.0239, 2
  %546 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #6
  %547 = icmp ult i64 %545, %546
  br i1 %547, label %.lr.ph240, label %._crit_edge241, !llvm.loop !31

548:                                              ; preds = %543, %520, %502
  %.pn158 = phi { ptr, i32 } [ %503, %502 ], [ %.pn150.pn.pn.pn.pn.pn.pn, %543 ], [ %.pn.pn.pn.pn.pn, %520 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  br label %550

549:                                              ; preds = %._crit_edge241
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %31) #6
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #6
  ret void

550:                                              ; preds = %548, %435
  %.pn158.pn = phi { ptr, i32 } [ %.pn158, %548 ], [ %436, %435 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #6
  br label %551

551:                                              ; preds = %550, %433
  %.pn158.pn.pn = phi { ptr, i32 } [ %.pn158.pn, %550 ], [ %434, %433 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #6
  br label %552

552:                                              ; preds = %551, %431
  %.pn158.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn, %551 ], [ %432, %431 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #6
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #6
  br label %553

553:                                              ; preds = %552, %429
  %.pn158.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn.pn, %552 ], [ %430, %429 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #6
  br label %554

554:                                              ; preds = %553, %427
  %.pn158.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn.pn.pn, %553 ], [ %428, %427 ]
  call void @_ZN7lodepng5StateD1Ev(ptr noundef nonnull align 8 dereferenceable(508) %50) #6
  br label %555

555:                                              ; preds = %554, %425
  %.pn158.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn.pn.pn.pn, %554 ], [ %426, %425 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %50) #6
  br label %556

556:                                              ; preds = %555, %424, %285
  %.pn180.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn180.pn.pn.pn.pn.pn.pn, %424 ], [ %.pn158.pn.pn.pn.pn.pn.pn, %555 ], [ %286, %285 ]
  call void @llvm.lifetime.end.p0(i64 312, ptr nonnull %31) #6
  br label %557

557:                                              ; preds = %556, %284, %185
  %.pn217.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn217.pn.pn.pn.pn.pn, %185 ], [ %.pn199.pn.pn.pn.pn.pn, %284 ], [ %.pn180.pn.pn.pn.pn.pn.pn.pn, %556 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #6
  br label %558

558:                                              ; preds = %557, %74
  %.pn217.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn217.pn.pn.pn.pn.pn.pn, %557 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #6
  resume { ptr, i32 } %.pn217.pn.pn.pn.pn.pn.pn.pn
}

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

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

declare noundef i32 @_ZN7lodepng12convertToXYZEPfS0_PKhjjPK12LodePNGState(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

declare noundef i32 @_ZN7lodepng14convertFromXYZEPhPKfjjPK12LodePNGStateS2_j(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_Z17lodepng_info_initP11LodePNGInfo(ptr noundef) local_unnamed_addr #4

declare noundef i32 @_Z17lodepng_info_copyP11LodePNGInfoPKS_(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z6isNearIhhjEbT_T0_T1_(i8 noundef zeroext, i8 noundef zeroext, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z6isNearIjjjEbT_T0_T1_(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z4diffIjjET_S0_T0_(i32 noundef, i32 noundef) local_unnamed_addr #3

declare void @_Z20lodepng_info_cleanupP11LodePNGInfo(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}
!10 = distinct !{!10, !9}
!11 = !{!12, !15, i64 156}
!12 = !{!"_ZTS12LodePNGState", !13, i64 8, !17, i64 64, !20, i64 152, !23, i64 192, !15, i64 504}
!13 = !{!"_ZTS22LodePNGDecoderSettings", !14, i64 0, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52}
!14 = !{!"_ZTS25LodePNGDecompressSettings", !15, i64 0, !15, i64 4, !16, i64 8, !16, i64 16, !16, i64 24}
!15 = !{!"int", !6, i64 0}
!16 = !{!"any pointer", !6, i64 0}
!17 = !{!"_ZTS22LodePNGEncoderSettings", !18, i64 0, !15, i64 48, !15, i64 52, !19, i64 56, !16, i64 64, !15, i64 72, !15, i64 76, !15, i64 80}
!18 = !{!"_ZTS23LodePNGCompressSettings", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !16, i64 24, !16, i64 32, !16, i64 40}
!19 = !{!"_ZTS21LodePNGFilterStrategy", !6, i64 0}
!20 = !{!"_ZTS16LodePNGColorMode", !21, i64 0, !15, i64 4, !16, i64 8, !22, i64 16, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36}
!21 = !{!"_ZTS16LodePNGColorType", !6, i64 0}
!22 = !{!"long", !6, i64 0}
!23 = !{!"_ZTS11LodePNGInfo", !15, i64 0, !15, i64 4, !15, i64 8, !20, i64 16, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !22, i64 72, !16, i64 80, !16, i64 88, !22, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !15, i64 136, !24, i64 140, !15, i64 164, !15, i64 168, !15, i64 172, !15, i64 176, !15, i64 180, !15, i64 184, !15, i64 188, !15, i64 192, !15, i64 196, !15, i64 200, !15, i64 204, !15, i64 208, !15, i64 212, !15, i64 216, !15, i64 220, !15, i64 224, !15, i64 228, !15, i64 232, !16, i64 240, !16, i64 248, !15, i64 256, !6, i64 264, !6, i64 288}
!24 = !{!"_ZTS11LodePNGTime", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20}
!25 = distinct !{!25, !9}
!26 = !{!15, !15, i64 0}
!27 = !{!23, !15, i64 212}
!28 = !{!23, !15, i64 216}
!29 = !{!23, !15, i64 220}
!30 = distinct !{!30, !9}
!31 = distinct !{!31, !9}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass