; LLVM IR from ronan-kerviche/glip-lib :: GLIP-Lib/src/Modules (ImageBuffer)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.Glip::CoreGL::HdlTextureFormatDescriptor" = type { i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], i8, i8, i8 }
%"class.Glip::Modules::ImageBuffer" = type { %"class.Glip::CoreGL::HdlAbstractTextureFormat.base", ptr, ptr }
%"class.Glip::CoreGL::HdlAbstractTextureFormat.base" = type <{ ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }>

@.str.3 = external hidden unnamed_addr constant [94 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [64 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52)) #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52)) #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52)) #3

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

declare noundef i64 @_ZNK4Glip6CoreGL15HdlDynamicTable10getRowSizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52)) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip7Modules11ImageBuffer4blitERKS1_RKiS5_S5_S5_iibb(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6, i32 noundef %7, i1 noundef zeroext %8, i1 noundef zeroext %9) #2 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %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::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", 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::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca ptr, align 8
  %39 = alloca i32, align 4
  %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 i32, align 4
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca i32, align 4
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca i32, align 4
  %50 = alloca i1, align 1
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %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 %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %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 %"class.std::__cxx11::basic_string", align 8
  %70 = alloca i32, align 4
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca i32, align 4
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator", align 1
  %75 = alloca i32, align 4
  %76 = alloca i1, align 1
  %77 = alloca i8, align 1
  %78 = alloca i8, align 1
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i64, align 8
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i8, align 1
  %88 = alloca i32, align 4
  %89 = alloca [32 x i8], align 16
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca i32, align 4
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", align 4
  %104 = alloca %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i8, align 1
  %108 = alloca i32, align 4
  %109 = alloca [32 x i8], align 16
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca [4 x i32], align 16
  %113 = alloca [4 x i32], align 16
  %114 = alloca ptr, align 8
  %115 = alloca i32, align 4
  %116 = alloca ptr, align 8
  %117 = alloca ptr, align 8
  %118 = alloca i32, align 4
  %119 = alloca ptr, align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  %124 = zext i1 %8 to i8
  store i8 %124, ptr %19, align 1, !tbaa !11
  %125 = zext i1 %9 to i8
  store i8 %125, ptr %20, align 1, !tbaa !11
  %126 = load ptr, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %127 = load i32, ptr %17, align 4, !tbaa !9
  %128 = icmp sgt i32 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %10
  %130 = load i32, ptr %17, align 4, !tbaa !9
  br label %134

131:                                              ; preds = %10
  %132 = load ptr, ptr %12, align 8, !tbaa !5
  %133 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %132)
  br label %134

134:                                              ; preds = %131, %129
  %135 = phi i32 [ %130, %129 ], [ %133, %131 ]
  store i32 %135, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %136 = load i32, ptr %18, align 4, !tbaa !9
  %137 = icmp sgt i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = load i32, ptr %18, align 4, !tbaa !9
  br label %143

140:                                              ; preds = %134
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %141)
  br label %143

143:                                              ; preds = %140, %138
  %144 = phi i32 [ %139, %138 ], [ %142, %140 ]
  store i32 %144, ptr %22, align 4, !tbaa !9
  %145 = load ptr, ptr %12, align 8, !tbaa !5
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %145, ptr noundef nonnull align 4 dereferenceable(4) %146, ptr noundef nonnull align 4 dereferenceable(4) %147)
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  br i1 %148, label %149, label %163

149:                                              ; preds = %143
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = load i32, ptr %21, align 4, !tbaa !9
  %154 = add nsw i32 %152, %153
  %155 = sub nsw i32 %154, 1
  store i32 %155, ptr %23, align 4, !tbaa !9
  %156 = load ptr, ptr %14, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = load i32, ptr %22, align 4, !tbaa !9
  %159 = add nsw i32 %157, %158
  %160 = sub nsw i32 %159, 1
  store i32 %160, ptr %24, align 4, !tbaa !9
  %161 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %150, ptr noundef nonnull align 4 dereferenceable(4) %23, ptr noundef nonnull align 4 dereferenceable(4) %24)
  %162 = xor i1 %161, true
  br label %163

163:                                              ; preds = %149, %143
  %164 = phi i1 [ true, %143 ], [ %162, %149 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br i1 %164, label %165, label %297

165:                                              ; preds = %163
  store i1 true, ptr %50, align 1
  %166 = call ptr @__cxa_allocate_exception(i64 152) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 4 dereferenceable(4) %167)
          to label %168 unwind label %195

168:                                              ; preds = %165
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %169 unwind label %199

169:                                              ; preds = %168
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.10)
          to label %170 unwind label %203

170:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #8
  %171 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 4 dereferenceable(4) %171)
          to label %172 unwind label %207

172:                                              ; preds = %170
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %173 unwind label %211

173:                                              ; preds = %172
  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.11)
          to label %174 unwind label %215

174:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %175 unwind label %219

175:                                              ; preds = %174
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %176 unwind label %223

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 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.12)
          to label %177 unwind label %227

177:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %42, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %178 unwind label %231

178:                                              ; preds = %177
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %179 unwind label %235

179:                                              ; preds = %178
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.13)
          to label %180 unwind label %239

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %181 = load ptr, ptr %12, align 8, !tbaa !5
  %182 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %181)
          to label %183 unwind label %243

183:                                              ; preds = %180
  store i32 %182, ptr %44, align 4, !tbaa !9
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %184 unwind label %243

184:                                              ; preds = %183
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %185 unwind label %247

185:                                              ; preds = %184
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef @.str.12)
          to label %186 unwind label %251

186:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %187 = load ptr, ptr %12, align 8, !tbaa !5
  %188 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %187)
          to label %189 unwind label %255

189:                                              ; preds = %186
  store i32 %188, ptr %46, align 4, !tbaa !9
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %190 unwind label %255

190:                                              ; preds = %189
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %191 unwind label %259

191:                                              ; preds = %190
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.5)
          to label %192 unwind label %263

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %193 unwind label %267

193:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  store i32 2, ptr %49, align 4, !tbaa !13
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %166, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %47, i32 noundef 457, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %194 unwind label %271

194:                                              ; preds = %193
  store i1 false, ptr %50, align 1
  invoke void @__cxa_throw(ptr %166, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #9
          to label %887 unwind label %271

195:                                              ; preds = %165
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %38, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %39, align 4
  br label %293

199:                                              ; preds = %168
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %38, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %39, align 4
  br label %292

203:                                              ; preds = %169
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %38, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %39, align 4
  br label %291

207:                                              ; preds = %170
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %38, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %39, align 4
  br label %290

211:                                              ; preds = %172
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %38, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %39, align 4
  br label %289

215:                                              ; preds = %173
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %38, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %39, align 4
  br label %288

219:                                              ; preds = %174
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %38, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %39, align 4
  br label %287

223:                                              ; preds = %175
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %38, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %39, align 4
  br label %286

227:                                              ; preds = %176
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %38, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %39, align 4
  br label %285

231:                                              ; preds = %177
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %38, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %39, align 4
  br label %284

235:                                              ; preds = %178
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %38, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %39, align 4
  br label %283

239:                                              ; preds = %179
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %38, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %39, align 4
  br label %282

243:                                              ; preds = %183, %180
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %38, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %39, align 4
  br label %281

247:                                              ; preds = %184
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %38, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %39, align 4
  br label %280

251:                                              ; preds = %185
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %38, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %39, align 4
  br label %279

255:                                              ; preds = %189, %186
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %38, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %39, align 4
  br label %278

259:                                              ; preds = %190
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %38, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %39, align 4
  br label %277

263:                                              ; preds = %191
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %38, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %39, align 4
  br label %276

267:                                              ; preds = %192
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %38, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %39, align 4
  br label %275

271:                                              ; preds = %194, %193
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %38, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %275

275:                                              ; preds = %271, %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %276

276:                                              ; preds = %275, %263
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %277

277:                                              ; preds = %276, %259
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %278

278:                                              ; preds = %277, %255
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  br label %279

279:                                              ; preds = %278, %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %280

280:                                              ; preds = %279, %247
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %281

281:                                              ; preds = %280, %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %282

282:                                              ; preds = %281, %239
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %283

283:                                              ; preds = %282, %235
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %284

284:                                              ; preds = %283, %231
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %285

285:                                              ; preds = %284, %227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %286

286:                                              ; preds = %285, %223
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %287

287:                                              ; preds = %286, %219
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %288

288:                                              ; preds = %287, %215
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %289

289:                                              ; preds = %288, %211
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %290

290:                                              ; preds = %289, %207
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %291

291:                                              ; preds = %290, %203
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %292

292:                                              ; preds = %291, %199
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %293

293:                                              ; preds = %292, %195
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  %294 = load i1, ptr %50, align 1
  br i1 %294, label %295, label %296

295:                                              ; preds = %293
  call void @__cxa_free_exception(ptr %166) #8
  br label %296

296:                                              ; preds = %295, %293
  br label %881

297:                                              ; preds = %163
  %298 = load ptr, ptr %15, align 8, !tbaa !5
  %299 = load ptr, ptr %16, align 8, !tbaa !5
  %300 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %126, ptr noundef nonnull align 4 dereferenceable(4) %298, ptr noundef nonnull align 4 dereferenceable(4) %299)
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  br i1 %300, label %301, label %314

301:                                              ; preds = %297
  %302 = load ptr, ptr %15, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load i32, ptr %21, align 4, !tbaa !9
  %305 = add nsw i32 %303, %304
  %306 = sub nsw i32 %305, 1
  store i32 %306, ptr %51, align 4, !tbaa !9
  %307 = load ptr, ptr %16, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = load i32, ptr %22, align 4, !tbaa !9
  %310 = add nsw i32 %308, %309
  %311 = sub nsw i32 %310, 1
  store i32 %311, ptr %52, align 4, !tbaa !9
  %312 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %126, ptr noundef nonnull align 4 dereferenceable(4) %51, ptr noundef nonnull align 4 dereferenceable(4) %52)
  %313 = xor i1 %312, true
  br label %314

314:                                              ; preds = %301, %297
  %315 = phi i1 [ true, %297 ], [ %313, %301 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br i1 %315, label %316, label %446

316:                                              ; preds = %314
  store i1 true, ptr %76, align 1
  %317 = call ptr @__cxa_allocate_exception(i64 152) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #8
  %318 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %65, ptr noundef nonnull align 4 dereferenceable(4) %318)
          to label %319 unwind label %344

319:                                              ; preds = %316
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %65)
          to label %320 unwind label %348

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

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #8
  %322 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 4 dereferenceable(4) %322)
          to label %323 unwind label %356

323:                                              ; preds = %321
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %324 unwind label %360

324:                                              ; preds = %323
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.11)
          to label %325 unwind label %364

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %326 unwind label %368

326:                                              ; preds = %325
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %327 unwind label %372

327:                                              ; preds = %326
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.12)
          to label %328 unwind label %376

328:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %329 unwind label %380

329:                                              ; preds = %328
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %330 unwind label %384

330:                                              ; preds = %329
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.13)
          to label %331 unwind label %388

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #8
  %332 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
          to label %333 unwind label %392

333:                                              ; preds = %331
  store i32 %332, ptr %70, align 4, !tbaa !9
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 4 dereferenceable(4) %70)
          to label %334 unwind label %392

334:                                              ; preds = %333
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(32) %69)
          to label %335 unwind label %396

335:                                              ; preds = %334
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.12)
          to label %336 unwind label %400

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  %337 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
          to label %338 unwind label %404

338:                                              ; preds = %336
  store i32 %337, ptr %72, align 4, !tbaa !9
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 4 dereferenceable(4) %72)
          to label %339 unwind label %404

339:                                              ; preds = %338
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %340 unwind label %408

340:                                              ; preds = %339
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef @.str.5)
          to label %341 unwind label %412

341:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %342 unwind label %416

342:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  store i32 2, ptr %75, align 4, !tbaa !13
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %317, ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef %73, i32 noundef 459, ptr noundef nonnull align 4 dereferenceable(4) %75)
          to label %343 unwind label %420

343:                                              ; preds = %342
  store i1 false, ptr %76, align 1
  invoke void @__cxa_throw(ptr %317, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #9
          to label %887 unwind label %420

344:                                              ; preds = %316
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %38, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %39, align 4
  br label %442

348:                                              ; preds = %319
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %38, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %39, align 4
  br label %441

352:                                              ; preds = %320
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %38, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %39, align 4
  br label %440

356:                                              ; preds = %321
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %38, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %39, align 4
  br label %439

360:                                              ; preds = %323
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %38, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %39, align 4
  br label %438

364:                                              ; preds = %324
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %38, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %39, align 4
  br label %437

368:                                              ; preds = %325
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %38, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %39, align 4
  br label %436

372:                                              ; preds = %326
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %38, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %39, align 4
  br label %435

376:                                              ; preds = %327
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %38, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %39, align 4
  br label %434

380:                                              ; preds = %328
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %38, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %39, align 4
  br label %433

384:                                              ; preds = %329
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %38, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %39, align 4
  br label %432

388:                                              ; preds = %330
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %38, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %39, align 4
  br label %431

392:                                              ; preds = %333, %331
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %38, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %39, align 4
  br label %430

396:                                              ; preds = %334
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %38, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %39, align 4
  br label %429

400:                                              ; preds = %335
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %38, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %39, align 4
  br label %428

404:                                              ; preds = %338, %336
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %38, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %39, align 4
  br label %427

408:                                              ; preds = %339
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %38, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %39, align 4
  br label %426

412:                                              ; preds = %340
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %38, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %39, align 4
  br label %425

416:                                              ; preds = %341
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %38, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %39, align 4
  br label %424

420:                                              ; preds = %343, %342
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %38, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #8
  br label %424

424:                                              ; preds = %420, %416
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %425

425:                                              ; preds = %424, %412
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %426

426:                                              ; preds = %425, %408
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  br label %427

427:                                              ; preds = %426, %404
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %428

428:                                              ; preds = %427, %400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %429

429:                                              ; preds = %428, %396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  br label %430

430:                                              ; preds = %429, %392
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %431

431:                                              ; preds = %430, %388
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %432

432:                                              ; preds = %431, %384
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  br label %433

433:                                              ; preds = %432, %380
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  br label %434

434:                                              ; preds = %433, %376
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %435

435:                                              ; preds = %434, %372
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %436

436:                                              ; preds = %435, %368
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %437

437:                                              ; preds = %436, %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %438

438:                                              ; preds = %437, %360
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %439

439:                                              ; preds = %438, %356
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #8
  br label %440

440:                                              ; preds = %439, %352
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  br label %441

441:                                              ; preds = %440, %348
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %442

442:                                              ; preds = %441, %344
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  %443 = load i1, ptr %76, align 1
  br i1 %443, label %444, label %445

444:                                              ; preds = %442
  call void @__cxa_free_exception(ptr %317) #8
  br label %445

445:                                              ; preds = %444, %442
  br label %881

446:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #8
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  %448 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %447)
  %449 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  %450 = icmp eq i32 %448, %449
  %451 = zext i1 %450 to i8
  store i8 %451, ptr %77, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #8
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %452)
  %454 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  %455 = icmp eq i32 %453, %454
  %456 = zext i1 %455 to i8
  store i8 %456, ptr %78, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #8
  %457 = load i8, ptr %20, align 1, !tbaa !11, !range !15, !noundef !16
  %458 = trunc i8 %457 to i1
  br i1 %458, label %459, label %462

459:                                              ; preds = %446
  %460 = load i32, ptr %22, align 4, !tbaa !9
  %461 = sub nsw i32 %460, 1
  br label %463

462:                                              ; preds = %446
  br label %463

463:                                              ; preds = %462, %459
  %464 = phi i32 [ %461, %459 ], [ 0, %462 ]
  store i32 %464, ptr %79, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #8
  %465 = load i8, ptr %20, align 1, !tbaa !11, !range !15, !noundef !16
  %466 = trunc i8 %465 to i1
  %467 = zext i1 %466 to i64
  %468 = select i1 %466, i32 -1, i32 1
  store i32 %468, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #8
  %469 = load i8, ptr %19, align 1, !tbaa !11, !range !15, !noundef !16
  %470 = trunc i8 %469 to i1
  br i1 %470, label %471, label %474

471:                                              ; preds = %463
  %472 = load i32, ptr %21, align 4, !tbaa !9
  %473 = sub nsw i32 %472, 1
  br label %475

474:                                              ; preds = %463
  br label %475

475:                                              ; preds = %474, %471
  %476 = phi i32 [ %473, %471 ], [ 0, %474 ]
  store i32 %476, ptr %81, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #8
  %477 = load i8, ptr %19, align 1, !tbaa !11, !range !15, !noundef !16
  %478 = trunc i8 %477 to i1
  %479 = zext i1 %478 to i64
  %480 = select i1 %478, i32 -1, i32 1
  store i32 %480, ptr %82, align 4, !tbaa !9
  %481 = load i8, ptr %77, align 1, !tbaa !11, !range !15, !noundef !16
  %482 = trunc i8 %481 to i1
  br i1 %482, label %483, label %529

483:                                              ; preds = %475
  %484 = load i8, ptr %78, align 1, !tbaa !11, !range !15, !noundef !16
  %485 = trunc i8 %484 to i1
  br i1 %485, label %486, label %529

486:                                              ; preds = %483
  %487 = load i8, ptr %19, align 1, !tbaa !11, !range !15, !noundef !16
  %488 = trunc i8 %487 to i1
  br i1 %488, label %529, label %489

489:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %490 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %491 = load ptr, ptr %490, align 8, !tbaa !17
  %492 = call noundef i64 @_ZNK4Glip6CoreGL15HdlDynamicTable10getRowSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %491)
  store i64 %492, ptr %83, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #8
  store i32 0, ptr %84, align 4, !tbaa !9
  br label %493

493:                                              ; preds = %525, %489
  %494 = load i32, ptr %84, align 4, !tbaa !9
  %495 = load i32, ptr %22, align 4, !tbaa !9
  %496 = icmp slt i32 %494, %495
  br i1 %496, label %498, label %497

497:                                              ; preds = %493
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #8
  br label %528

498:                                              ; preds = %493
  %499 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %500 = load ptr, ptr %499, align 8, !tbaa !17
  %501 = load ptr, ptr %16, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  %503 = load i32, ptr %84, align 4, !tbaa !9
  %504 = add nsw i32 %502, %503
  %505 = load ptr, ptr %500, align 8, !tbaa !22
  %506 = getelementptr inbounds ptr, ptr %505, i64 33
  %507 = load ptr, ptr %506, align 8
  %508 = call noundef ptr %507(ptr noundef nonnull align 8 dereferenceable(32) %500, i32 noundef %504)
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  %510 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %509, i32 0, i32 2
  %511 = load ptr, ptr %510, align 8, !tbaa !17
  %512 = load ptr, ptr %14, align 8, !tbaa !5
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = load i32, ptr %79, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = load i32, ptr %80, align 4, !tbaa !9
  %517 = load i32, ptr %84, align 4, !tbaa !9
  %518 = mul nsw i32 %516, %517
  %519 = add nsw i32 %515, %518
  %520 = load ptr, ptr %511, align 8, !tbaa !22
  %521 = getelementptr inbounds ptr, ptr %520, i64 33
  %522 = load ptr, ptr %521, align 8
  %523 = call noundef ptr %522(ptr noundef nonnull align 8 dereferenceable(32) %511, i32 noundef %519)
  %524 = load i64, ptr %83, align 8, !tbaa !20
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %508, ptr align 1 %523, i64 %524, i1 false)
  br label %525

525:                                              ; preds = %498
  %526 = load i32, ptr %84, align 4, !tbaa !9
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %84, align 4, !tbaa !9
  br label %493, !llvm.loop !24

528:                                              ; preds = %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %880

529:                                              ; preds = %486, %483, %475
  %530 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %531 = load ptr, ptr %530, align 8, !tbaa !17
  %532 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %531)
  br i1 %532, label %653, label %533

533:                                              ; preds = %529
  %534 = load ptr, ptr %12, align 8, !tbaa !5
  %535 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %534, i32 0, i32 2
  %536 = load ptr, ptr %535, align 8, !tbaa !17
  %537 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %536)
  br i1 %537, label %538, label %653

538:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #8
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %539, i32 0, i32 1
  %541 = load ptr, ptr %540, align 8, !tbaa !26
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %542)
  %544 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %541, i32 noundef %543)
  store i32 %544, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #8
  %545 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 1
  %546 = load ptr, ptr %545, align 8, !tbaa !26
  %547 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  %548 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %546, i32 noundef %547)
  store i32 %548, ptr %86, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  store i8 0, ptr %87, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #8
  store i32 32, ptr %88, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  %549 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 1
  %550 = load ptr, ptr %549, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #8
  %551 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  store i32 %551, ptr %91, align 4, !tbaa !9
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %552, i32 0, i32 1
  %554 = load ptr, ptr %553, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #8
  %555 = load ptr, ptr %12, align 8, !tbaa !5
  %556 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %555)
  store i32 %556, ptr %92, align 4, !tbaa !9
  %557 = getelementptr inbounds [32 x i8], ptr %89, i64 0, i64 0
  %558 = call noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72) %550, ptr noundef nonnull align 4 dereferenceable(4) %91, ptr noundef nonnull align 4 dereferenceable(72) %554, ptr noundef nonnull align 4 dereferenceable(4) %92, ptr noundef %557, i32 noundef 32, ptr noundef %87)
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  store i32 %558, ptr %90, align 4, !tbaa !9
  %559 = load i8, ptr %87, align 1, !tbaa !11, !range !15, !noundef !16
  %560 = trunc i8 %559 to i1
  br i1 %560, label %561, label %586

561:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #8
  store i32 0, ptr %93, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %582, %561
  %563 = load i32, ptr %93, align 4, !tbaa !9
  %564 = load i32, ptr %22, align 4, !tbaa !9
  %565 = icmp slt i32 %563, %564
  br i1 %565, label %567, label %566

566:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #8
  br label %585

567:                                              ; preds = %562
  %568 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %569 = load ptr, ptr %568, align 8, !tbaa !17
  %570 = load ptr, ptr %16, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = load i32, ptr %93, align 4, !tbaa !9
  %573 = add nsw i32 %571, %572
  %574 = load ptr, ptr %569, align 8, !tbaa !22
  %575 = getelementptr inbounds ptr, ptr %574, i64 33
  %576 = load ptr, ptr %575, align 8
  %577 = call noundef ptr %576(ptr noundef nonnull align 8 dereferenceable(32) %569, i32 noundef %573)
  %578 = load i32, ptr %21, align 4, !tbaa !9
  %579 = load i32, ptr %86, align 4, !tbaa !9
  %580 = mul nsw i32 %578, %579
  %581 = sext i32 %580 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %577, i8 0, i64 %581, i1 false)
  br label %582

582:                                              ; preds = %567
  %583 = load i32, ptr %93, align 4, !tbaa !9
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr %93, align 4, !tbaa !9
  br label %562, !llvm.loop !27

585:                                              ; preds = %566
  br label %652

586:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #8
  store i32 0, ptr %94, align 4, !tbaa !9
  br label %587

587:                                              ; preds = %648, %586
  %588 = load i32, ptr %94, align 4, !tbaa !9
  %589 = load i32, ptr %22, align 4, !tbaa !9
  %590 = icmp slt i32 %588, %589
  br i1 %590, label %592, label %591

591:                                              ; preds = %587
  store i32 8, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #8
  br label %651

592:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %593 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %594 = load ptr, ptr %593, align 8, !tbaa !17
  %595 = load ptr, ptr %16, align 8, !tbaa !5
  %596 = load i32, ptr %595, align 4, !tbaa !9
  %597 = load i32, ptr %94, align 4, !tbaa !9
  %598 = add nsw i32 %596, %597
  %599 = load ptr, ptr %594, align 8, !tbaa !22
  %600 = getelementptr inbounds ptr, ptr %599, i64 33
  %601 = load ptr, ptr %600, align 8
  %602 = call noundef ptr %601(ptr noundef nonnull align 8 dereferenceable(32) %594, i32 noundef %598)
  store ptr %602, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %603 = load ptr, ptr %12, align 8, !tbaa !5
  %604 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %603, i32 0, i32 2
  %605 = load ptr, ptr %604, align 8, !tbaa !17
  %606 = load ptr, ptr %14, align 8, !tbaa !5
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = load i32, ptr %79, align 4, !tbaa !9
  %609 = add nsw i32 %607, %608
  %610 = load i32, ptr %80, align 4, !tbaa !9
  %611 = load i32, ptr %94, align 4, !tbaa !9
  %612 = mul nsw i32 %610, %611
  %613 = add nsw i32 %609, %612
  %614 = load ptr, ptr %605, align 8, !tbaa !22
  %615 = getelementptr inbounds ptr, ptr %614, i64 33
  %616 = load ptr, ptr %615, align 8
  %617 = call noundef ptr %616(ptr noundef nonnull align 8 dereferenceable(32) %605, i32 noundef %613)
  store ptr %617, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #8
  store i32 0, ptr %98, align 4, !tbaa !9
  br label %618

618:                                              ; preds = %644, %592
  %619 = load i32, ptr %98, align 4, !tbaa !9
  %620 = load i32, ptr %21, align 4, !tbaa !9
  %621 = icmp slt i32 %619, %620
  br i1 %621, label %623, label %622

622:                                              ; preds = %618
  store i32 11, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #8
  br label %647

623:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %624 = load ptr, ptr %96, align 8, !tbaa !5
  %625 = load i32, ptr %98, align 4, !tbaa !9
  %626 = load i32, ptr %86, align 4, !tbaa !9
  %627 = mul nsw i32 %625, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i8, ptr %624, i64 %628
  store ptr %629, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %630 = load ptr, ptr %97, align 8, !tbaa !5
  %631 = load i32, ptr %81, align 4, !tbaa !9
  %632 = load i32, ptr %82, align 4, !tbaa !9
  %633 = load i32, ptr %98, align 4, !tbaa !9
  %634 = mul nsw i32 %632, %633
  %635 = add nsw i32 %631, %634
  %636 = load i32, ptr %85, align 4, !tbaa !9
  %637 = mul nsw i32 %635, %636
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds i8, ptr %630, i64 %638
  store ptr %639, ptr %100, align 8, !tbaa !5
  %640 = load ptr, ptr %99, align 8, !tbaa !5
  %641 = load ptr, ptr %100, align 8, !tbaa !5
  %642 = getelementptr inbounds [32 x i8], ptr %89, i64 0, i64 0
  %643 = load i32, ptr %90, align 4, !tbaa !9
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef %640, ptr noundef %641, ptr noundef %642, i32 noundef %643)
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %644

644:                                              ; preds = %623
  %645 = load i32, ptr %98, align 4, !tbaa !9
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %98, align 4, !tbaa !9
  br label %618, !llvm.loop !28

647:                                              ; preds = %622
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %648

648:                                              ; preds = %647
  %649 = load i32, ptr %94, align 4, !tbaa !9
  %650 = add nsw i32 %649, 1
  store i32 %650, ptr %94, align 4, !tbaa !9
  br label %587, !llvm.loop !29

651:                                              ; preds = %591
  br label %652

652:                                              ; preds = %651, %585
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #8
  br label %879

653:                                              ; preds = %533, %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #8
  %654 = load ptr, ptr %12, align 8, !tbaa !5
  %655 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %654, i32 0, i32 1
  %656 = load ptr, ptr %655, align 8, !tbaa !26
  %657 = load ptr, ptr %12, align 8, !tbaa !5
  %658 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %657)
  %659 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %656, i32 noundef %658)
  store i32 %659, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #8
  %660 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 1
  %661 = load ptr, ptr %660, align 8, !tbaa !26
  %662 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  %663 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %661, i32 noundef %662)
  store i32 %663, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 72, ptr %103) #8
  %664 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %665 = load ptr, ptr %664, align 8, !tbaa !17
  %666 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %665)
  br i1 %666, label %667, label %672

667:                                              ; preds = %653
  %668 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 1
  %669 = load ptr, ptr %668, align 8, !tbaa !26
  %670 = getelementptr inbounds %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", ptr %669, i32 0, i32 1
  %671 = call noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4) %670)
  br label %675

672:                                              ; preds = %653
  %673 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 1
  %674 = load ptr, ptr %673, align 8, !tbaa !26
  br label %675

675:                                              ; preds = %672, %667
  %676 = phi ptr [ %671, %667 ], [ %674, %672 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %103, ptr align 4 %676, i64 72, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.start.p0(i64 72, ptr %104) #8
  %677 = load ptr, ptr %12, align 8, !tbaa !5
  %678 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %677, i32 0, i32 2
  %679 = load ptr, ptr %678, align 8, !tbaa !17
  %680 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %679)
  br i1 %680, label %681, label %687

681:                                              ; preds = %675
  %682 = load ptr, ptr %12, align 8, !tbaa !5
  %683 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %682, i32 0, i32 1
  %684 = load ptr, ptr %683, align 8, !tbaa !26
  %685 = getelementptr inbounds %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", ptr %684, i32 0, i32 1
  %686 = call noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4) %685)
  br label %691

687:                                              ; preds = %675
  %688 = load ptr, ptr %12, align 8, !tbaa !5
  %689 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %688, i32 0, i32 1
  %690 = load ptr, ptr %689, align 8, !tbaa !26
  br label %691

691:                                              ; preds = %687, %681
  %692 = phi ptr [ %686, %681 ], [ %690, %687 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 4 %692, i64 72, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %693 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %694 = load ptr, ptr %693, align 8, !tbaa !17
  %695 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %694)
  br i1 %695, label %696, label %697

696:                                              ; preds = %691
  br label %699

697:                                              ; preds = %691
  %698 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %126)
  br label %699

699:                                              ; preds = %697, %696
  %700 = phi i32 [ 5125, %696 ], [ %698, %697 ]
  store i32 %700, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #8
  %701 = load ptr, ptr %12, align 8, !tbaa !5
  %702 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %701, i32 0, i32 2
  %703 = load ptr, ptr %702, align 8, !tbaa !17
  %704 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %703)
  br i1 %704, label %705, label %706

705:                                              ; preds = %699
  br label %709

706:                                              ; preds = %699
  %707 = load ptr, ptr %12, align 8, !tbaa !5
  %708 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %707)
  br label %709

709:                                              ; preds = %706, %705
  %710 = phi i32 [ 5125, %705 ], [ %708, %706 ]
  store i32 %710, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #8
  store i8 0, ptr %107, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #8
  store i32 32, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %109) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #8
  %711 = getelementptr inbounds [32 x i8], ptr %109, i64 0, i64 0
  %712 = call noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72) %103, ptr noundef nonnull align 4 dereferenceable(4) %105, ptr noundef nonnull align 4 dereferenceable(72) %104, ptr noundef nonnull align 4 dereferenceable(4) %106, ptr noundef %711, i32 noundef 32, ptr noundef %107)
  store i32 %712, ptr %110, align 4, !tbaa !9
  %713 = load i8, ptr %107, align 1, !tbaa !11, !range !15, !noundef !16
  %714 = trunc i8 %713 to i1
  br i1 %714, label %715, label %740

715:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #8
  store i32 0, ptr %111, align 4, !tbaa !9
  br label %716

716:                                              ; preds = %736, %715
  %717 = load i32, ptr %111, align 4, !tbaa !9
  %718 = load i32, ptr %22, align 4, !tbaa !9
  %719 = icmp slt i32 %717, %718
  br i1 %719, label %721, label %720

720:                                              ; preds = %716
  store i32 14, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #8
  br label %739

721:                                              ; preds = %716
  %722 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %723 = load ptr, ptr %722, align 8, !tbaa !17
  %724 = load ptr, ptr %16, align 8, !tbaa !5
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = load i32, ptr %111, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  %728 = load ptr, ptr %723, align 8, !tbaa !22
  %729 = getelementptr inbounds ptr, ptr %728, i64 33
  %730 = load ptr, ptr %729, align 8
  %731 = call noundef ptr %730(ptr noundef nonnull align 8 dereferenceable(32) %723, i32 noundef %727)
  %732 = load i32, ptr %21, align 4, !tbaa !9
  %733 = load i32, ptr %102, align 4, !tbaa !9
  %734 = mul nsw i32 %732, %733
  %735 = sext i32 %734 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %731, i8 0, i64 %735, i1 false)
  br label %736

736:                                              ; preds = %721
  %737 = load i32, ptr %111, align 4, !tbaa !9
  %738 = add nsw i32 %737, 1
  store i32 %738, ptr %111, align 4, !tbaa !9
  br label %716, !llvm.loop !32

739:                                              ; preds = %720
  br label %878

740:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  store ptr null, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #8
  store i32 0, ptr %115, align 4, !tbaa !9
  br label %741

741:                                              ; preds = %874, %740
  %742 = load i32, ptr %115, align 4, !tbaa !9
  %743 = load i32, ptr %22, align 4, !tbaa !9
  %744 = icmp slt i32 %742, %743
  br i1 %744, label %746, label %745

745:                                              ; preds = %741
  store i32 17, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #8
  br label %877

746:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %747 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %748 = load ptr, ptr %747, align 8, !tbaa !17
  %749 = load ptr, ptr %16, align 8, !tbaa !5
  %750 = load i32, ptr %749, align 4, !tbaa !9
  %751 = load i32, ptr %115, align 4, !tbaa !9
  %752 = add nsw i32 %750, %751
  %753 = load ptr, ptr %748, align 8, !tbaa !22
  %754 = getelementptr inbounds ptr, ptr %753, i64 33
  %755 = load ptr, ptr %754, align 8
  %756 = call noundef ptr %755(ptr noundef nonnull align 8 dereferenceable(32) %748, i32 noundef %752)
  store ptr %756, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %757 = load ptr, ptr %12, align 8, !tbaa !5
  %758 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %757, i32 0, i32 2
  %759 = load ptr, ptr %758, align 8, !tbaa !17
  %760 = load ptr, ptr %14, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = load i32, ptr %79, align 4, !tbaa !9
  %763 = add nsw i32 %761, %762
  %764 = load i32, ptr %80, align 4, !tbaa !9
  %765 = load i32, ptr %115, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %763, %766
  %768 = load ptr, ptr %759, align 8, !tbaa !22
  %769 = getelementptr inbounds ptr, ptr %768, i64 33
  %770 = load ptr, ptr %769, align 8
  %771 = call noundef ptr %770(ptr noundef nonnull align 8 dereferenceable(32) %759, i32 noundef %767)
  store ptr %771, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #8
  store i32 0, ptr %118, align 4, !tbaa !9
  br label %772

772:                                              ; preds = %870, %746
  %773 = load i32, ptr %118, align 4, !tbaa !9
  %774 = load i32, ptr %21, align 4, !tbaa !9
  %775 = icmp slt i32 %773, %774
  br i1 %775, label %777, label %776

776:                                              ; preds = %772
  store i32 20, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #8
  br label %873

777:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %778 = load ptr, ptr %116, align 8, !tbaa !5
  %779 = load i32, ptr %118, align 4, !tbaa !9
  %780 = load i32, ptr %102, align 4, !tbaa !9
  %781 = mul nsw i32 %779, %780
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i8, ptr %778, i64 %782
  store ptr %783, ptr %119, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %784 = load ptr, ptr %117, align 8, !tbaa !5
  %785 = load i32, ptr %81, align 4, !tbaa !9
  %786 = load i32, ptr %82, align 4, !tbaa !9
  %787 = load i32, ptr %118, align 4, !tbaa !9
  %788 = mul nsw i32 %786, %787
  %789 = add nsw i32 %785, %788
  %790 = load i32, ptr %101, align 4, !tbaa !9
  %791 = mul nsw i32 %789, %790
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i8, ptr %784, i64 %792
  store ptr %793, ptr %120, align 8, !tbaa !5
  %794 = load ptr, ptr %12, align 8, !tbaa !5
  %795 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %794, i32 0, i32 2
  %796 = load ptr, ptr %795, align 8, !tbaa !17
  %797 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %796)
  br i1 %797, label %798, label %827

798:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  %799 = load ptr, ptr %120, align 8, !tbaa !5
  store ptr %799, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #8
  store i32 0, ptr %122, align 4, !tbaa !9
  br label %800

800:                                              ; preds = %822, %798
  %801 = load i32, ptr %122, align 4, !tbaa !9
  %802 = load ptr, ptr %12, align 8, !tbaa !5
  %803 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %802, i32 0, i32 1
  %804 = load ptr, ptr %803, align 8, !tbaa !26
  %805 = getelementptr inbounds %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", ptr %804, i32 0, i32 4
  %806 = load i32, ptr %805, align 4, !tbaa !33
  %807 = icmp slt i32 %801, %806
  br i1 %807, label %809, label %808

808:                                              ; preds = %800
  store i32 23, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #8
  br label %825

809:                                              ; preds = %800
  %810 = load ptr, ptr %121, align 8, !tbaa !5
  %811 = load i32, ptr %122, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds float, ptr %810, i64 %812
  %814 = load float, ptr %813, align 4, !tbaa !35
  %815 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #8
  %816 = uitofp i32 %815 to float
  %817 = fmul float %814, %816
  %818 = fptoui float %817 to i32
  %819 = load i32, ptr %122, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds [4 x i32], ptr %112, i64 0, i64 %820
  store i32 %818, ptr %821, align 4, !tbaa !9
  br label %822

822:                                              ; preds = %809
  %823 = load i32, ptr %122, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %122, align 4, !tbaa !9
  br label %800, !llvm.loop !37

825:                                              ; preds = %808
  %826 = getelementptr inbounds [4 x i32], ptr %112, i64 0, i64 0
  store ptr %826, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %829

827:                                              ; preds = %777
  %828 = load ptr, ptr %120, align 8, !tbaa !5
  store ptr %828, ptr %114, align 8, !tbaa !5
  br label %829

829:                                              ; preds = %827, %825
  %830 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %126, i32 0, i32 2
  %831 = load ptr, ptr %830, align 8, !tbaa !17
  %832 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %831)
  br i1 %832, label %838, label %833

833:                                              ; preds = %829
  %834 = load ptr, ptr %119, align 8, !tbaa !5
  %835 = load ptr, ptr %114, align 8, !tbaa !5
  %836 = getelementptr inbounds [32 x i8], ptr %109, i64 0, i64 0
  %837 = load i32, ptr %110, align 4, !tbaa !9
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef %834, ptr noundef %835, ptr noundef %836, i32 noundef %837)
  br label %869

838:                                              ; preds = %829
  %839 = getelementptr inbounds [4 x i32], ptr %113, i64 0, i64 0
  %840 = load ptr, ptr %114, align 8, !tbaa !5
  %841 = getelementptr inbounds [32 x i8], ptr %109, i64 0, i64 0
  %842 = load i32, ptr %110, align 4, !tbaa !9
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef %839, ptr noundef %840, ptr noundef %841, i32 noundef %842)
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #8
  store i32 0, ptr %123, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %865, %838
  %844 = load i32, ptr %123, align 4, !tbaa !9
  %845 = load ptr, ptr %12, align 8, !tbaa !5
  %846 = getelementptr inbounds %"class.Glip::Modules::ImageBuffer", ptr %845, i32 0, i32 1
  %847 = load ptr, ptr %846, align 8, !tbaa !26
  %848 = getelementptr inbounds %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", ptr %847, i32 0, i32 4
  %849 = load i32, ptr %848, align 4, !tbaa !33
  %850 = icmp slt i32 %844, %849
  br i1 %850, label %852, label %851

851:                                              ; preds = %843
  store i32 26, ptr %95, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #8
  br label %868

852:                                              ; preds = %843
  %853 = load i32, ptr %123, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds [4 x i32], ptr %113, i64 0, i64 %854
  %856 = load i32, ptr %855, align 4, !tbaa !9
  %857 = uitofp i32 %856 to float
  %858 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #8
  %859 = uitofp i32 %858 to float
  %860 = fdiv float %857, %859
  %861 = load ptr, ptr %119, align 8, !tbaa !5
  %862 = load i32, ptr %123, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds float, ptr %861, i64 %863
  store float %860, ptr %864, align 4, !tbaa !35
  br label %865

865:                                              ; preds = %852
  %866 = load i32, ptr %123, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %123, align 4, !tbaa !9
  br label %843, !llvm.loop !38

868:                                              ; preds = %851
  br label %869

869:                                              ; preds = %868, %833
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br label %870

870:                                              ; preds = %869
  %871 = load i32, ptr %118, align 4, !tbaa !9
  %872 = add nsw i32 %871, 1
  store i32 %872, ptr %118, align 4, !tbaa !9
  br label %772, !llvm.loop !39

873:                                              ; preds = %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  br label %874

874:                                              ; preds = %873
  %875 = load i32, ptr %115, align 4, !tbaa !9
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %115, align 4, !tbaa !9
  br label %741, !llvm.loop !40

877:                                              ; preds = %745
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #8
  br label %878

878:                                              ; preds = %877, %739
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  br label %879

879:                                              ; preds = %878, %652
  br label %880

880:                                              ; preds = %879, %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  ret void

881:                                              ; preds = %445, %296
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %882

882:                                              ; preds = %881
  %883 = load ptr, ptr %38, align 8
  %884 = load i32, ptr %39, align 4
  %885 = insertvalue { ptr, i32 } poison, ptr %883, 0
  %886 = insertvalue { ptr, i32 } %885, i32 %884, 1
  resume { ptr, i32 } %886

887:                                              ; preds = %343, %194
  unreachable
}

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

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

declare noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72), i32 noundef) #3

declare noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, i32 noundef, ptr noundef) #3

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

declare void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #3

declare noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #1 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !6, i64 64}
!18 = !{!"_ZTSN4Glip7Modules11ImageBufferE", !19, i64 0, !6, i64 56, !6, i64 64}
!19 = !{!"_ZTSN4Glip6CoreGL24HdlAbstractTextureFormatE", !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48}
!20 = !{!21, !21, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"vtable pointer", !8, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!18, !6, i64 56}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}
!29 = distinct !{!29, !25}
!30 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 16, !31, i64 36, i64 16, !31, i64 52, i64 16, !31, i64 68, i64 1, !11, i64 69, i64 1, !11, i64 70, i64 1, !11}
!31 = !{!7, !7, i64 0}
!32 = distinct !{!32, !25}
!33 = !{!34, !10, i64 16}
!34 = !{!"_ZTSN4Glip6CoreGL26HdlTextureFormatDescriptorE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 20, !7, i64 36, !7, i64 52, !12, i64 68, !12, i64 69, !12, i64 70}
!35 = !{!36, !36, i64 0}
!36 = !{!"float", !7, i64 0}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = distinct !{!39, !25}
!40 = distinct !{!40, !25}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"struct.Glip::CoreGL::HdlTextureFormatDescriptor" = type { i32, i32, i32, i32, i32, [4 x i32], [4 x i32], [4 x i32], i8, i8, i8 }

@.str.3 = external hidden unnamed_addr constant [94 x i8], align 1
@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [64 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #3

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

declare noundef i64 @_ZNK4Glip6CoreGL15HdlDynamicTable10getRowSizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip7Modules11ImageBuffer4blitERKS1_RKiS5_S5_S5_iibb(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, i32 noundef %6, i32 noundef %7, i1 noundef zeroext %8, i1 noundef zeroext %9) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", 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::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %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::__cxx11::basic_string", align 8
  %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 %"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::__cxx11::basic_string", align 8
  %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 i32, align 4
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca i32, align 4
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca i32, align 4
  %63 = alloca i8, align 1
  %64 = alloca [32 x i8], align 16
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", align 4
  %68 = alloca %"struct.Glip::CoreGL::HdlTextureFormatDescriptor", align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i8, align 1
  %72 = alloca [32 x i8], align 16
  %73 = alloca [4 x i32], align 16
  %74 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  %75 = icmp sgt i32 %6, 0
  br i1 %75, label %78, label %76

76:                                               ; preds = %10
  %77 = tail call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  br label %78

78:                                               ; preds = %10, %76
  %79 = phi i32 [ %77, %76 ], [ %6, %10 ]
  store i32 %79, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  %80 = icmp sgt i32 %7, 0
  br i1 %80, label %83, label %81

81:                                               ; preds = %78
  %82 = tail call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  br label %83

83:                                               ; preds = %78, %81
  %84 = phi i32 [ %82, %81 ], [ %7, %78 ]
  store i32 %84, ptr %12, align 4, !tbaa !5
  %85 = tail call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %3)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #8
  br i1 %85, label %86, label %.critedge

86:                                               ; preds = %83
  %87 = load i32, ptr %2, align 4, !tbaa !5
  %88 = add i32 %87, -1
  %89 = add i32 %88, %79
  store i32 %89, ptr %13, align 4, !tbaa !5
  %90 = load i32, ptr %3, align 4, !tbaa !5
  %91 = add i32 %90, -1
  %92 = add i32 %91, %84
  store i32 %92, ptr %14, align 4, !tbaa !5
  %93 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %14)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  br i1 %93, label %175, label %94

.critedge:                                        ; preds = %83
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  br label %94

94:                                               ; preds = %.critedge, %86
  %95 = call ptr @__cxa_allocate_exception(i64 152) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %96 unwind label %.thread

96:                                               ; preds = %94
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %97 unwind label %.thread264

97:                                               ; preds = %96
  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.10)
          to label %98 unwind label %122

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %99 unwind label %124

99:                                               ; preds = %98
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %28)
          to label %100 unwind label %126

100:                                              ; preds = %99
  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.11)
          to label %101 unwind label %128

101:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %102 unwind label %130

102:                                              ; preds = %101
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %103 unwind label %132

103:                                              ; preds = %102
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.12)
          to label %104 unwind label %134

104:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %105 unwind label %136

105:                                              ; preds = %104
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %106 unwind label %138

106:                                              ; preds = %105
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.13)
          to label %107 unwind label %140

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #8
  %108 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
          to label %109 unwind label %142

109:                                              ; preds = %107
  store i32 %108, ptr %32, align 4, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %110 unwind label %142

110:                                              ; preds = %109
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %111 unwind label %144

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 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.12)
          to label %112 unwind label %146

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #8
  %113 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
          to label %114 unwind label %148

114:                                              ; preds = %112
  store i32 %113, ptr %34, align 4, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %115 unwind label %148

115:                                              ; preds = %114
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %116 unwind label %150

116:                                              ; preds = %115
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.5)
          to label %117 unwind label %152

117:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %118 unwind label %154

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #8
  store i32 2, ptr %37, align 4, !tbaa !9
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %95, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull %35, i32 noundef 457, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %119 unwind label %156

119:                                              ; preds = %118
  invoke void @__cxa_throw(ptr nonnull %95, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #9
          to label %513 unwind label %156

.thread:                                          ; preds = %94
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %.sink.split

.thread264:                                       ; preds = %96
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %.sink.split

122:                                              ; preds = %97
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %174

124:                                              ; preds = %98
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %173

126:                                              ; preds = %99
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %172

128:                                              ; preds = %100
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %171

130:                                              ; preds = %101
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %170

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

134:                                              ; preds = %103
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %168

136:                                              ; preds = %104
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %167

138:                                              ; preds = %105
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %166

140:                                              ; preds = %106
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %165

142:                                              ; preds = %109, %107
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %164

144:                                              ; preds = %110
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %163

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

148:                                              ; preds = %114, %112
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %161

150:                                              ; preds = %115
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %160

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

154:                                              ; preds = %117
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %119, %118
  %.0171 = phi i1 [ false, %119 ], [ true, %118 ]
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %158

158:                                              ; preds = %156, %154
  %.1172 = phi i1 [ %.0171, %156 ], [ true, %154 ]
  %.pn240 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %159

159:                                              ; preds = %158, %152
  %.2173 = phi i1 [ %.1172, %158 ], [ true, %152 ]
  %.pn240.pn = phi { ptr, i32 } [ %.pn240, %158 ], [ %153, %152 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %160

160:                                              ; preds = %159, %150
  %.3174 = phi i1 [ %.2173, %159 ], [ true, %150 ]
  %.pn240.pn.pn = phi { ptr, i32 } [ %.pn240.pn, %159 ], [ %151, %150 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %161

161:                                              ; preds = %160, %148
  %.4175 = phi i1 [ %.3174, %160 ], [ true, %148 ]
  %.pn240.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn, %160 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %162

162:                                              ; preds = %161, %146
  %.5176 = phi i1 [ %.4175, %161 ], [ true, %146 ]
  %.pn240.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn, %161 ], [ %147, %146 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %163

163:                                              ; preds = %162, %144
  %.6177 = phi i1 [ %.5176, %162 ], [ true, %144 ]
  %.pn240.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn, %162 ], [ %145, %144 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %164

164:                                              ; preds = %163, %142
  %.7178 = phi i1 [ %.6177, %163 ], [ true, %142 ]
  %.pn240.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn, %163 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %165

165:                                              ; preds = %164, %140
  %.8179 = phi i1 [ %.7178, %164 ], [ true, %140 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn, %164 ], [ %141, %140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %166

166:                                              ; preds = %165, %138
  %.9180 = phi i1 [ %.8179, %165 ], [ true, %138 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn, %165 ], [ %139, %138 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %167

167:                                              ; preds = %166, %136
  %.10181 = phi i1 [ %.9180, %166 ], [ true, %136 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn, %166 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %168

168:                                              ; preds = %167, %134
  %.11182 = phi i1 [ %.10181, %167 ], [ true, %134 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn, %167 ], [ %135, %134 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %169

169:                                              ; preds = %168, %132
  %.12183 = phi i1 [ %.11182, %168 ], [ true, %132 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %168 ], [ %133, %132 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %170

170:                                              ; preds = %169, %130
  %.13184 = phi i1 [ %.12183, %169 ], [ true, %130 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %169 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %171

171:                                              ; preds = %170, %128
  %.14185 = phi i1 [ %.13184, %170 ], [ true, %128 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %170 ], [ %129, %128 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %172

172:                                              ; preds = %171, %126
  %.15186 = phi i1 [ %.14185, %171 ], [ true, %126 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %171 ], [ %127, %126 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %173

173:                                              ; preds = %172, %124
  %.16187 = phi i1 [ %.15186, %172 ], [ true, %124 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %172 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %174

174:                                              ; preds = %122, %173
  %.17188 = phi i1 [ %.16187, %173 ], [ true, %122 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %173 ], [ %123, %122 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br i1 %.17188, label %.sink.split, label %512

175:                                              ; preds = %86
  %176 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #8
  br i1 %176, label %177, label %.critedge2

177:                                              ; preds = %175
  %178 = load i32, ptr %4, align 4, !tbaa !5
  %179 = load i32, ptr %11, align 4, !tbaa !5
  %180 = add i32 %178, -1
  %181 = add i32 %180, %179
  store i32 %181, ptr %38, align 4, !tbaa !5
  %182 = load i32, ptr %5, align 4, !tbaa !5
  %183 = load i32, ptr %12, align 4, !tbaa !5
  %184 = add i32 %182, -1
  %185 = add i32 %184, %183
  store i32 %185, ptr %39, align 4, !tbaa !5
  %186 = call noundef zeroext i1 @_ZNK4Glip7Modules11ImageBuffer8isInsideERKiS3_(ptr noundef nonnull align 8 dereferenceable(72) %0, ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %39)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  br i1 %186, label %268, label %187

.critedge2:                                       ; preds = %175
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #8
  br label %187

187:                                              ; preds = %.critedge2, %177
  %188 = call ptr @__cxa_allocate_exception(i64 152) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 4 dereferenceable(4) %4)
          to label %189 unwind label %.thread267

189:                                              ; preds = %187
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %190 unwind label %.thread271

190:                                              ; preds = %189
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.10)
          to label %191 unwind label %215

191:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %53, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %192 unwind label %217

192:                                              ; preds = %191
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %193 unwind label %219

193:                                              ; preds = %192
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull @.str.11)
          to label %194 unwind label %221

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %195 unwind label %223

195:                                              ; preds = %194
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %196 unwind label %225

196:                                              ; preds = %195
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.12)
          to label %197 unwind label %227

197:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #8
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %198 unwind label %229

198:                                              ; preds = %197
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %199 unwind label %231

199:                                              ; preds = %198
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.13)
          to label %200 unwind label %233

200:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #8
  %201 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat8getWidthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
          to label %202 unwind label %235

202:                                              ; preds = %200
  store i32 %201, ptr %57, align 4, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %203 unwind label %235

203:                                              ; preds = %202
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %56)
          to label %204 unwind label %237

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 %42, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.12)
          to label %205 unwind label %239

205:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #8
  %206 = invoke noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getHeightEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
          to label %207 unwind label %241

207:                                              ; preds = %205
  store i32 %206, ptr %59, align 4, !tbaa !5
  invoke void @_ZN4Glip8toStringIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 4 dereferenceable(4) %59)
          to label %208 unwind label %241

208:                                              ; preds = %207
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 align 8 dereferenceable(32) %58)
          to label %209 unwind label %243

209:                                              ; preds = %208
  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.5)
          to label %210 unwind label %245

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

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #8
  store i32 2, ptr %62, align 4, !tbaa !9
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %188, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull %60, i32 noundef 459, ptr noundef nonnull align 4 dereferenceable(4) %62)
          to label %212 unwind label %249

212:                                              ; preds = %211
  invoke void @__cxa_throw(ptr nonnull %188, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #9
          to label %513 unwind label %249

.thread267:                                       ; preds = %187
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #8
  br label %.sink.split

.thread271:                                       ; preds = %189
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #8
  br label %.sink.split

215:                                              ; preds = %190
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %267

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

219:                                              ; preds = %192
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %265

221:                                              ; preds = %193
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %264

223:                                              ; preds = %194
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %263

225:                                              ; preds = %195
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %262

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

229:                                              ; preds = %197
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %260

231:                                              ; preds = %198
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %259

233:                                              ; preds = %199
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %258

235:                                              ; preds = %202, %200
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %257

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

239:                                              ; preds = %204
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %255

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

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

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

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

249:                                              ; preds = %212, %211
  %.0192 = phi i1 [ false, %212 ], [ true, %211 ]
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %251

251:                                              ; preds = %249, %247
  %.1193 = phi i1 [ %.0192, %249 ], [ true, %247 ]
  %.pn = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  br label %252

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

253:                                              ; preds = %252, %243
  %.3195 = phi i1 [ %.2194, %252 ], [ true, %243 ]
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %252 ], [ %244, %243 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %254

254:                                              ; preds = %253, %241
  %.4196 = phi i1 [ %.3195, %253 ], [ true, %241 ]
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %253 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %255

255:                                              ; preds = %254, %239
  %.5197 = phi i1 [ %.4196, %254 ], [ true, %239 ]
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %254 ], [ %240, %239 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %256

256:                                              ; preds = %255, %237
  %.6198 = phi i1 [ %.5197, %255 ], [ true, %237 ]
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %255 ], [ %238, %237 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  br label %257

257:                                              ; preds = %256, %235
  %.7199 = phi i1 [ %.6198, %256 ], [ true, %235 ]
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %256 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  br label %258

258:                                              ; preds = %257, %233
  %.8200 = phi i1 [ %.7199, %257 ], [ true, %233 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %257 ], [ %234, %233 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %259

259:                                              ; preds = %258, %231
  %.9201 = phi i1 [ %.8200, %258 ], [ true, %231 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn, %258 ], [ %232, %231 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %260

260:                                              ; preds = %259, %229
  %.10202 = phi i1 [ %.9201, %259 ], [ true, %229 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %259 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %261

261:                                              ; preds = %260, %227
  %.11203 = phi i1 [ %.10202, %260 ], [ true, %227 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %260 ], [ %228, %227 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %262

262:                                              ; preds = %261, %225
  %.12204 = phi i1 [ %.11203, %261 ], [ true, %225 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %261 ], [ %226, %225 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %263

263:                                              ; preds = %262, %223
  %.13205 = phi i1 [ %.12204, %262 ], [ true, %223 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %262 ], [ %224, %223 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %264

264:                                              ; preds = %263, %221
  %.14206 = phi i1 [ %.13205, %263 ], [ true, %221 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %263 ], [ %222, %221 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %265

265:                                              ; preds = %264, %219
  %.15207 = phi i1 [ %.14206, %264 ], [ true, %219 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %264 ], [ %220, %219 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %266

266:                                              ; preds = %265, %217
  %.16208 = phi i1 [ %.15207, %265 ], [ true, %217 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %265 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %267

267:                                              ; preds = %215, %266
  %.17209 = phi i1 [ %.16208, %266 ], [ true, %215 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %266 ], [ %216, %215 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #8
  br i1 %.17209, label %.sink.split, label %512

268:                                              ; preds = %177
  %269 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  %270 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat9getGLModeEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  %271 = icmp ne i32 %269, %270
  %272 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  %273 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  %274 = load i32, ptr %12, align 4
  %275 = add nsw i32 %274, -1
  %276 = select i1 %9, i32 %275, i32 0
  %277 = select i1 %9, i32 -1, i32 1
  %278 = load i32, ptr %11, align 4
  %279 = add nsw i32 %278, -1
  %280 = select i1 %8, i32 %279, i32 0
  %281 = select i1 %8, i32 -1, i32 1
  %282 = icmp ne i32 %272, %273
  %or.cond.not275 = or i1 %271, %282
  %brmerge = or i1 %or.cond.not275, %8
  %283 = getelementptr inbounds i8, ptr %0, i64 64
  %284 = load ptr, ptr %283, align 8, !tbaa !11
  br i1 %brmerge, label %310, label %285

285:                                              ; preds = %268
  %286 = call noundef i64 @_ZNK4Glip6CoreGL15HdlDynamicTable10getRowSizeEv(ptr noundef nonnull align 8 dereferenceable(32) %284)
  %287 = load i32, ptr %12, align 4, !tbaa !5
  %288 = icmp sgt i32 %287, 0
  br i1 %288, label %.lr.ph, label %.loopexit283

.lr.ph:                                           ; preds = %285
  %289 = getelementptr inbounds i8, ptr %1, i64 64
  br label %290

290:                                              ; preds = %.lr.ph, %290
  %.0212284 = phi i32 [ 0, %.lr.ph ], [ %307, %290 ]
  %291 = load ptr, ptr %283, align 8, !tbaa !11
  %292 = load i32, ptr %5, align 4, !tbaa !5
  %293 = add nsw i32 %292, %.0212284
  %294 = load ptr, ptr %291, align 8, !tbaa !15
  %295 = getelementptr inbounds i8, ptr %294, i64 264
  %296 = load ptr, ptr %295, align 8
  %297 = call noundef ptr %296(ptr noundef nonnull align 8 dereferenceable(32) %291, i32 noundef %293)
  %298 = load ptr, ptr %289, align 8, !tbaa !11
  %299 = load i32, ptr %3, align 4, !tbaa !5
  %300 = mul nsw i32 %.0212284, %277
  %301 = add i32 %300, %276
  %302 = add i32 %301, %299
  %303 = load ptr, ptr %298, align 8, !tbaa !15
  %304 = getelementptr inbounds i8, ptr %303, i64 264
  %305 = load ptr, ptr %304, align 8
  %306 = call noundef ptr %305(ptr noundef nonnull align 8 dereferenceable(32) %298, i32 noundef %302)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %297, ptr align 1 %306, i64 %286, i1 false)
  %307 = add nuw nsw i32 %.0212284, 1
  %308 = load i32, ptr %12, align 4, !tbaa !5
  %309 = icmp slt i32 %307, %308
  br i1 %309, label %290, label %.loopexit283, !llvm.loop !17

310:                                              ; preds = %268
  %311 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %284)
  br i1 %311, label %381, label %312

312:                                              ; preds = %310
  %313 = getelementptr inbounds i8, ptr %1, i64 64
  %314 = load ptr, ptr %313, align 8, !tbaa !11
  %315 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %314)
  br i1 %315, label %316, label %381

316:                                              ; preds = %312
  %317 = getelementptr inbounds i8, ptr %1, i64 56
  %318 = load ptr, ptr %317, align 8, !tbaa !19
  %319 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  %320 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %318, i32 noundef %319)
  %321 = getelementptr inbounds i8, ptr %0, i64 56
  %322 = load ptr, ptr %321, align 8, !tbaa !19
  %323 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  %324 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %322, i32 noundef %323)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #8
  store i8 0, ptr %63, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %64) #8
  %325 = load ptr, ptr %321, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #8
  %326 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  store i32 %326, ptr %65, align 4, !tbaa !5
  %327 = load ptr, ptr %317, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #8
  %328 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  store i32 %328, ptr %66, align 4, !tbaa !5
  %329 = call noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72) %325, ptr noundef nonnull align 4 dereferenceable(4) %65, ptr noundef nonnull align 4 dereferenceable(72) %327, ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef nonnull %64, i32 noundef 32, ptr noundef nonnull %63)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #8
  %330 = load i8, ptr %63, align 1, !tbaa !20, !range !22, !noundef !23
  %331 = trunc nuw i8 %330 to i1
  %332 = load i32, ptr %12, align 4, !tbaa !5
  %333 = icmp sgt i32 %332, 0
  br i1 %331, label %.preheader279, label %.preheader281

.preheader281:                                    ; preds = %316
  br i1 %333, label %.lr.ph288.preheader, label %.loopexit280

.lr.ph288.preheader:                              ; preds = %.preheader281
  %334 = sext i32 %324 to i64
  %335 = sext i32 %281 to i64
  %336 = sext i32 %280 to i64
  %337 = sext i32 %320 to i64
  br label %.lr.ph288

.preheader279:                                    ; preds = %316
  br i1 %333, label %.lr.ph290, label %.loopexit280

.lr.ph290:                                        ; preds = %.preheader279, %.lr.ph290
  %.0216289 = phi i32 [ %348, %.lr.ph290 ], [ 0, %.preheader279 ]
  %338 = load ptr, ptr %283, align 8, !tbaa !11
  %339 = load i32, ptr %5, align 4, !tbaa !5
  %340 = add nsw i32 %339, %.0216289
  %341 = load ptr, ptr %338, align 8, !tbaa !15
  %342 = getelementptr inbounds i8, ptr %341, i64 264
  %343 = load ptr, ptr %342, align 8
  %344 = call noundef ptr %343(ptr noundef nonnull align 8 dereferenceable(32) %338, i32 noundef %340)
  %345 = load i32, ptr %11, align 4, !tbaa !5
  %346 = mul nsw i32 %345, %324
  %347 = sext i32 %346 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %344, i8 0, i64 %347, i1 false)
  %348 = add nuw nsw i32 %.0216289, 1
  %349 = load i32, ptr %12, align 4, !tbaa !5
  %350 = icmp slt i32 %348, %349
  br i1 %350, label %.lr.ph290, label %.loopexit280, !llvm.loop !24

.lr.ph288:                                        ; preds = %.lr.ph288.preheader, %._crit_edge
  %.0217287 = phi i32 [ %369, %._crit_edge ], [ 0, %.lr.ph288.preheader ]
  %351 = load ptr, ptr %283, align 8, !tbaa !11
  %352 = load i32, ptr %5, align 4, !tbaa !5
  %353 = add nsw i32 %352, %.0217287
  %354 = load ptr, ptr %351, align 8, !tbaa !15
  %355 = getelementptr inbounds i8, ptr %354, i64 264
  %356 = load ptr, ptr %355, align 8
  %357 = call noundef ptr %356(ptr noundef nonnull align 8 dereferenceable(32) %351, i32 noundef %353)
  %358 = load ptr, ptr %313, align 8, !tbaa !11
  %359 = load i32, ptr %3, align 4, !tbaa !5
  %360 = mul nsw i32 %.0217287, %277
  %361 = add i32 %360, %276
  %362 = add i32 %361, %359
  %363 = load ptr, ptr %358, align 8, !tbaa !15
  %364 = getelementptr inbounds i8, ptr %363, i64 264
  %365 = load ptr, ptr %364, align 8
  %366 = call noundef ptr %365(ptr noundef nonnull align 8 dereferenceable(32) %358, i32 noundef %362)
  %367 = load i32, ptr %11, align 4, !tbaa !5
  %368 = icmp sgt i32 %367, 0
  br i1 %368, label %.lr.ph286, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph286, %.lr.ph288
  %369 = add nuw nsw i32 %.0217287, 1
  %370 = load i32, ptr %12, align 4, !tbaa !5
  %371 = icmp slt i32 %369, %370
  br i1 %371, label %.lr.ph288, label %.loopexit280, !llvm.loop !25

.lr.ph286:                                        ; preds = %.lr.ph288, %.lr.ph286
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph286 ], [ 0, %.lr.ph288 ]
  %372 = mul nsw i64 %indvars.iv, %334
  %373 = getelementptr inbounds i8, ptr %357, i64 %372
  %374 = mul nsw i64 %indvars.iv, %335
  %375 = add nsw i64 %374, %336
  %376 = mul nsw i64 %375, %337
  %377 = getelementptr inbounds i8, ptr %366, i64 %376
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef %373, ptr noundef %377, ptr noundef nonnull %64, i32 noundef %329)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %378 = load i32, ptr %11, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = icmp slt i64 %indvars.iv.next, %379
  br i1 %380, label %.lr.ph286, label %._crit_edge, !llvm.loop !26

.loopexit280:                                     ; preds = %._crit_edge, %.lr.ph290, %.preheader281, %.preheader279
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #8
  br label %.loopexit283

381:                                              ; preds = %312, %310
  %382 = getelementptr inbounds i8, ptr %1, i64 56
  %383 = load ptr, ptr %382, align 8, !tbaa !19
  %384 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  %385 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %383, i32 noundef %384)
  %386 = getelementptr inbounds i8, ptr %0, i64 56
  %387 = load ptr, ptr %386, align 8, !tbaa !19
  %388 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  %389 = call noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72) %387, i32 noundef %388)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %67) #8
  %390 = load ptr, ptr %283, align 8, !tbaa !11
  %391 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %390)
  %392 = load ptr, ptr %386, align 8, !tbaa !19
  br i1 %391, label %393, label %396

393:                                              ; preds = %381
  %394 = getelementptr inbounds i8, ptr %392, i64 4
  %395 = call noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4) %394)
  br label %396

396:                                              ; preds = %381, %393
  %397 = phi ptr [ %395, %393 ], [ %392, %381 ]
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(72) %67, ptr noundef nonnull align 4 dereferenceable(72) %397, i64 72, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %68) #8
  %398 = getelementptr inbounds i8, ptr %1, i64 64
  %399 = load ptr, ptr %398, align 8, !tbaa !11
  %400 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %399)
  %401 = load ptr, ptr %382, align 8, !tbaa !19
  br i1 %400, label %402, label %405

402:                                              ; preds = %396
  %403 = getelementptr inbounds i8, ptr %401, i64 4
  %404 = call noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4) %403)
  br label %405

405:                                              ; preds = %396, %402
  %406 = phi ptr [ %404, %402 ], [ %401, %396 ]
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(72) %68, ptr noundef nonnull align 4 dereferenceable(72) %406, i64 72, i1 false), !tbaa.struct !27
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #8
  %407 = load ptr, ptr %283, align 8, !tbaa !11
  %408 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %407)
  br i1 %408, label %411, label %409

409:                                              ; preds = %405
  %410 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %0)
  br label %411

411:                                              ; preds = %405, %409
  %412 = phi i32 [ %410, %409 ], [ 5125, %405 ]
  store i32 %412, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %70) #8
  %413 = load ptr, ptr %398, align 8, !tbaa !11
  %414 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %413)
  br i1 %414, label %417, label %415

415:                                              ; preds = %411
  %416 = call noundef i32 @_ZNK4Glip6CoreGL24HdlAbstractTextureFormat10getGLDepthEv(ptr noundef nonnull align 8 dereferenceable(52) %1)
  br label %417

417:                                              ; preds = %411, %415
  %418 = phi i32 [ %416, %415 ], [ 5125, %411 ]
  store i32 %418, ptr %70, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  store i8 0, ptr %71, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %72) #8
  %419 = call noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72) %67, ptr noundef nonnull align 4 dereferenceable(4) %69, ptr noundef nonnull align 4 dereferenceable(72) %68, ptr noundef nonnull align 4 dereferenceable(4) %70, ptr noundef nonnull %72, i32 noundef 32, ptr noundef nonnull %71)
  %420 = load i8, ptr %71, align 1, !tbaa !20, !range !22, !noundef !23
  %421 = trunc nuw i8 %420 to i1
  br i1 %421, label %.preheader, label %437

.preheader:                                       ; preds = %417
  %422 = load i32, ptr %12, align 4, !tbaa !5
  %423 = icmp sgt i32 %422, 0
  br i1 %423, label %.lr.ph305, label %.loopexit

.lr.ph305:                                        ; preds = %.preheader, %.lr.ph305
  %.0215304 = phi i32 [ %434, %.lr.ph305 ], [ 0, %.preheader ]
  %424 = load ptr, ptr %283, align 8, !tbaa !11
  %425 = load i32, ptr %5, align 4, !tbaa !5
  %426 = add nsw i32 %425, %.0215304
  %427 = load ptr, ptr %424, align 8, !tbaa !15
  %428 = getelementptr inbounds i8, ptr %427, i64 264
  %429 = load ptr, ptr %428, align 8
  %430 = call noundef ptr %429(ptr noundef nonnull align 8 dereferenceable(32) %424, i32 noundef %426)
  %431 = load i32, ptr %11, align 4, !tbaa !5
  %432 = mul nsw i32 %431, %389
  %433 = sext i32 %432 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %430, i8 0, i64 %433, i1 false)
  %434 = add nuw nsw i32 %.0215304, 1
  %435 = load i32, ptr %12, align 4, !tbaa !5
  %436 = icmp slt i32 %434, %435
  br i1 %436, label %.lr.ph305, label %.loopexit, !llvm.loop !29

437:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #8
  %438 = load i32, ptr %12, align 4, !tbaa !5
  %439 = icmp sgt i32 %438, 0
  br i1 %439, label %.lr.ph302.preheader, label %._crit_edge303

.lr.ph302.preheader:                              ; preds = %437
  %440 = sext i32 %389 to i64
  %441 = sext i32 %281 to i64
  %442 = sext i32 %280 to i64
  %443 = sext i32 %385 to i64
  br label %.lr.ph302

._crit_edge303:                                   ; preds = %._crit_edge299, %437
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #8
  br label %.loopexit

.lr.ph302:                                        ; preds = %.lr.ph302.preheader, %._crit_edge299
  %.0213300 = phi i32 [ %462, %._crit_edge299 ], [ 0, %.lr.ph302.preheader ]
  %444 = load ptr, ptr %283, align 8, !tbaa !11
  %445 = load i32, ptr %5, align 4, !tbaa !5
  %446 = add nsw i32 %445, %.0213300
  %447 = load ptr, ptr %444, align 8, !tbaa !15
  %448 = getelementptr inbounds i8, ptr %447, i64 264
  %449 = load ptr, ptr %448, align 8
  %450 = call noundef ptr %449(ptr noundef nonnull align 8 dereferenceable(32) %444, i32 noundef %446)
  %451 = load ptr, ptr %398, align 8, !tbaa !11
  %452 = load i32, ptr %3, align 4, !tbaa !5
  %453 = mul nsw i32 %.0213300, %277
  %454 = add i32 %453, %276
  %455 = add i32 %454, %452
  %456 = load ptr, ptr %451, align 8, !tbaa !15
  %457 = getelementptr inbounds i8, ptr %456, i64 264
  %458 = load ptr, ptr %457, align 8
  %459 = call noundef ptr %458(ptr noundef nonnull align 8 dereferenceable(32) %451, i32 noundef %455)
  %460 = load i32, ptr %11, align 4, !tbaa !5
  %461 = icmp sgt i32 %460, 0
  br i1 %461, label %.lr.ph298, label %._crit_edge299

._crit_edge299:                                   ; preds = %.loopexit276, %.lr.ph302
  %462 = add nuw nsw i32 %.0213300, 1
  %463 = load i32, ptr %12, align 4, !tbaa !5
  %464 = icmp slt i32 %462, %463
  br i1 %464, label %.lr.ph302, label %._crit_edge303, !llvm.loop !30

.lr.ph298:                                        ; preds = %.lr.ph302, %.loopexit276
  %indvars.iv314 = phi i64 [ %indvars.iv.next315, %.loopexit276 ], [ 0, %.lr.ph302 ]
  %465 = mul nsw i64 %indvars.iv314, %440
  %466 = getelementptr inbounds i8, ptr %450, i64 %465
  %467 = mul nsw i64 %indvars.iv314, %441
  %468 = add nsw i64 %467, %442
  %469 = mul nsw i64 %468, %443
  %470 = getelementptr inbounds i8, ptr %459, i64 %469
  %471 = load ptr, ptr %398, align 8, !tbaa !11
  %472 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %471)
  br i1 %472, label %.preheader277, label %.loopexit278

.preheader277:                                    ; preds = %.lr.ph298
  %473 = load ptr, ptr %382, align 8, !tbaa !19
  %474 = getelementptr inbounds i8, ptr %473, i64 16
  %475 = load i32, ptr %474, align 4, !tbaa !31
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %.lr.ph292, label %.loopexit278

.lr.ph292:                                        ; preds = %.preheader277, %.lr.ph292
  %indvars.iv308 = phi i64 [ %indvars.iv.next309, %.lr.ph292 ], [ 0, %.preheader277 ]
  %477 = getelementptr inbounds float, ptr %470, i64 %indvars.iv308
  %478 = load float, ptr %477, align 4, !tbaa !33
  %479 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #8
  %480 = uitofp i32 %479 to float
  %481 = fmul float %478, %480
  %482 = fptoui float %481 to i32
  %483 = getelementptr inbounds [4 x i32], ptr %73, i64 0, i64 %indvars.iv308
  store i32 %482, ptr %483, align 4, !tbaa !5
  %indvars.iv.next309 = add nuw nsw i64 %indvars.iv308, 1
  %484 = load ptr, ptr %382, align 8, !tbaa !19
  %485 = getelementptr inbounds i8, ptr %484, i64 16
  %486 = load i32, ptr %485, align 4, !tbaa !31
  %487 = sext i32 %486 to i64
  %488 = icmp slt i64 %indvars.iv.next309, %487
  br i1 %488, label %.lr.ph292, label %.loopexit278, !llvm.loop !35

.loopexit278:                                     ; preds = %.lr.ph292, %.preheader277, %.lr.ph298
  %.0214 = phi ptr [ %470, %.lr.ph298 ], [ %73, %.preheader277 ], [ %73, %.lr.ph292 ]
  %489 = load ptr, ptr %283, align 8, !tbaa !11
  %490 = call noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32) %489)
  br i1 %490, label %492, label %491

491:                                              ; preds = %.loopexit278
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef %466, ptr noundef %.0214, ptr noundef nonnull %72, i32 noundef %419)
  br label %.loopexit276

492:                                              ; preds = %.loopexit278
  call void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef nonnull %74, ptr noundef %.0214, ptr noundef nonnull %72, i32 noundef %419)
  %493 = load ptr, ptr %382, align 8, !tbaa !19
  %494 = getelementptr inbounds i8, ptr %493, i64 16
  %495 = load i32, ptr %494, align 4, !tbaa !31
  %496 = icmp sgt i32 %495, 0
  br i1 %496, label %.lr.ph295, label %.loopexit276

.lr.ph295:                                        ; preds = %492, %.lr.ph295
  %indvars.iv311 = phi i64 [ %indvars.iv.next312, %.lr.ph295 ], [ 0, %492 ]
  %497 = getelementptr inbounds [4 x i32], ptr %74, i64 0, i64 %indvars.iv311
  %498 = load i32, ptr %497, align 4, !tbaa !5
  %499 = uitofp i32 %498 to float
  %500 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #8
  %501 = uitofp i32 %500 to float
  %502 = fdiv float %499, %501
  %503 = getelementptr inbounds float, ptr %466, i64 %indvars.iv311
  store float %502, ptr %503, align 4, !tbaa !33
  %indvars.iv.next312 = add nuw nsw i64 %indvars.iv311, 1
  %504 = load ptr, ptr %382, align 8, !tbaa !19
  %505 = getelementptr inbounds i8, ptr %504, i64 16
  %506 = load i32, ptr %505, align 4, !tbaa !31
  %507 = sext i32 %506 to i64
  %508 = icmp slt i64 %indvars.iv.next312, %507
  br i1 %508, label %.lr.ph295, label %.loopexit276, !llvm.loop !36

.loopexit276:                                     ; preds = %.lr.ph295, %492, %491
  %indvars.iv.next315 = add nuw nsw i64 %indvars.iv314, 1
  %509 = load i32, ptr %11, align 4, !tbaa !5
  %510 = sext i32 %509 to i64
  %511 = icmp slt i64 %indvars.iv.next315, %510
  br i1 %511, label %.lr.ph298, label %._crit_edge299, !llvm.loop !37

.loopexit:                                        ; preds = %.lr.ph305, %.preheader, %._crit_edge303
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %72) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %68) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %67) #8
  br label %.loopexit283

.loopexit283:                                     ; preds = %290, %285, %.loopexit280, %.loopexit
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  ret void

.sink.split:                                      ; preds = %267, %.thread267, %.thread271, %174, %.thread, %.thread264
  %.sink = phi ptr [ %95, %.thread264 ], [ %95, %.thread ], [ %95, %174 ], [ %188, %.thread271 ], [ %188, %.thread267 ], [ %188, %267 ]
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.ph = phi { ptr, i32 } [ %121, %.thread264 ], [ %120, %.thread ], [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %174 ], [ %214, %.thread271 ], [ %213, %.thread267 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %267 ]
  call void @__cxa_free_exception(ptr %.sink) #8
  br label %512

512:                                              ; preds = %.sink.split, %267, %174
  %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %174 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %267 ], [ %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.ph, %.sink.split ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  resume { ptr, i32 } %.pn240.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

513:                                              ; preds = %212, %119
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Glip8toStringIiEENSt7__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 #2

declare noundef zeroext i1 @_ZNK4Glip6CoreGL15HdlDynamicTable12isNormalizedEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare noundef i32 @_ZNK4Glip6CoreGL26HdlTextureFormatDescriptor12getPixelSizeEj(ptr noundef nonnull align 4 dereferenceable(72), i32 noundef) local_unnamed_addr #3

declare noundef i32 @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor13getBitShuffleERKS1_RKjS3_S5_PciPb(ptr noundef nonnull align 4 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(72), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN4Glip6CoreGL26HdlTextureFormatDescriptor15applyBitShuffleEPcPKcS4_i(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare noundef nonnull align 4 dereferenceable(72) ptr @_ZN4Glip6CoreGL31HdlTextureFormatDescriptorsList3getERKj(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() local_unnamed_addr #1 align 2

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

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

!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 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!11 = !{!12, !14, i64 64}
!12 = !{!"_ZTSN4Glip7Modules11ImageBufferE", !13, i64 0, !14, i64 56, !14, i64 64}
!13 = !{!"_ZTSN4Glip6CoreGL24HdlAbstractTextureFormatE", !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!12, !14, i64 56}
!20 = !{!21, !21, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 16, !28, i64 36, i64 16, !28, i64 52, i64 16, !28, i64 68, i64 1, !20, i64 69, i64 1, !20, i64 70, i64 1, !20}
!28 = !{!7, !7, i64 0}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = !{!32, !6, i64 16}
!32 = !{!"_ZTSN4Glip6CoreGL26HdlTextureFormatDescriptorE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !7, i64 20, !7, i64 36, !7, i64 52, !21, i64 68, !21, i64 69, !21, i64 70}
!33 = !{!34, !34, i64 0}
!34 = !{!"float", !7, i64 0}
!35 = distinct !{!35, !18}
!36 = distinct !{!36, !18}
!37 = distinct !{!37, !18}


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