; LLVM IR from ClementineAccount/Albuquerque :: src/HelloSDL (main)

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

%struct.nk_color = type { i8, i8, i8, i8 }
%struct.nk_colorf = type { float, float, float, float }
%struct.nk_vec2 = type { float, float }
%struct.nk_draw_list = type { %struct.nk_rect, [12 x %struct.nk_vec2], %struct.nk_convert_config, ptr, ptr, ptr, i32, i32, i32, i64, i32, i32, i32, i32 }
%struct.nk_rect = type { float, float, float, float }
%struct.nk_convert_config = type { float, i32, i32, i32, i32, i32, %struct.nk_draw_null_texture, ptr, i64, i64 }
%struct.nk_draw_null_texture = type { %union.nk_handle, %struct.nk_vec2 }
%union.nk_handle = type { ptr }
%struct.nk_buffer = type { [2 x %struct.nk_buffer_marker], %struct.nk_allocator, i32, %struct.nk_memory, float, i64, i64, i64, i64 }
%struct.nk_buffer_marker = type { i32, i64 }
%struct.nk_allocator = type { %union.nk_handle, ptr, ptr }
%struct.nk_memory = type { ptr, i64 }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@__PRETTY_FUNCTION__.nk_draw_list_stroke_poly_line = external hidden unnamed_addr constant [175 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local <2 x float> @nk_vec2(float noundef, float noundef) #1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #4

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_color_fv(ptr noundef, i32) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15nk_buffer_allocP9nk_buffer25nk_buffer_allocation_typemm(ptr noundef, i32 noundef, i64 noundef, i64 noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_buffer_mark(ptr noundef, i32 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_buffer_reset(ptr noundef, i32 noundef) #5

; Function Attrs: mustprogress uwtable
define dso_local void @nk_draw_list_stroke_poly_line(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 %3, i32 noundef %4, float noundef %5, i32 noundef %6) #7 {
  %8 = alloca %struct.nk_color, align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca float, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca %struct.nk_colorf, align 4
  %18 = alloca %struct.nk_colorf, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.nk_color, align 1
  %21 = alloca float, align 4
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i64, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i64, align 8
  %33 = alloca %struct.nk_vec2, align 4
  %34 = alloca float, align 4
  %35 = alloca %struct.nk_vec2, align 4
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca %struct.nk_vec2, align 4
  %39 = alloca %struct.nk_vec2, align 4
  %40 = alloca %struct.nk_vec2, align 4
  %41 = alloca %struct.nk_vec2, align 4
  %42 = alloca %struct.nk_vec2, align 4
  %43 = alloca %struct.nk_vec2, align 4
  %44 = alloca %struct.nk_vec2, align 4
  %45 = alloca %struct.nk_vec2, align 4
  %46 = alloca %struct.nk_vec2, align 4
  %47 = alloca %struct.nk_vec2, align 4
  %48 = alloca %struct.nk_vec2, align 4
  %49 = alloca float, align 4
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca %struct.nk_vec2, align 4
  %53 = alloca %struct.nk_vec2, align 4
  %54 = alloca %struct.nk_vec2, align 4
  %55 = alloca float, align 4
  %56 = alloca %struct.nk_vec2, align 4
  %57 = alloca %struct.nk_vec2, align 4
  %58 = alloca %struct.nk_vec2, align 4
  %59 = alloca %struct.nk_vec2, align 4
  %60 = alloca %struct.nk_vec2, align 4
  %61 = alloca %struct.nk_vec2, align 4
  %62 = alloca %struct.nk_vec2, align 4
  %63 = alloca %struct.nk_colorf, align 4
  %64 = alloca %struct.nk_vec2, align 4
  %65 = alloca %struct.nk_vec2, align 4
  %66 = alloca %struct.nk_colorf, align 4
  %67 = alloca %struct.nk_vec2, align 4
  %68 = alloca %struct.nk_vec2, align 4
  %69 = alloca %struct.nk_colorf, align 4
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca float, align 4
  %73 = alloca %struct.nk_vec2, align 4
  %74 = alloca %struct.nk_vec2, align 4
  %75 = alloca %struct.nk_vec2, align 4
  %76 = alloca %struct.nk_vec2, align 4
  %77 = alloca %struct.nk_vec2, align 4
  %78 = alloca %struct.nk_vec2, align 4
  %79 = alloca %struct.nk_vec2, align 4
  %80 = alloca %struct.nk_vec2, align 4
  %81 = alloca %struct.nk_vec2, align 4
  %82 = alloca %struct.nk_vec2, align 4
  %83 = alloca %struct.nk_vec2, align 4
  %84 = alloca %struct.nk_vec2, align 4
  %85 = alloca %struct.nk_vec2, align 4
  %86 = alloca %struct.nk_vec2, align 4
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  %89 = alloca %struct.nk_vec2, align 4
  %90 = alloca %struct.nk_vec2, align 4
  %91 = alloca %struct.nk_vec2, align 4
  %92 = alloca float, align 4
  %93 = alloca float, align 4
  %94 = alloca %struct.nk_vec2, align 4
  %95 = alloca %struct.nk_vec2, align 4
  %96 = alloca %struct.nk_vec2, align 4
  %97 = alloca %struct.nk_vec2, align 4
  %98 = alloca %struct.nk_vec2, align 4
  %99 = alloca %struct.nk_vec2, align 4
  %100 = alloca %struct.nk_vec2, align 4
  %101 = alloca %struct.nk_vec2, align 4
  %102 = alloca %struct.nk_vec2, align 4
  %103 = alloca %struct.nk_vec2, align 4
  %104 = alloca %struct.nk_colorf, align 4
  %105 = alloca %struct.nk_vec2, align 4
  %106 = alloca %struct.nk_vec2, align 4
  %107 = alloca %struct.nk_colorf, align 4
  %108 = alloca %struct.nk_vec2, align 4
  %109 = alloca %struct.nk_vec2, align 4
  %110 = alloca %struct.nk_colorf, align 4
  %111 = alloca %struct.nk_vec2, align 4
  %112 = alloca %struct.nk_vec2, align 4
  %113 = alloca %struct.nk_colorf, align 4
  %114 = alloca i64, align 8
  %115 = alloca i64, align 8
  %116 = alloca i64, align 8
  %117 = alloca i64, align 8
  %118 = alloca ptr, align 8
  %119 = alloca ptr, align 8
  %120 = alloca float, align 4
  %121 = alloca float, align 4
  %122 = alloca %struct.nk_vec2, align 4
  %123 = alloca i64, align 8
  %124 = alloca %struct.nk_vec2, align 4
  %125 = alloca %struct.nk_vec2, align 4
  %126 = alloca %struct.nk_vec2, align 4
  %127 = alloca float, align 4
  %128 = alloca %struct.nk_vec2, align 4
  %129 = alloca %struct.nk_vec2, align 4
  %130 = alloca %struct.nk_vec2, align 4
  %131 = alloca %struct.nk_colorf, align 4
  %132 = alloca %struct.nk_vec2, align 4
  %133 = alloca %struct.nk_vec2, align 4
  %134 = alloca %struct.nk_colorf, align 4
  %135 = alloca %struct.nk_vec2, align 4
  %136 = alloca %struct.nk_vec2, align 4
  %137 = alloca %struct.nk_colorf, align 4
  %138 = alloca %struct.nk_vec2, align 4
  %139 = alloca %struct.nk_vec2, align 4
  %140 = alloca %struct.nk_colorf, align 4
  store i32 %3, ptr %8, align 1
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !11
  store float %5, ptr %13, align 4, !tbaa !13
  store i32 %6, ptr %14, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #8
  %141 = load ptr, ptr %9, align 8, !tbaa !5
  %142 = icmp ne ptr %141, null
  br i1 %142, label %143, label %144

143:                                              ; preds = %7
  br label %146

144:                                              ; preds = %7
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 9821, ptr noundef @__PRETTY_FUNCTION__.nk_draw_list_stroke_poly_line) #9
  unreachable

145:                                              ; No predecessors!
  br label %146

146:                                              ; preds = %145, %143
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  %148 = icmp ne ptr %147, null
  br i1 %148, label %149, label %152

149:                                              ; preds = %146
  %150 = load i32, ptr %11, align 4, !tbaa !9
  %151 = icmp ult i32 %150, 2
  br i1 %151, label %152, label %153

152:                                              ; preds = %149, %146
  store i32 1, ptr %19, align 4
  br label %1685

153:                                              ; preds = %149
  %154 = getelementptr inbounds %struct.nk_color, ptr %8, i32 0, i32 3
  %155 = load i8, ptr %154, align 1, !tbaa !17
  %156 = uitofp i8 %155 to float
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.nk_draw_list, ptr %157, i32 0, i32 2
  %159 = getelementptr inbounds %struct.nk_convert_config, ptr %158, i32 0, i32 0
  %160 = load float, ptr %159, align 8, !tbaa !19
  %161 = fmul float %156, %160
  %162 = fptoui float %161 to i8
  %163 = getelementptr inbounds %struct.nk_color, ptr %8, i32 0, i32 3
  store i8 %162, ptr %163, align 1, !tbaa !17
  %164 = load i32, ptr %11, align 4, !tbaa !9
  %165 = zext i32 %164 to i64
  store i64 %165, ptr %15, align 8, !tbaa !26
  %166 = load i32, ptr %12, align 4, !tbaa !11
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %172, label %168

168:                                              ; preds = %153
  %169 = load i32, ptr %11, align 4, !tbaa !9
  %170 = sub i32 %169, 1
  %171 = zext i32 %170 to i64
  store i64 %171, ptr %15, align 8, !tbaa !26
  br label %172

172:                                              ; preds = %168, %153
  %173 = load float, ptr %13, align 4, !tbaa !13
  %174 = fcmp ogt float %173, 1.000000e+00
  %175 = zext i1 %174 to i32
  store i32 %175, ptr %16, align 4, !tbaa !9
  %176 = getelementptr inbounds %struct.nk_color, ptr %8, i32 0, i32 3
  %177 = load i8, ptr %176, align 1, !tbaa !17
  %178 = uitofp i8 %177 to float
  %179 = load ptr, ptr %9, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.nk_draw_list, ptr %179, i32 0, i32 2
  %181 = getelementptr inbounds %struct.nk_convert_config, ptr %180, i32 0, i32 0
  %182 = load float, ptr %181, align 8, !tbaa !19
  %183 = fmul float %178, %182
  %184 = fptoui float %183 to i8
  %185 = getelementptr inbounds %struct.nk_color, ptr %8, i32 0, i32 3
  store i8 %184, ptr %185, align 1, !tbaa !17
  %186 = getelementptr inbounds %struct.nk_colorf, ptr %17, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 1 %8, i64 4, i1 false), !tbaa.struct !27
  %187 = load i32, ptr %20, align 1
  call void @nk_color_fv(ptr noundef %186, i32 %187)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %188 = getelementptr inbounds %struct.nk_colorf, ptr %18, i32 0, i32 3
  store float 0.000000e+00, ptr %188, align 4, !tbaa !30
  %189 = load i32, ptr %14, align 4, !tbaa !15
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %191, label %1472

191:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store float 1.000000e+00, ptr %21, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  store i64 0, ptr %22, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %192 = load ptr, ptr %9, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.nk_draw_list, ptr %192, i32 0, i32 7
  %194 = load i32, ptr %193, align 4, !tbaa !32
  %195 = zext i32 %194 to i64
  store i64 %195, ptr %24, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %196 = load i32, ptr %16, align 4, !tbaa !9
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %201

198:                                              ; preds = %191
  %199 = load i64, ptr %15, align 8, !tbaa !26
  %200 = mul i64 %199, 18
  br label %204

201:                                              ; preds = %191
  %202 = load i64, ptr %15, align 8, !tbaa !26
  %203 = mul i64 %202, 12
  br label %204

204:                                              ; preds = %201, %198
  %205 = phi i64 [ %200, %198 ], [ %203, %201 ]
  store i64 %205, ptr %25, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %206 = load i32, ptr %16, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %211

208:                                              ; preds = %204
  %209 = load i32, ptr %11, align 4, !tbaa !9
  %210 = mul i32 %209, 4
  br label %214

211:                                              ; preds = %204
  %212 = load i32, ptr %11, align 4, !tbaa !9
  %213 = mul i32 %212, 3
  br label %214

214:                                              ; preds = %211, %208
  %215 = phi i32 [ %210, %208 ], [ %213, %211 ]
  %216 = zext i32 %215 to i64
  store i64 %216, ptr %26, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = load i64, ptr %26, align 8, !tbaa !26
  %219 = call noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef %217, i64 noundef %218)
  store ptr %219, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = load i64, ptr %25, align 8, !tbaa !26
  %222 = call noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef %220, i64 noundef %221)
  store ptr %222, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %223 = load ptr, ptr %27, align 8, !tbaa !5
  %224 = icmp ne ptr %223, null
  br i1 %224, label %225, label %228

225:                                              ; preds = %214
  %226 = load ptr, ptr %28, align 8, !tbaa !5
  %227 = icmp ne ptr %226, null
  br i1 %227, label %229, label %228

228:                                              ; preds = %225, %214
  store i32 1, ptr %19, align 4
  br label %1469

229:                                              ; preds = %225
  %230 = load ptr, ptr %27, align 8, !tbaa !5
  %231 = load ptr, ptr %9, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.nk_draw_list, ptr %231, i32 0, i32 4
  %233 = load ptr, ptr %232, align 8, !tbaa !33
  %234 = getelementptr inbounds %struct.nk_buffer, ptr %233, i32 0, i32 3
  %235 = getelementptr inbounds %struct.nk_memory, ptr %234, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !34
  %237 = ptrtoint ptr %230 to i64
  %238 = ptrtoint ptr %236 to i64
  %239 = sub i64 %237, %238
  store i64 %239, ptr %23, align 8, !tbaa !26
  %240 = load ptr, ptr %9, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.nk_draw_list, ptr %240, i32 0, i32 4
  %242 = load ptr, ptr %241, align 8, !tbaa !33
  call void @nk_buffer_mark(ptr noundef %242, i32 noundef 0)
  %243 = load i32, ptr %16, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  %245 = zext i1 %244 to i64
  %246 = select i1 %244, i32 5, i32 3
  %247 = sext i32 %246 to i64
  %248 = mul i64 8, %247
  %249 = load i32, ptr %11, align 4, !tbaa !9
  %250 = zext i32 %249 to i64
  %251 = mul i64 %248, %250
  store i64 %251, ptr %29, align 8, !tbaa !26
  %252 = load ptr, ptr %9, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.nk_draw_list, ptr %252, i32 0, i32 4
  %254 = load ptr, ptr %253, align 8, !tbaa !33
  %255 = load i64, ptr %29, align 8, !tbaa !26
  %256 = call noundef ptr @_ZL15nk_buffer_allocP9nk_buffer25nk_buffer_allocation_typemm(ptr noundef %254, i32 noundef 0, i64 noundef %255, i64 noundef 4)
  store ptr %256, ptr %30, align 8, !tbaa !5
  %257 = load ptr, ptr %30, align 8, !tbaa !5
  %258 = icmp ne ptr %257, null
  br i1 %258, label %260, label %259

259:                                              ; preds = %229
  store i32 1, ptr %19, align 4
  br label %1469

260:                                              ; preds = %229
  %261 = load ptr, ptr %30, align 8, !tbaa !5
  %262 = load i32, ptr %11, align 4, !tbaa !9
  %263 = zext i32 %262 to i64
  %264 = getelementptr inbounds %struct.nk_vec2, ptr %261, i64 %263
  store ptr %264, ptr %31, align 8, !tbaa !5
  %265 = load ptr, ptr %9, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.nk_draw_list, ptr %265, i32 0, i32 4
  %267 = load ptr, ptr %266, align 8, !tbaa !33
  %268 = getelementptr inbounds %struct.nk_buffer, ptr %267, i32 0, i32 3
  %269 = getelementptr inbounds %struct.nk_memory, ptr %268, i32 0, i32 0
  %270 = load ptr, ptr %269, align 8, !tbaa !34
  %271 = load i64, ptr %23, align 8, !tbaa !26
  %272 = getelementptr inbounds i8, ptr %270, i64 %271
  store ptr %272, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !26
  br label %273

273:                                              ; preds = %351, %260
  %274 = load i64, ptr %22, align 8, !tbaa !26
  %275 = load i64, ptr %15, align 8, !tbaa !26
  %276 = icmp ult i64 %274, %275
  br i1 %276, label %277, label %354

277:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %278 = load i64, ptr %22, align 8, !tbaa !26
  %279 = add i64 %278, 1
  %280 = load i32, ptr %11, align 4, !tbaa !9
  %281 = zext i32 %280 to i64
  %282 = icmp eq i64 %279, %281
  br i1 %282, label %283, label %284

283:                                              ; preds = %277
  br label %287

284:                                              ; preds = %277
  %285 = load i64, ptr %22, align 8, !tbaa !26
  %286 = add i64 %285, 1
  br label %287

287:                                              ; preds = %284, %283
  %288 = phi i64 [ 0, %283 ], [ %286, %284 ]
  store i64 %288, ptr %32, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = load i64, ptr %32, align 8, !tbaa !26
  %291 = getelementptr inbounds %struct.nk_vec2, ptr %289, i64 %290
  %292 = getelementptr inbounds %struct.nk_vec2, ptr %291, i32 0, i32 0
  %293 = load float, ptr %292, align 4, !tbaa !39
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = load i64, ptr %22, align 8, !tbaa !26
  %296 = getelementptr inbounds %struct.nk_vec2, ptr %294, i64 %295
  %297 = getelementptr inbounds %struct.nk_vec2, ptr %296, i32 0, i32 0
  %298 = load float, ptr %297, align 4, !tbaa !39
  %299 = fsub float %293, %298
  %300 = load ptr, ptr %10, align 8, !tbaa !5
  %301 = load i64, ptr %32, align 8, !tbaa !26
  %302 = getelementptr inbounds %struct.nk_vec2, ptr %300, i64 %301
  %303 = getelementptr inbounds %struct.nk_vec2, ptr %302, i32 0, i32 1
  %304 = load float, ptr %303, align 4, !tbaa !40
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  %306 = load i64, ptr %22, align 8, !tbaa !26
  %307 = getelementptr inbounds %struct.nk_vec2, ptr %305, i64 %306
  %308 = getelementptr inbounds %struct.nk_vec2, ptr %307, i32 0, i32 1
  %309 = load float, ptr %308, align 4, !tbaa !40
  %310 = fsub float %304, %309
  %311 = call <2 x float> @nk_vec2(float noundef %299, float noundef %310)
  store <2 x float> %311, ptr %33, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %312 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 0
  %313 = load float, ptr %312, align 4, !tbaa !39
  %314 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 0
  %315 = load float, ptr %314, align 4, !tbaa !39
  %316 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 1
  %317 = load float, ptr %316, align 4, !tbaa !40
  %318 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 1
  %319 = load float, ptr %318, align 4, !tbaa !40
  %320 = fmul float %317, %319
  %321 = call float @llvm.fmuladd.f32(float %313, float %315, float %320)
  store float %321, ptr %34, align 4, !tbaa !13
  %322 = load float, ptr %34, align 4, !tbaa !13
  %323 = fcmp une float %322, 0.000000e+00
  br i1 %323, label %324, label %327

324:                                              ; preds = %287
  %325 = load float, ptr %34, align 4, !tbaa !13
  %326 = call noundef float @_ZL11nk_inv_sqrtf(float noundef %325)
  store float %326, ptr %34, align 4, !tbaa !13
  br label %328

327:                                              ; preds = %287
  store float 1.000000e+00, ptr %34, align 4, !tbaa !13
  br label %328

328:                                              ; preds = %327, %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %329 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 0
  %330 = load float, ptr %329, align 4, !tbaa !39
  %331 = load float, ptr %34, align 4, !tbaa !13
  %332 = fmul float %330, %331
  %333 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 1
  %334 = load float, ptr %333, align 4, !tbaa !40
  %335 = load float, ptr %34, align 4, !tbaa !13
  %336 = fmul float %334, %335
  %337 = call <2 x float> @nk_vec2(float noundef %332, float noundef %336)
  store <2 x float> %337, ptr %35, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %338 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 1
  %339 = load float, ptr %338, align 4, !tbaa !40
  %340 = load ptr, ptr %30, align 8, !tbaa !5
  %341 = load i64, ptr %22, align 8, !tbaa !26
  %342 = getelementptr inbounds %struct.nk_vec2, ptr %340, i64 %341
  %343 = getelementptr inbounds %struct.nk_vec2, ptr %342, i32 0, i32 0
  store float %339, ptr %343, align 4, !tbaa !39
  %344 = getelementptr inbounds %struct.nk_vec2, ptr %33, i32 0, i32 0
  %345 = load float, ptr %344, align 4, !tbaa !39
  %346 = fneg float %345
  %347 = load ptr, ptr %30, align 8, !tbaa !5
  %348 = load i64, ptr %22, align 8, !tbaa !26
  %349 = getelementptr inbounds %struct.nk_vec2, ptr %347, i64 %348
  %350 = getelementptr inbounds %struct.nk_vec2, ptr %349, i32 0, i32 1
  store float %346, ptr %350, align 4, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %351

351:                                              ; preds = %328
  %352 = load i64, ptr %22, align 8, !tbaa !26
  %353 = add i64 %352, 1
  store i64 %353, ptr %22, align 8, !tbaa !26
  br label %273, !llvm.loop !42

354:                                              ; preds = %273
  %355 = load i32, ptr %12, align 4, !tbaa !11
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %368, label %357

357:                                              ; preds = %354
  %358 = load ptr, ptr %30, align 8, !tbaa !5
  %359 = load i32, ptr %11, align 4, !tbaa !9
  %360 = sub i32 %359, 2
  %361 = zext i32 %360 to i64
  %362 = getelementptr inbounds %struct.nk_vec2, ptr %358, i64 %361
  %363 = load ptr, ptr %30, align 8, !tbaa !5
  %364 = load i32, ptr %11, align 4, !tbaa !9
  %365 = sub i32 %364, 1
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds %struct.nk_vec2, ptr %363, i64 %366
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %367, ptr align 4 %362, i64 8, i1 false), !tbaa.struct !41
  br label %368

368:                                              ; preds = %357, %354
  %369 = load i32, ptr %16, align 4, !tbaa !9
  %370 = icmp ne i32 %369, 0
  br i1 %370, label %816, label %371

371:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %372 = load i32, ptr %12, align 4, !tbaa !11
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %526, label %374

374:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %375 = load ptr, ptr %10, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.nk_vec2, ptr %375, i64 0
  %377 = getelementptr inbounds %struct.nk_vec2, ptr %376, i32 0, i32 0
  %378 = load float, ptr %377, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %379 = load ptr, ptr %30, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.nk_vec2, ptr %379, i64 0
  %381 = getelementptr inbounds %struct.nk_vec2, ptr %380, i32 0, i32 0
  %382 = load float, ptr %381, align 4, !tbaa !39
  %383 = fmul float %382, 1.000000e+00
  %384 = load ptr, ptr %30, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.nk_vec2, ptr %384, i64 0
  %386 = getelementptr inbounds %struct.nk_vec2, ptr %385, i32 0, i32 1
  %387 = load float, ptr %386, align 4, !tbaa !40
  %388 = fmul float %387, 1.000000e+00
  %389 = call <2 x float> @nk_vec2(float noundef %383, float noundef %388)
  store <2 x float> %389, ptr %40, align 4
  %390 = getelementptr inbounds %struct.nk_vec2, ptr %40, i32 0, i32 0
  %391 = load float, ptr %390, align 4, !tbaa !39
  %392 = fadd float %378, %391
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.nk_vec2, ptr %393, i64 0
  %395 = getelementptr inbounds %struct.nk_vec2, ptr %394, i32 0, i32 1
  %396 = load float, ptr %395, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.nk_vec2, ptr %397, i64 0
  %399 = getelementptr inbounds %struct.nk_vec2, ptr %398, i32 0, i32 0
  %400 = load float, ptr %399, align 4, !tbaa !39
  %401 = fmul float %400, 1.000000e+00
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.nk_vec2, ptr %402, i64 0
  %404 = getelementptr inbounds %struct.nk_vec2, ptr %403, i32 0, i32 1
  %405 = load float, ptr %404, align 4, !tbaa !40
  %406 = fmul float %405, 1.000000e+00
  %407 = call <2 x float> @nk_vec2(float noundef %401, float noundef %406)
  store <2 x float> %407, ptr %41, align 4
  %408 = getelementptr inbounds %struct.nk_vec2, ptr %41, i32 0, i32 1
  %409 = load float, ptr %408, align 4, !tbaa !40
  %410 = fadd float %396, %409
  %411 = call <2 x float> @nk_vec2(float noundef %392, float noundef %410)
  store <2 x float> %411, ptr %39, align 4
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.nk_vec2, ptr %412, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %413, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.nk_vec2, ptr %414, i64 0
  %416 = getelementptr inbounds %struct.nk_vec2, ptr %415, i32 0, i32 0
  %417 = load float, ptr %416, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.nk_vec2, ptr %418, i64 0
  %420 = getelementptr inbounds %struct.nk_vec2, ptr %419, i32 0, i32 0
  %421 = load float, ptr %420, align 4, !tbaa !39
  %422 = fmul float %421, 1.000000e+00
  %423 = load ptr, ptr %30, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.nk_vec2, ptr %423, i64 0
  %425 = getelementptr inbounds %struct.nk_vec2, ptr %424, i32 0, i32 1
  %426 = load float, ptr %425, align 4, !tbaa !40
  %427 = fmul float %426, 1.000000e+00
  %428 = call <2 x float> @nk_vec2(float noundef %422, float noundef %427)
  store <2 x float> %428, ptr %43, align 4
  %429 = getelementptr inbounds %struct.nk_vec2, ptr %43, i32 0, i32 0
  %430 = load float, ptr %429, align 4, !tbaa !39
  %431 = fsub float %417, %430
  %432 = load ptr, ptr %10, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.nk_vec2, ptr %432, i64 0
  %434 = getelementptr inbounds %struct.nk_vec2, ptr %433, i32 0, i32 1
  %435 = load float, ptr %434, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %436 = load ptr, ptr %30, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.nk_vec2, ptr %436, i64 0
  %438 = getelementptr inbounds %struct.nk_vec2, ptr %437, i32 0, i32 0
  %439 = load float, ptr %438, align 4, !tbaa !39
  %440 = fmul float %439, 1.000000e+00
  %441 = load ptr, ptr %30, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.nk_vec2, ptr %441, i64 0
  %443 = getelementptr inbounds %struct.nk_vec2, ptr %442, i32 0, i32 1
  %444 = load float, ptr %443, align 4, !tbaa !40
  %445 = fmul float %444, 1.000000e+00
  %446 = call <2 x float> @nk_vec2(float noundef %440, float noundef %445)
  store <2 x float> %446, ptr %44, align 4
  %447 = getelementptr inbounds %struct.nk_vec2, ptr %44, i32 0, i32 1
  %448 = load float, ptr %447, align 4, !tbaa !40
  %449 = fsub float %435, %448
  %450 = call <2 x float> @nk_vec2(float noundef %431, float noundef %449)
  store <2 x float> %450, ptr %42, align 4
  %451 = load ptr, ptr %31, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.nk_vec2, ptr %451, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %452, ptr align 4 %42, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %453 = load ptr, ptr %30, align 8, !tbaa !5
  %454 = load i32, ptr %11, align 4, !tbaa !9
  %455 = sub i32 %454, 1
  %456 = zext i32 %455 to i64
  %457 = getelementptr inbounds %struct.nk_vec2, ptr %453, i64 %456
  %458 = getelementptr inbounds %struct.nk_vec2, ptr %457, i32 0, i32 0
  %459 = load float, ptr %458, align 4, !tbaa !39
  %460 = fmul float %459, 1.000000e+00
  %461 = load ptr, ptr %30, align 8, !tbaa !5
  %462 = load i32, ptr %11, align 4, !tbaa !9
  %463 = sub i32 %462, 1
  %464 = zext i32 %463 to i64
  %465 = getelementptr inbounds %struct.nk_vec2, ptr %461, i64 %464
  %466 = getelementptr inbounds %struct.nk_vec2, ptr %465, i32 0, i32 1
  %467 = load float, ptr %466, align 4, !tbaa !40
  %468 = fmul float %467, 1.000000e+00
  %469 = call <2 x float> @nk_vec2(float noundef %460, float noundef %468)
  store <2 x float> %469, ptr %45, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %470 = load ptr, ptr %10, align 8, !tbaa !5
  %471 = load i32, ptr %11, align 4, !tbaa !9
  %472 = sub i32 %471, 1
  %473 = zext i32 %472 to i64
  %474 = getelementptr inbounds %struct.nk_vec2, ptr %470, i64 %473
  %475 = getelementptr inbounds %struct.nk_vec2, ptr %474, i32 0, i32 0
  %476 = load float, ptr %475, align 4, !tbaa !39
  %477 = getelementptr inbounds %struct.nk_vec2, ptr %38, i32 0, i32 0
  %478 = load float, ptr %477, align 4, !tbaa !39
  %479 = fadd float %476, %478
  %480 = load ptr, ptr %10, align 8, !tbaa !5
  %481 = load i32, ptr %11, align 4, !tbaa !9
  %482 = sub i32 %481, 1
  %483 = zext i32 %482 to i64
  %484 = getelementptr inbounds %struct.nk_vec2, ptr %480, i64 %483
  %485 = getelementptr inbounds %struct.nk_vec2, ptr %484, i32 0, i32 1
  %486 = load float, ptr %485, align 4, !tbaa !40
  %487 = getelementptr inbounds %struct.nk_vec2, ptr %38, i32 0, i32 1
  %488 = load float, ptr %487, align 4, !tbaa !40
  %489 = fadd float %486, %488
  %490 = call <2 x float> @nk_vec2(float noundef %479, float noundef %489)
  store <2 x float> %490, ptr %46, align 4
  %491 = load ptr, ptr %31, align 8, !tbaa !5
  %492 = load i32, ptr %11, align 4, !tbaa !9
  %493 = sub i32 %492, 1
  %494 = mul i32 %493, 2
  %495 = add i32 %494, 0
  %496 = zext i32 %495 to i64
  %497 = getelementptr inbounds %struct.nk_vec2, ptr %491, i64 %496
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %497, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %498 = load ptr, ptr %10, align 8, !tbaa !5
  %499 = load i32, ptr %11, align 4, !tbaa !9
  %500 = sub i32 %499, 1
  %501 = zext i32 %500 to i64
  %502 = getelementptr inbounds %struct.nk_vec2, ptr %498, i64 %501
  %503 = getelementptr inbounds %struct.nk_vec2, ptr %502, i32 0, i32 0
  %504 = load float, ptr %503, align 4, !tbaa !39
  %505 = getelementptr inbounds %struct.nk_vec2, ptr %38, i32 0, i32 0
  %506 = load float, ptr %505, align 4, !tbaa !39
  %507 = fsub float %504, %506
  %508 = load ptr, ptr %10, align 8, !tbaa !5
  %509 = load i32, ptr %11, align 4, !tbaa !9
  %510 = sub i32 %509, 1
  %511 = zext i32 %510 to i64
  %512 = getelementptr inbounds %struct.nk_vec2, ptr %508, i64 %511
  %513 = getelementptr inbounds %struct.nk_vec2, ptr %512, i32 0, i32 1
  %514 = load float, ptr %513, align 4, !tbaa !40
  %515 = getelementptr inbounds %struct.nk_vec2, ptr %38, i32 0, i32 1
  %516 = load float, ptr %515, align 4, !tbaa !40
  %517 = fsub float %514, %516
  %518 = call <2 x float> @nk_vec2(float noundef %507, float noundef %517)
  store <2 x float> %518, ptr %47, align 4
  %519 = load ptr, ptr %31, align 8, !tbaa !5
  %520 = load i32, ptr %11, align 4, !tbaa !9
  %521 = sub i32 %520, 1
  %522 = mul i32 %521, 2
  %523 = add i32 %522, 1
  %524 = zext i32 %523 to i64
  %525 = getelementptr inbounds %struct.nk_vec2, ptr %519, i64 %524
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %525, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %526

526:                                              ; preds = %374, %371
  %527 = load i64, ptr %24, align 8, !tbaa !26
  store i64 %527, ptr %36, align 8, !tbaa !26
  store i64 0, ptr %22, align 8, !tbaa !26
  br label %528

528:                                              ; preds = %755, %526
  %529 = load i64, ptr %22, align 8, !tbaa !26
  %530 = load i64, ptr %15, align 8, !tbaa !26
  %531 = icmp ult i64 %529, %530
  br i1 %531, label %532, label %758

532:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %533 = load i64, ptr %22, align 8, !tbaa !26
  %534 = add i64 %533, 1
  %535 = load i32, ptr %11, align 4, !tbaa !9
  %536 = zext i32 %535 to i64
  %537 = icmp eq i64 %534, %536
  br i1 %537, label %538, label %539

538:                                              ; preds = %532
  br label %542

539:                                              ; preds = %532
  %540 = load i64, ptr %22, align 8, !tbaa !26
  %541 = add i64 %540, 1
  br label %542

542:                                              ; preds = %539, %538
  %543 = phi i64 [ 0, %538 ], [ %541, %539 ]
  store i64 %543, ptr %50, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %544 = load i64, ptr %22, align 8, !tbaa !26
  %545 = add i64 %544, 1
  %546 = load i32, ptr %11, align 4, !tbaa !9
  %547 = zext i32 %546 to i64
  %548 = icmp eq i64 %545, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %542
  %550 = load i64, ptr %24, align 8, !tbaa !26
  br label %554

551:                                              ; preds = %542
  %552 = load i64, ptr %36, align 8, !tbaa !26
  %553 = add i64 %552, 3
  br label %554

554:                                              ; preds = %551, %549
  %555 = phi i64 [ %550, %549 ], [ %553, %551 ]
  store i64 %555, ptr %51, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %556 = load ptr, ptr %30, align 8, !tbaa !5
  %557 = load i64, ptr %22, align 8, !tbaa !26
  %558 = getelementptr inbounds %struct.nk_vec2, ptr %556, i64 %557
  %559 = getelementptr inbounds %struct.nk_vec2, ptr %558, i32 0, i32 0
  %560 = load float, ptr %559, align 4, !tbaa !39
  %561 = load ptr, ptr %30, align 8, !tbaa !5
  %562 = load i64, ptr %50, align 8, !tbaa !26
  %563 = getelementptr inbounds %struct.nk_vec2, ptr %561, i64 %562
  %564 = getelementptr inbounds %struct.nk_vec2, ptr %563, i32 0, i32 0
  %565 = load float, ptr %564, align 4, !tbaa !39
  %566 = fadd float %560, %565
  %567 = load ptr, ptr %30, align 8, !tbaa !5
  %568 = load i64, ptr %22, align 8, !tbaa !26
  %569 = getelementptr inbounds %struct.nk_vec2, ptr %567, i64 %568
  %570 = getelementptr inbounds %struct.nk_vec2, ptr %569, i32 0, i32 1
  %571 = load float, ptr %570, align 4, !tbaa !40
  %572 = load ptr, ptr %30, align 8, !tbaa !5
  %573 = load i64, ptr %50, align 8, !tbaa !26
  %574 = getelementptr inbounds %struct.nk_vec2, ptr %572, i64 %573
  %575 = getelementptr inbounds %struct.nk_vec2, ptr %574, i32 0, i32 1
  %576 = load float, ptr %575, align 4, !tbaa !40
  %577 = fadd float %571, %576
  %578 = call <2 x float> @nk_vec2(float noundef %566, float noundef %577)
  store <2 x float> %578, ptr %53, align 4
  %579 = getelementptr inbounds %struct.nk_vec2, ptr %53, i32 0, i32 0
  %580 = load float, ptr %579, align 4, !tbaa !39
  %581 = fmul float %580, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %582 = load ptr, ptr %30, align 8, !tbaa !5
  %583 = load i64, ptr %22, align 8, !tbaa !26
  %584 = getelementptr inbounds %struct.nk_vec2, ptr %582, i64 %583
  %585 = getelementptr inbounds %struct.nk_vec2, ptr %584, i32 0, i32 0
  %586 = load float, ptr %585, align 4, !tbaa !39
  %587 = load ptr, ptr %30, align 8, !tbaa !5
  %588 = load i64, ptr %50, align 8, !tbaa !26
  %589 = getelementptr inbounds %struct.nk_vec2, ptr %587, i64 %588
  %590 = getelementptr inbounds %struct.nk_vec2, ptr %589, i32 0, i32 0
  %591 = load float, ptr %590, align 4, !tbaa !39
  %592 = fadd float %586, %591
  %593 = load ptr, ptr %30, align 8, !tbaa !5
  %594 = load i64, ptr %22, align 8, !tbaa !26
  %595 = getelementptr inbounds %struct.nk_vec2, ptr %593, i64 %594
  %596 = getelementptr inbounds %struct.nk_vec2, ptr %595, i32 0, i32 1
  %597 = load float, ptr %596, align 4, !tbaa !40
  %598 = load ptr, ptr %30, align 8, !tbaa !5
  %599 = load i64, ptr %50, align 8, !tbaa !26
  %600 = getelementptr inbounds %struct.nk_vec2, ptr %598, i64 %599
  %601 = getelementptr inbounds %struct.nk_vec2, ptr %600, i32 0, i32 1
  %602 = load float, ptr %601, align 4, !tbaa !40
  %603 = fadd float %597, %602
  %604 = call <2 x float> @nk_vec2(float noundef %592, float noundef %603)
  store <2 x float> %604, ptr %54, align 4
  %605 = getelementptr inbounds %struct.nk_vec2, ptr %54, i32 0, i32 1
  %606 = load float, ptr %605, align 4, !tbaa !40
  %607 = fmul float %606, 5.000000e-01
  %608 = call <2 x float> @nk_vec2(float noundef %581, float noundef %607)
  store <2 x float> %608, ptr %52, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %52, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  %609 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %610 = load float, ptr %609, align 4, !tbaa !39
  %611 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %612 = load float, ptr %611, align 4, !tbaa !39
  %613 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %614 = load float, ptr %613, align 4, !tbaa !40
  %615 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %616 = load float, ptr %615, align 4, !tbaa !40
  %617 = fmul float %614, %616
  %618 = call float @llvm.fmuladd.f32(float %610, float %612, float %617)
  store float %618, ptr %49, align 4, !tbaa !13
  %619 = load float, ptr %49, align 4, !tbaa !13
  %620 = fcmp ogt float %619, 0x3EB0C6F7A0000000
  br i1 %620, label %621, label %640

621:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  %622 = load float, ptr %49, align 4, !tbaa !13
  %623 = fdiv float 1.000000e+00, %622
  store float %623, ptr %55, align 4, !tbaa !13
  %624 = load float, ptr %55, align 4, !tbaa !13
  %625 = fcmp olt float 1.000000e+02, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %621
  br label %629

627:                                              ; preds = %621
  %628 = load float, ptr %55, align 4, !tbaa !13
  br label %629

629:                                              ; preds = %627, %626
  %630 = phi float [ 1.000000e+02, %626 ], [ %628, %627 ]
  store float %630, ptr %55, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %631 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %632 = load float, ptr %631, align 4, !tbaa !39
  %633 = load float, ptr %55, align 4, !tbaa !13
  %634 = fmul float %632, %633
  %635 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %636 = load float, ptr %635, align 4, !tbaa !40
  %637 = load float, ptr %55, align 4, !tbaa !13
  %638 = fmul float %636, %637
  %639 = call <2 x float> @nk_vec2(float noundef %634, float noundef %638)
  store <2 x float> %639, ptr %56, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %56, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %640

640:                                              ; preds = %629, %554
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %641 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %642 = load float, ptr %641, align 4, !tbaa !39
  %643 = fmul float %642, 1.000000e+00
  %644 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %645 = load float, ptr %644, align 4, !tbaa !40
  %646 = fmul float %645, 1.000000e+00
  %647 = call <2 x float> @nk_vec2(float noundef %643, float noundef %646)
  store <2 x float> %647, ptr %57, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %57, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %648 = load ptr, ptr %10, align 8, !tbaa !5
  %649 = load i64, ptr %50, align 8, !tbaa !26
  %650 = getelementptr inbounds %struct.nk_vec2, ptr %648, i64 %649
  %651 = getelementptr inbounds %struct.nk_vec2, ptr %650, i32 0, i32 0
  %652 = load float, ptr %651, align 4, !tbaa !39
  %653 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %654 = load float, ptr %653, align 4, !tbaa !39
  %655 = fadd float %652, %654
  %656 = load ptr, ptr %10, align 8, !tbaa !5
  %657 = load i64, ptr %50, align 8, !tbaa !26
  %658 = getelementptr inbounds %struct.nk_vec2, ptr %656, i64 %657
  %659 = getelementptr inbounds %struct.nk_vec2, ptr %658, i32 0, i32 1
  %660 = load float, ptr %659, align 4, !tbaa !40
  %661 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %662 = load float, ptr %661, align 4, !tbaa !40
  %663 = fadd float %660, %662
  %664 = call <2 x float> @nk_vec2(float noundef %655, float noundef %663)
  store <2 x float> %664, ptr %58, align 4
  %665 = load ptr, ptr %31, align 8, !tbaa !5
  %666 = load i64, ptr %50, align 8, !tbaa !26
  %667 = mul i64 %666, 2
  %668 = add i64 %667, 0
  %669 = getelementptr inbounds %struct.nk_vec2, ptr %665, i64 %668
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %669, ptr align 4 %58, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %670 = load ptr, ptr %10, align 8, !tbaa !5
  %671 = load i64, ptr %50, align 8, !tbaa !26
  %672 = getelementptr inbounds %struct.nk_vec2, ptr %670, i64 %671
  %673 = getelementptr inbounds %struct.nk_vec2, ptr %672, i32 0, i32 0
  %674 = load float, ptr %673, align 4, !tbaa !39
  %675 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 0
  %676 = load float, ptr %675, align 4, !tbaa !39
  %677 = fsub float %674, %676
  %678 = load ptr, ptr %10, align 8, !tbaa !5
  %679 = load i64, ptr %50, align 8, !tbaa !26
  %680 = getelementptr inbounds %struct.nk_vec2, ptr %678, i64 %679
  %681 = getelementptr inbounds %struct.nk_vec2, ptr %680, i32 0, i32 1
  %682 = load float, ptr %681, align 4, !tbaa !40
  %683 = getelementptr inbounds %struct.nk_vec2, ptr %48, i32 0, i32 1
  %684 = load float, ptr %683, align 4, !tbaa !40
  %685 = fsub float %682, %684
  %686 = call <2 x float> @nk_vec2(float noundef %677, float noundef %685)
  store <2 x float> %686, ptr %59, align 4
  %687 = load ptr, ptr %31, align 8, !tbaa !5
  %688 = load i64, ptr %50, align 8, !tbaa !26
  %689 = mul i64 %688, 2
  %690 = add i64 %689, 1
  %691 = getelementptr inbounds %struct.nk_vec2, ptr %687, i64 %690
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %691, ptr align 4 %59, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  %692 = load i64, ptr %51, align 8, !tbaa !26
  %693 = add i64 %692, 0
  %694 = trunc i64 %693 to i16
  %695 = load ptr, ptr %28, align 8, !tbaa !5
  %696 = getelementptr inbounds i16, ptr %695, i64 0
  store i16 %694, ptr %696, align 2, !tbaa !44
  %697 = load i64, ptr %36, align 8, !tbaa !26
  %698 = add i64 %697, 0
  %699 = trunc i64 %698 to i16
  %700 = load ptr, ptr %28, align 8, !tbaa !5
  %701 = getelementptr inbounds i16, ptr %700, i64 1
  store i16 %699, ptr %701, align 2, !tbaa !44
  %702 = load i64, ptr %36, align 8, !tbaa !26
  %703 = add i64 %702, 2
  %704 = trunc i64 %703 to i16
  %705 = load ptr, ptr %28, align 8, !tbaa !5
  %706 = getelementptr inbounds i16, ptr %705, i64 2
  store i16 %704, ptr %706, align 2, !tbaa !44
  %707 = load i64, ptr %36, align 8, !tbaa !26
  %708 = add i64 %707, 2
  %709 = trunc i64 %708 to i16
  %710 = load ptr, ptr %28, align 8, !tbaa !5
  %711 = getelementptr inbounds i16, ptr %710, i64 3
  store i16 %709, ptr %711, align 2, !tbaa !44
  %712 = load i64, ptr %51, align 8, !tbaa !26
  %713 = add i64 %712, 2
  %714 = trunc i64 %713 to i16
  %715 = load ptr, ptr %28, align 8, !tbaa !5
  %716 = getelementptr inbounds i16, ptr %715, i64 4
  store i16 %714, ptr %716, align 2, !tbaa !44
  %717 = load i64, ptr %51, align 8, !tbaa !26
  %718 = add i64 %717, 0
  %719 = trunc i64 %718 to i16
  %720 = load ptr, ptr %28, align 8, !tbaa !5
  %721 = getelementptr inbounds i16, ptr %720, i64 5
  store i16 %719, ptr %721, align 2, !tbaa !44
  %722 = load i64, ptr %51, align 8, !tbaa !26
  %723 = add i64 %722, 1
  %724 = trunc i64 %723 to i16
  %725 = load ptr, ptr %28, align 8, !tbaa !5
  %726 = getelementptr inbounds i16, ptr %725, i64 6
  store i16 %724, ptr %726, align 2, !tbaa !44
  %727 = load i64, ptr %36, align 8, !tbaa !26
  %728 = add i64 %727, 1
  %729 = trunc i64 %728 to i16
  %730 = load ptr, ptr %28, align 8, !tbaa !5
  %731 = getelementptr inbounds i16, ptr %730, i64 7
  store i16 %729, ptr %731, align 2, !tbaa !44
  %732 = load i64, ptr %36, align 8, !tbaa !26
  %733 = add i64 %732, 0
  %734 = trunc i64 %733 to i16
  %735 = load ptr, ptr %28, align 8, !tbaa !5
  %736 = getelementptr inbounds i16, ptr %735, i64 8
  store i16 %734, ptr %736, align 2, !tbaa !44
  %737 = load i64, ptr %36, align 8, !tbaa !26
  %738 = add i64 %737, 0
  %739 = trunc i64 %738 to i16
  %740 = load ptr, ptr %28, align 8, !tbaa !5
  %741 = getelementptr inbounds i16, ptr %740, i64 9
  store i16 %739, ptr %741, align 2, !tbaa !44
  %742 = load i64, ptr %51, align 8, !tbaa !26
  %743 = add i64 %742, 0
  %744 = trunc i64 %743 to i16
  %745 = load ptr, ptr %28, align 8, !tbaa !5
  %746 = getelementptr inbounds i16, ptr %745, i64 10
  store i16 %744, ptr %746, align 2, !tbaa !44
  %747 = load i64, ptr %51, align 8, !tbaa !26
  %748 = add i64 %747, 1
  %749 = trunc i64 %748 to i16
  %750 = load ptr, ptr %28, align 8, !tbaa !5
  %751 = getelementptr inbounds i16, ptr %750, i64 11
  store i16 %749, ptr %751, align 2, !tbaa !44
  %752 = load ptr, ptr %28, align 8, !tbaa !5
  %753 = getelementptr inbounds i16, ptr %752, i64 12
  store ptr %753, ptr %28, align 8, !tbaa !5
  %754 = load i64, ptr %51, align 8, !tbaa !26
  store i64 %754, ptr %36, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  br label %755

755:                                              ; preds = %640
  %756 = load i64, ptr %22, align 8, !tbaa !26
  %757 = add i64 %756, 1
  store i64 %757, ptr %22, align 8, !tbaa !26
  br label %528, !llvm.loop !46

758:                                              ; preds = %528
  store i64 0, ptr %37, align 8, !tbaa !26
  br label %759

759:                                              ; preds = %812, %758
  %760 = load i64, ptr %37, align 8, !tbaa !26
  %761 = load i32, ptr %11, align 4, !tbaa !9
  %762 = zext i32 %761 to i64
  %763 = icmp ult i64 %760, %762
  br i1 %763, label %764, label %815

764:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %765 = load ptr, ptr %9, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.nk_draw_list, ptr %765, i32 0, i32 2
  %767 = getelementptr inbounds %struct.nk_convert_config, ptr %766, i32 0, i32 6
  %768 = getelementptr inbounds %struct.nk_draw_null_texture, ptr %767, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 8 %768, i64 8, i1 false), !tbaa.struct !41
  %769 = load ptr, ptr %27, align 8, !tbaa !5
  %770 = load ptr, ptr %9, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.nk_draw_list, ptr %770, i32 0, i32 2
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = load i64, ptr %37, align 8, !tbaa !26
  %774 = getelementptr inbounds %struct.nk_vec2, ptr %772, i64 %773
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %61, ptr align 4 %774, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %60, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %63, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %775 = load <2 x float>, ptr %61, align 4
  %776 = load <2 x float>, ptr %62, align 4
  %777 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 0
  %778 = load <2 x float>, ptr %777, align 4
  %779 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %63, i32 0, i32 1
  %780 = load <2 x float>, ptr %779, align 4
  %781 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %769, ptr noundef %771, <2 x float> %775, <2 x float> %776, <2 x float> %778, <2 x float> %780)
  store ptr %781, ptr %27, align 8, !tbaa !5
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = load ptr, ptr %9, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.nk_draw_list, ptr %783, i32 0, i32 2
  %785 = load ptr, ptr %31, align 8, !tbaa !5
  %786 = load i64, ptr %37, align 8, !tbaa !26
  %787 = mul i64 %786, 2
  %788 = add i64 %787, 0
  %789 = getelementptr inbounds %struct.nk_vec2, ptr %785, i64 %788
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %789, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %60, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %18, i64 16, i1 false), !tbaa.struct !29
  %790 = load <2 x float>, ptr %64, align 4
  %791 = load <2 x float>, ptr %65, align 4
  %792 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 0
  %793 = load <2 x float>, ptr %792, align 4
  %794 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %66, i32 0, i32 1
  %795 = load <2 x float>, ptr %794, align 4
  %796 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %782, ptr noundef %784, <2 x float> %790, <2 x float> %791, <2 x float> %793, <2 x float> %795)
  store ptr %796, ptr %27, align 8, !tbaa !5
  %797 = load ptr, ptr %27, align 8, !tbaa !5
  %798 = load ptr, ptr %9, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.nk_draw_list, ptr %798, i32 0, i32 2
  %800 = load ptr, ptr %31, align 8, !tbaa !5
  %801 = load i64, ptr %37, align 8, !tbaa !26
  %802 = mul i64 %801, 2
  %803 = add i64 %802, 1
  %804 = getelementptr inbounds %struct.nk_vec2, ptr %800, i64 %803
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %67, ptr align 4 %804, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %60, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %18, i64 16, i1 false), !tbaa.struct !29
  %805 = load <2 x float>, ptr %67, align 4
  %806 = load <2 x float>, ptr %68, align 4
  %807 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %69, i32 0, i32 0
  %808 = load <2 x float>, ptr %807, align 4
  %809 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %69, i32 0, i32 1
  %810 = load <2 x float>, ptr %809, align 4
  %811 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %797, ptr noundef %799, <2 x float> %805, <2 x float> %806, <2 x float> %808, <2 x float> %810)
  store ptr %811, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %812

812:                                              ; preds = %764
  %813 = load i64, ptr %37, align 8, !tbaa !26
  %814 = add i64 %813, 1
  store i64 %814, ptr %37, align 8, !tbaa !26
  br label %759, !llvm.loop !47

815:                                              ; preds = %759
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %1465

816:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #8
  %817 = load float, ptr %13, align 4, !tbaa !13
  %818 = fsub float %817, 1.000000e+00
  %819 = fmul float %818, 5.000000e-01
  store float %819, ptr %72, align 4, !tbaa !13
  %820 = load i32, ptr %12, align 4, !tbaa !11
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %1071, label %822

822:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %823 = load ptr, ptr %30, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.nk_vec2, ptr %823, i64 0
  %825 = getelementptr inbounds %struct.nk_vec2, ptr %824, i32 0, i32 0
  %826 = load float, ptr %825, align 4, !tbaa !39
  %827 = load float, ptr %72, align 4, !tbaa !13
  %828 = fadd float %827, 1.000000e+00
  %829 = fmul float %826, %828
  %830 = load ptr, ptr %30, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.nk_vec2, ptr %830, i64 0
  %832 = getelementptr inbounds %struct.nk_vec2, ptr %831, i32 0, i32 1
  %833 = load float, ptr %832, align 4, !tbaa !40
  %834 = load float, ptr %72, align 4, !tbaa !13
  %835 = fadd float %834, 1.000000e+00
  %836 = fmul float %833, %835
  %837 = call <2 x float> @nk_vec2(float noundef %829, float noundef %836)
  store <2 x float> %837, ptr %73, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %838 = load ptr, ptr %30, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.nk_vec2, ptr %838, i64 0
  %840 = getelementptr inbounds %struct.nk_vec2, ptr %839, i32 0, i32 0
  %841 = load float, ptr %840, align 4, !tbaa !39
  %842 = load float, ptr %72, align 4, !tbaa !13
  %843 = fmul float %841, %842
  %844 = load ptr, ptr %30, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.nk_vec2, ptr %844, i64 0
  %846 = getelementptr inbounds %struct.nk_vec2, ptr %845, i32 0, i32 1
  %847 = load float, ptr %846, align 4, !tbaa !40
  %848 = load float, ptr %72, align 4, !tbaa !13
  %849 = fmul float %847, %848
  %850 = call <2 x float> @nk_vec2(float noundef %843, float noundef %849)
  store <2 x float> %850, ptr %74, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %851 = load ptr, ptr %10, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.nk_vec2, ptr %851, i64 0
  %853 = getelementptr inbounds %struct.nk_vec2, ptr %852, i32 0, i32 0
  %854 = load float, ptr %853, align 4, !tbaa !39
  %855 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 0
  %856 = load float, ptr %855, align 4, !tbaa !39
  %857 = fadd float %854, %856
  %858 = load ptr, ptr %10, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.nk_vec2, ptr %858, i64 0
  %860 = getelementptr inbounds %struct.nk_vec2, ptr %859, i32 0, i32 1
  %861 = load float, ptr %860, align 4, !tbaa !40
  %862 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 1
  %863 = load float, ptr %862, align 4, !tbaa !40
  %864 = fadd float %861, %863
  %865 = call <2 x float> @nk_vec2(float noundef %857, float noundef %864)
  store <2 x float> %865, ptr %75, align 4
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.nk_vec2, ptr %866, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %867, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %868 = load ptr, ptr %10, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.nk_vec2, ptr %868, i64 0
  %870 = getelementptr inbounds %struct.nk_vec2, ptr %869, i32 0, i32 0
  %871 = load float, ptr %870, align 4, !tbaa !39
  %872 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 0
  %873 = load float, ptr %872, align 4, !tbaa !39
  %874 = fadd float %871, %873
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.nk_vec2, ptr %875, i64 0
  %877 = getelementptr inbounds %struct.nk_vec2, ptr %876, i32 0, i32 1
  %878 = load float, ptr %877, align 4, !tbaa !40
  %879 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 1
  %880 = load float, ptr %879, align 4, !tbaa !40
  %881 = fadd float %878, %880
  %882 = call <2 x float> @nk_vec2(float noundef %874, float noundef %881)
  store <2 x float> %882, ptr %76, align 4
  %883 = load ptr, ptr %31, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.nk_vec2, ptr %883, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %884, ptr align 4 %76, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %885 = load ptr, ptr %10, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.nk_vec2, ptr %885, i64 0
  %887 = getelementptr inbounds %struct.nk_vec2, ptr %886, i32 0, i32 0
  %888 = load float, ptr %887, align 4, !tbaa !39
  %889 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 0
  %890 = load float, ptr %889, align 4, !tbaa !39
  %891 = fsub float %888, %890
  %892 = load ptr, ptr %10, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.nk_vec2, ptr %892, i64 0
  %894 = getelementptr inbounds %struct.nk_vec2, ptr %893, i32 0, i32 1
  %895 = load float, ptr %894, align 4, !tbaa !40
  %896 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 1
  %897 = load float, ptr %896, align 4, !tbaa !40
  %898 = fsub float %895, %897
  %899 = call <2 x float> @nk_vec2(float noundef %891, float noundef %898)
  store <2 x float> %899, ptr %77, align 4
  %900 = load ptr, ptr %31, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.nk_vec2, ptr %900, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %901, ptr align 4 %77, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %902 = load ptr, ptr %10, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.nk_vec2, ptr %902, i64 0
  %904 = getelementptr inbounds %struct.nk_vec2, ptr %903, i32 0, i32 0
  %905 = load float, ptr %904, align 4, !tbaa !39
  %906 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 0
  %907 = load float, ptr %906, align 4, !tbaa !39
  %908 = fsub float %905, %907
  %909 = load ptr, ptr %10, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.nk_vec2, ptr %909, i64 0
  %911 = getelementptr inbounds %struct.nk_vec2, ptr %910, i32 0, i32 1
  %912 = load float, ptr %911, align 4, !tbaa !40
  %913 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 1
  %914 = load float, ptr %913, align 4, !tbaa !40
  %915 = fsub float %912, %914
  %916 = call <2 x float> @nk_vec2(float noundef %908, float noundef %915)
  store <2 x float> %916, ptr %78, align 4
  %917 = load ptr, ptr %31, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.nk_vec2, ptr %917, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %918, ptr align 4 %78, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %919 = load ptr, ptr %30, align 8, !tbaa !5
  %920 = load i32, ptr %11, align 4, !tbaa !9
  %921 = sub i32 %920, 1
  %922 = zext i32 %921 to i64
  %923 = getelementptr inbounds %struct.nk_vec2, ptr %919, i64 %922
  %924 = getelementptr inbounds %struct.nk_vec2, ptr %923, i32 0, i32 0
  %925 = load float, ptr %924, align 4, !tbaa !39
  %926 = load float, ptr %72, align 4, !tbaa !13
  %927 = fadd float %926, 1.000000e+00
  %928 = fmul float %925, %927
  %929 = load ptr, ptr %30, align 8, !tbaa !5
  %930 = load i32, ptr %11, align 4, !tbaa !9
  %931 = sub i32 %930, 1
  %932 = zext i32 %931 to i64
  %933 = getelementptr inbounds %struct.nk_vec2, ptr %929, i64 %932
  %934 = getelementptr inbounds %struct.nk_vec2, ptr %933, i32 0, i32 1
  %935 = load float, ptr %934, align 4, !tbaa !40
  %936 = load float, ptr %72, align 4, !tbaa !13
  %937 = fadd float %936, 1.000000e+00
  %938 = fmul float %935, %937
  %939 = call <2 x float> @nk_vec2(float noundef %928, float noundef %938)
  store <2 x float> %939, ptr %79, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %73, ptr align 4 %79, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %940 = load ptr, ptr %30, align 8, !tbaa !5
  %941 = load i32, ptr %11, align 4, !tbaa !9
  %942 = sub i32 %941, 1
  %943 = zext i32 %942 to i64
  %944 = getelementptr inbounds %struct.nk_vec2, ptr %940, i64 %943
  %945 = getelementptr inbounds %struct.nk_vec2, ptr %944, i32 0, i32 0
  %946 = load float, ptr %945, align 4, !tbaa !39
  %947 = load float, ptr %72, align 4, !tbaa !13
  %948 = fmul float %946, %947
  %949 = load ptr, ptr %30, align 8, !tbaa !5
  %950 = load i32, ptr %11, align 4, !tbaa !9
  %951 = sub i32 %950, 1
  %952 = zext i32 %951 to i64
  %953 = getelementptr inbounds %struct.nk_vec2, ptr %949, i64 %952
  %954 = getelementptr inbounds %struct.nk_vec2, ptr %953, i32 0, i32 1
  %955 = load float, ptr %954, align 4, !tbaa !40
  %956 = load float, ptr %72, align 4, !tbaa !13
  %957 = fmul float %955, %956
  %958 = call <2 x float> @nk_vec2(float noundef %948, float noundef %957)
  store <2 x float> %958, ptr %80, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 4 %80, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  %960 = load i32, ptr %11, align 4, !tbaa !9
  %961 = sub i32 %960, 1
  %962 = zext i32 %961 to i64
  %963 = getelementptr inbounds %struct.nk_vec2, ptr %959, i64 %962
  %964 = getelementptr inbounds %struct.nk_vec2, ptr %963, i32 0, i32 0
  %965 = load float, ptr %964, align 4, !tbaa !39
  %966 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 0
  %967 = load float, ptr %966, align 4, !tbaa !39
  %968 = fadd float %965, %967
  %969 = load ptr, ptr %10, align 8, !tbaa !5
  %970 = load i32, ptr %11, align 4, !tbaa !9
  %971 = sub i32 %970, 1
  %972 = zext i32 %971 to i64
  %973 = getelementptr inbounds %struct.nk_vec2, ptr %969, i64 %972
  %974 = getelementptr inbounds %struct.nk_vec2, ptr %973, i32 0, i32 1
  %975 = load float, ptr %974, align 4, !tbaa !40
  %976 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 1
  %977 = load float, ptr %976, align 4, !tbaa !40
  %978 = fadd float %975, %977
  %979 = call <2 x float> @nk_vec2(float noundef %968, float noundef %978)
  store <2 x float> %979, ptr %81, align 4
  %980 = load ptr, ptr %31, align 8, !tbaa !5
  %981 = load i32, ptr %11, align 4, !tbaa !9
  %982 = sub i32 %981, 1
  %983 = mul i32 %982, 4
  %984 = add i32 %983, 0
  %985 = zext i32 %984 to i64
  %986 = getelementptr inbounds %struct.nk_vec2, ptr %980, i64 %985
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %986, ptr align 4 %81, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %987 = load ptr, ptr %10, align 8, !tbaa !5
  %988 = load i32, ptr %11, align 4, !tbaa !9
  %989 = sub i32 %988, 1
  %990 = zext i32 %989 to i64
  %991 = getelementptr inbounds %struct.nk_vec2, ptr %987, i64 %990
  %992 = getelementptr inbounds %struct.nk_vec2, ptr %991, i32 0, i32 0
  %993 = load float, ptr %992, align 4, !tbaa !39
  %994 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 0
  %995 = load float, ptr %994, align 4, !tbaa !39
  %996 = fadd float %993, %995
  %997 = load ptr, ptr %10, align 8, !tbaa !5
  %998 = load i32, ptr %11, align 4, !tbaa !9
  %999 = sub i32 %998, 1
  %1000 = zext i32 %999 to i64
  %1001 = getelementptr inbounds %struct.nk_vec2, ptr %997, i64 %1000
  %1002 = getelementptr inbounds %struct.nk_vec2, ptr %1001, i32 0, i32 1
  %1003 = load float, ptr %1002, align 4, !tbaa !40
  %1004 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 1
  %1005 = load float, ptr %1004, align 4, !tbaa !40
  %1006 = fadd float %1003, %1005
  %1007 = call <2 x float> @nk_vec2(float noundef %996, float noundef %1006)
  store <2 x float> %1007, ptr %82, align 4
  %1008 = load ptr, ptr %31, align 8, !tbaa !5
  %1009 = load i32, ptr %11, align 4, !tbaa !9
  %1010 = sub i32 %1009, 1
  %1011 = mul i32 %1010, 4
  %1012 = add i32 %1011, 1
  %1013 = zext i32 %1012 to i64
  %1014 = getelementptr inbounds %struct.nk_vec2, ptr %1008, i64 %1013
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1014, ptr align 4 %82, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %1015 = load ptr, ptr %10, align 8, !tbaa !5
  %1016 = load i32, ptr %11, align 4, !tbaa !9
  %1017 = sub i32 %1016, 1
  %1018 = zext i32 %1017 to i64
  %1019 = getelementptr inbounds %struct.nk_vec2, ptr %1015, i64 %1018
  %1020 = getelementptr inbounds %struct.nk_vec2, ptr %1019, i32 0, i32 0
  %1021 = load float, ptr %1020, align 4, !tbaa !39
  %1022 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 0
  %1023 = load float, ptr %1022, align 4, !tbaa !39
  %1024 = fsub float %1021, %1023
  %1025 = load ptr, ptr %10, align 8, !tbaa !5
  %1026 = load i32, ptr %11, align 4, !tbaa !9
  %1027 = sub i32 %1026, 1
  %1028 = zext i32 %1027 to i64
  %1029 = getelementptr inbounds %struct.nk_vec2, ptr %1025, i64 %1028
  %1030 = getelementptr inbounds %struct.nk_vec2, ptr %1029, i32 0, i32 1
  %1031 = load float, ptr %1030, align 4, !tbaa !40
  %1032 = getelementptr inbounds %struct.nk_vec2, ptr %74, i32 0, i32 1
  %1033 = load float, ptr %1032, align 4, !tbaa !40
  %1034 = fsub float %1031, %1033
  %1035 = call <2 x float> @nk_vec2(float noundef %1024, float noundef %1034)
  store <2 x float> %1035, ptr %83, align 4
  %1036 = load ptr, ptr %31, align 8, !tbaa !5
  %1037 = load i32, ptr %11, align 4, !tbaa !9
  %1038 = sub i32 %1037, 1
  %1039 = mul i32 %1038, 4
  %1040 = add i32 %1039, 2
  %1041 = zext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.nk_vec2, ptr %1036, i64 %1041
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1042, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %1043 = load ptr, ptr %10, align 8, !tbaa !5
  %1044 = load i32, ptr %11, align 4, !tbaa !9
  %1045 = sub i32 %1044, 1
  %1046 = zext i32 %1045 to i64
  %1047 = getelementptr inbounds %struct.nk_vec2, ptr %1043, i64 %1046
  %1048 = getelementptr inbounds %struct.nk_vec2, ptr %1047, i32 0, i32 0
  %1049 = load float, ptr %1048, align 4, !tbaa !39
  %1050 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 0
  %1051 = load float, ptr %1050, align 4, !tbaa !39
  %1052 = fsub float %1049, %1051
  %1053 = load ptr, ptr %10, align 8, !tbaa !5
  %1054 = load i32, ptr %11, align 4, !tbaa !9
  %1055 = sub i32 %1054, 1
  %1056 = zext i32 %1055 to i64
  %1057 = getelementptr inbounds %struct.nk_vec2, ptr %1053, i64 %1056
  %1058 = getelementptr inbounds %struct.nk_vec2, ptr %1057, i32 0, i32 1
  %1059 = load float, ptr %1058, align 4, !tbaa !40
  %1060 = getelementptr inbounds %struct.nk_vec2, ptr %73, i32 0, i32 1
  %1061 = load float, ptr %1060, align 4, !tbaa !40
  %1062 = fsub float %1059, %1061
  %1063 = call <2 x float> @nk_vec2(float noundef %1052, float noundef %1062)
  store <2 x float> %1063, ptr %84, align 4
  %1064 = load ptr, ptr %31, align 8, !tbaa !5
  %1065 = load i32, ptr %11, align 4, !tbaa !9
  %1066 = sub i32 %1065, 1
  %1067 = mul i32 %1066, 4
  %1068 = add i32 %1067, 3
  %1069 = zext i32 %1068 to i64
  %1070 = getelementptr inbounds %struct.nk_vec2, ptr %1064, i64 %1069
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1070, ptr align 4 %84, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  br label %1071

1071:                                             ; preds = %822, %816
  %1072 = load i64, ptr %24, align 8, !tbaa !26
  store i64 %1072, ptr %70, align 8, !tbaa !26
  store i64 0, ptr %22, align 8, !tbaa !26
  br label %1073

1073:                                             ; preds = %1387, %1071
  %1074 = load i64, ptr %22, align 8, !tbaa !26
  %1075 = load i64, ptr %15, align 8, !tbaa !26
  %1076 = icmp ult i64 %1074, %1075
  br i1 %1076, label %1077, label %1390

1077:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  %1078 = load i64, ptr %22, align 8, !tbaa !26
  %1079 = add i64 %1078, 1
  %1080 = load i32, ptr %11, align 4, !tbaa !9
  %1081 = zext i32 %1080 to i64
  %1082 = icmp eq i64 %1079, %1081
  br i1 %1082, label %1083, label %1084

1083:                                             ; preds = %1077
  br label %1087

1084:                                             ; preds = %1077
  %1085 = load i64, ptr %22, align 8, !tbaa !26
  %1086 = add i64 %1085, 1
  br label %1087

1087:                                             ; preds = %1084, %1083
  %1088 = phi i64 [ 0, %1083 ], [ %1086, %1084 ]
  store i64 %1088, ptr %87, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %1089 = load i64, ptr %22, align 8, !tbaa !26
  %1090 = add i64 %1089, 1
  %1091 = load i32, ptr %11, align 4, !tbaa !9
  %1092 = zext i32 %1091 to i64
  %1093 = icmp eq i64 %1090, %1092
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1087
  %1095 = load i64, ptr %24, align 8, !tbaa !26
  br label %1099

1096:                                             ; preds = %1087
  %1097 = load i64, ptr %70, align 8, !tbaa !26
  %1098 = add i64 %1097, 4
  br label %1099

1099:                                             ; preds = %1096, %1094
  %1100 = phi i64 [ %1095, %1094 ], [ %1098, %1096 ]
  store i64 %1100, ptr %88, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %1101 = load ptr, ptr %30, align 8, !tbaa !5
  %1102 = load i64, ptr %22, align 8, !tbaa !26
  %1103 = getelementptr inbounds %struct.nk_vec2, ptr %1101, i64 %1102
  %1104 = getelementptr inbounds %struct.nk_vec2, ptr %1103, i32 0, i32 0
  %1105 = load float, ptr %1104, align 4, !tbaa !39
  %1106 = load ptr, ptr %30, align 8, !tbaa !5
  %1107 = load i64, ptr %87, align 8, !tbaa !26
  %1108 = getelementptr inbounds %struct.nk_vec2, ptr %1106, i64 %1107
  %1109 = getelementptr inbounds %struct.nk_vec2, ptr %1108, i32 0, i32 0
  %1110 = load float, ptr %1109, align 4, !tbaa !39
  %1111 = fadd float %1105, %1110
  %1112 = load ptr, ptr %30, align 8, !tbaa !5
  %1113 = load i64, ptr %22, align 8, !tbaa !26
  %1114 = getelementptr inbounds %struct.nk_vec2, ptr %1112, i64 %1113
  %1115 = getelementptr inbounds %struct.nk_vec2, ptr %1114, i32 0, i32 1
  %1116 = load float, ptr %1115, align 4, !tbaa !40
  %1117 = load ptr, ptr %30, align 8, !tbaa !5
  %1118 = load i64, ptr %87, align 8, !tbaa !26
  %1119 = getelementptr inbounds %struct.nk_vec2, ptr %1117, i64 %1118
  %1120 = getelementptr inbounds %struct.nk_vec2, ptr %1119, i32 0, i32 1
  %1121 = load float, ptr %1120, align 4, !tbaa !40
  %1122 = fadd float %1116, %1121
  %1123 = call <2 x float> @nk_vec2(float noundef %1111, float noundef %1122)
  store <2 x float> %1123, ptr %90, align 4
  %1124 = getelementptr inbounds %struct.nk_vec2, ptr %90, i32 0, i32 0
  %1125 = load float, ptr %1124, align 4, !tbaa !39
  %1126 = fmul float %1125, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %1127 = load ptr, ptr %30, align 8, !tbaa !5
  %1128 = load i64, ptr %22, align 8, !tbaa !26
  %1129 = getelementptr inbounds %struct.nk_vec2, ptr %1127, i64 %1128
  %1130 = getelementptr inbounds %struct.nk_vec2, ptr %1129, i32 0, i32 0
  %1131 = load float, ptr %1130, align 4, !tbaa !39
  %1132 = load ptr, ptr %30, align 8, !tbaa !5
  %1133 = load i64, ptr %87, align 8, !tbaa !26
  %1134 = getelementptr inbounds %struct.nk_vec2, ptr %1132, i64 %1133
  %1135 = getelementptr inbounds %struct.nk_vec2, ptr %1134, i32 0, i32 0
  %1136 = load float, ptr %1135, align 4, !tbaa !39
  %1137 = fadd float %1131, %1136
  %1138 = load ptr, ptr %30, align 8, !tbaa !5
  %1139 = load i64, ptr %22, align 8, !tbaa !26
  %1140 = getelementptr inbounds %struct.nk_vec2, ptr %1138, i64 %1139
  %1141 = getelementptr inbounds %struct.nk_vec2, ptr %1140, i32 0, i32 1
  %1142 = load float, ptr %1141, align 4, !tbaa !40
  %1143 = load ptr, ptr %30, align 8, !tbaa !5
  %1144 = load i64, ptr %87, align 8, !tbaa !26
  %1145 = getelementptr inbounds %struct.nk_vec2, ptr %1143, i64 %1144
  %1146 = getelementptr inbounds %struct.nk_vec2, ptr %1145, i32 0, i32 1
  %1147 = load float, ptr %1146, align 4, !tbaa !40
  %1148 = fadd float %1142, %1147
  %1149 = call <2 x float> @nk_vec2(float noundef %1137, float noundef %1148)
  store <2 x float> %1149, ptr %91, align 4
  %1150 = getelementptr inbounds %struct.nk_vec2, ptr %91, i32 0, i32 1
  %1151 = load float, ptr %1150, align 4, !tbaa !40
  %1152 = fmul float %1151, 5.000000e-01
  %1153 = call <2 x float> @nk_vec2(float noundef %1126, float noundef %1152)
  store <2 x float> %1153, ptr %89, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #8
  %1154 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 0
  %1155 = load float, ptr %1154, align 4, !tbaa !39
  %1156 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 0
  %1157 = load float, ptr %1156, align 4, !tbaa !39
  %1158 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 1
  %1159 = load float, ptr %1158, align 4, !tbaa !40
  %1160 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 1
  %1161 = load float, ptr %1160, align 4, !tbaa !40
  %1162 = fmul float %1159, %1161
  %1163 = call float @llvm.fmuladd.f32(float %1155, float %1157, float %1162)
  store float %1163, ptr %92, align 4, !tbaa !13
  %1164 = load float, ptr %92, align 4, !tbaa !13
  %1165 = fcmp ogt float %1164, 0x3EB0C6F7A0000000
  br i1 %1165, label %1166, label %1185

1166:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #8
  %1167 = load float, ptr %92, align 4, !tbaa !13
  %1168 = fdiv float 1.000000e+00, %1167
  store float %1168, ptr %93, align 4, !tbaa !13
  %1169 = load float, ptr %93, align 4, !tbaa !13
  %1170 = fcmp olt float 1.000000e+02, %1169
  br i1 %1170, label %1171, label %1172

1171:                                             ; preds = %1166
  br label %1174

1172:                                             ; preds = %1166
  %1173 = load float, ptr %93, align 4, !tbaa !13
  br label %1174

1174:                                             ; preds = %1172, %1171
  %1175 = phi float [ 1.000000e+02, %1171 ], [ %1173, %1172 ]
  store float %1175, ptr %93, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %1176 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 0
  %1177 = load float, ptr %1176, align 4, !tbaa !39
  %1178 = load float, ptr %93, align 4, !tbaa !13
  %1179 = fmul float %1177, %1178
  %1180 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 1
  %1181 = load float, ptr %1180, align 4, !tbaa !40
  %1182 = load float, ptr %93, align 4, !tbaa !13
  %1183 = fmul float %1181, %1182
  %1184 = call <2 x float> @nk_vec2(float noundef %1179, float noundef %1183)
  store <2 x float> %1184, ptr %94, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %89, ptr align 4 %94, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #8
  br label %1185

1185:                                             ; preds = %1174, %1099
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %1186 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 0
  %1187 = load float, ptr %1186, align 4, !tbaa !39
  %1188 = load float, ptr %72, align 4, !tbaa !13
  %1189 = fadd float %1188, 1.000000e+00
  %1190 = fmul float %1187, %1189
  %1191 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 1
  %1192 = load float, ptr %1191, align 4, !tbaa !40
  %1193 = load float, ptr %72, align 4, !tbaa !13
  %1194 = fadd float %1193, 1.000000e+00
  %1195 = fmul float %1192, %1194
  %1196 = call <2 x float> @nk_vec2(float noundef %1190, float noundef %1195)
  store <2 x float> %1196, ptr %95, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 %95, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %1197 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 0
  %1198 = load float, ptr %1197, align 4, !tbaa !39
  %1199 = load float, ptr %72, align 4, !tbaa !13
  %1200 = fmul float %1198, %1199
  %1201 = getelementptr inbounds %struct.nk_vec2, ptr %89, i32 0, i32 1
  %1202 = load float, ptr %1201, align 4, !tbaa !40
  %1203 = load float, ptr %72, align 4, !tbaa !13
  %1204 = fmul float %1202, %1203
  %1205 = call <2 x float> @nk_vec2(float noundef %1200, float noundef %1204)
  store <2 x float> %1205, ptr %96, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 4 %96, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %1206 = load ptr, ptr %10, align 8, !tbaa !5
  %1207 = load i64, ptr %87, align 8, !tbaa !26
  %1208 = getelementptr inbounds %struct.nk_vec2, ptr %1206, i64 %1207
  %1209 = getelementptr inbounds %struct.nk_vec2, ptr %1208, i32 0, i32 0
  %1210 = load float, ptr %1209, align 4, !tbaa !39
  %1211 = getelementptr inbounds %struct.nk_vec2, ptr %85, i32 0, i32 0
  %1212 = load float, ptr %1211, align 4, !tbaa !39
  %1213 = fadd float %1210, %1212
  %1214 = load ptr, ptr %10, align 8, !tbaa !5
  %1215 = load i64, ptr %87, align 8, !tbaa !26
  %1216 = getelementptr inbounds %struct.nk_vec2, ptr %1214, i64 %1215
  %1217 = getelementptr inbounds %struct.nk_vec2, ptr %1216, i32 0, i32 1
  %1218 = load float, ptr %1217, align 4, !tbaa !40
  %1219 = getelementptr inbounds %struct.nk_vec2, ptr %85, i32 0, i32 1
  %1220 = load float, ptr %1219, align 4, !tbaa !40
  %1221 = fadd float %1218, %1220
  %1222 = call <2 x float> @nk_vec2(float noundef %1213, float noundef %1221)
  store <2 x float> %1222, ptr %97, align 4
  %1223 = load ptr, ptr %31, align 8, !tbaa !5
  %1224 = load i64, ptr %87, align 8, !tbaa !26
  %1225 = mul i64 %1224, 4
  %1226 = add i64 %1225, 0
  %1227 = getelementptr inbounds %struct.nk_vec2, ptr %1223, i64 %1226
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1227, ptr align 4 %97, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %1228 = load ptr, ptr %10, align 8, !tbaa !5
  %1229 = load i64, ptr %87, align 8, !tbaa !26
  %1230 = getelementptr inbounds %struct.nk_vec2, ptr %1228, i64 %1229
  %1231 = getelementptr inbounds %struct.nk_vec2, ptr %1230, i32 0, i32 0
  %1232 = load float, ptr %1231, align 4, !tbaa !39
  %1233 = getelementptr inbounds %struct.nk_vec2, ptr %86, i32 0, i32 0
  %1234 = load float, ptr %1233, align 4, !tbaa !39
  %1235 = fadd float %1232, %1234
  %1236 = load ptr, ptr %10, align 8, !tbaa !5
  %1237 = load i64, ptr %87, align 8, !tbaa !26
  %1238 = getelementptr inbounds %struct.nk_vec2, ptr %1236, i64 %1237
  %1239 = getelementptr inbounds %struct.nk_vec2, ptr %1238, i32 0, i32 1
  %1240 = load float, ptr %1239, align 4, !tbaa !40
  %1241 = getelementptr inbounds %struct.nk_vec2, ptr %86, i32 0, i32 1
  %1242 = load float, ptr %1241, align 4, !tbaa !40
  %1243 = fadd float %1240, %1242
  %1244 = call <2 x float> @nk_vec2(float noundef %1235, float noundef %1243)
  store <2 x float> %1244, ptr %98, align 4
  %1245 = load ptr, ptr %31, align 8, !tbaa !5
  %1246 = load i64, ptr %87, align 8, !tbaa !26
  %1247 = mul i64 %1246, 4
  %1248 = add i64 %1247, 1
  %1249 = getelementptr inbounds %struct.nk_vec2, ptr %1245, i64 %1248
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1249, ptr align 4 %98, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %1250 = load ptr, ptr %10, align 8, !tbaa !5
  %1251 = load i64, ptr %87, align 8, !tbaa !26
  %1252 = getelementptr inbounds %struct.nk_vec2, ptr %1250, i64 %1251
  %1253 = getelementptr inbounds %struct.nk_vec2, ptr %1252, i32 0, i32 0
  %1254 = load float, ptr %1253, align 4, !tbaa !39
  %1255 = getelementptr inbounds %struct.nk_vec2, ptr %86, i32 0, i32 0
  %1256 = load float, ptr %1255, align 4, !tbaa !39
  %1257 = fsub float %1254, %1256
  %1258 = load ptr, ptr %10, align 8, !tbaa !5
  %1259 = load i64, ptr %87, align 8, !tbaa !26
  %1260 = getelementptr inbounds %struct.nk_vec2, ptr %1258, i64 %1259
  %1261 = getelementptr inbounds %struct.nk_vec2, ptr %1260, i32 0, i32 1
  %1262 = load float, ptr %1261, align 4, !tbaa !40
  %1263 = getelementptr inbounds %struct.nk_vec2, ptr %86, i32 0, i32 1
  %1264 = load float, ptr %1263, align 4, !tbaa !40
  %1265 = fsub float %1262, %1264
  %1266 = call <2 x float> @nk_vec2(float noundef %1257, float noundef %1265)
  store <2 x float> %1266, ptr %99, align 4
  %1267 = load ptr, ptr %31, align 8, !tbaa !5
  %1268 = load i64, ptr %87, align 8, !tbaa !26
  %1269 = mul i64 %1268, 4
  %1270 = add i64 %1269, 2
  %1271 = getelementptr inbounds %struct.nk_vec2, ptr %1267, i64 %1270
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1271, ptr align 4 %99, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %1272 = load ptr, ptr %10, align 8, !tbaa !5
  %1273 = load i64, ptr %87, align 8, !tbaa !26
  %1274 = getelementptr inbounds %struct.nk_vec2, ptr %1272, i64 %1273
  %1275 = getelementptr inbounds %struct.nk_vec2, ptr %1274, i32 0, i32 0
  %1276 = load float, ptr %1275, align 4, !tbaa !39
  %1277 = getelementptr inbounds %struct.nk_vec2, ptr %85, i32 0, i32 0
  %1278 = load float, ptr %1277, align 4, !tbaa !39
  %1279 = fsub float %1276, %1278
  %1280 = load ptr, ptr %10, align 8, !tbaa !5
  %1281 = load i64, ptr %87, align 8, !tbaa !26
  %1282 = getelementptr inbounds %struct.nk_vec2, ptr %1280, i64 %1281
  %1283 = getelementptr inbounds %struct.nk_vec2, ptr %1282, i32 0, i32 1
  %1284 = load float, ptr %1283, align 4, !tbaa !40
  %1285 = getelementptr inbounds %struct.nk_vec2, ptr %85, i32 0, i32 1
  %1286 = load float, ptr %1285, align 4, !tbaa !40
  %1287 = fsub float %1284, %1286
  %1288 = call <2 x float> @nk_vec2(float noundef %1279, float noundef %1287)
  store <2 x float> %1288, ptr %100, align 4
  %1289 = load ptr, ptr %31, align 8, !tbaa !5
  %1290 = load i64, ptr %87, align 8, !tbaa !26
  %1291 = mul i64 %1290, 4
  %1292 = add i64 %1291, 3
  %1293 = getelementptr inbounds %struct.nk_vec2, ptr %1289, i64 %1292
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1293, ptr align 4 %100, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  %1294 = load i64, ptr %88, align 8, !tbaa !26
  %1295 = add i64 %1294, 1
  %1296 = trunc i64 %1295 to i16
  %1297 = load ptr, ptr %28, align 8, !tbaa !5
  %1298 = getelementptr inbounds i16, ptr %1297, i64 0
  store i16 %1296, ptr %1298, align 2, !tbaa !44
  %1299 = load i64, ptr %70, align 8, !tbaa !26
  %1300 = add i64 %1299, 1
  %1301 = trunc i64 %1300 to i16
  %1302 = load ptr, ptr %28, align 8, !tbaa !5
  %1303 = getelementptr inbounds i16, ptr %1302, i64 1
  store i16 %1301, ptr %1303, align 2, !tbaa !44
  %1304 = load i64, ptr %70, align 8, !tbaa !26
  %1305 = add i64 %1304, 2
  %1306 = trunc i64 %1305 to i16
  %1307 = load ptr, ptr %28, align 8, !tbaa !5
  %1308 = getelementptr inbounds i16, ptr %1307, i64 2
  store i16 %1306, ptr %1308, align 2, !tbaa !44
  %1309 = load i64, ptr %70, align 8, !tbaa !26
  %1310 = add i64 %1309, 2
  %1311 = trunc i64 %1310 to i16
  %1312 = load ptr, ptr %28, align 8, !tbaa !5
  %1313 = getelementptr inbounds i16, ptr %1312, i64 3
  store i16 %1311, ptr %1313, align 2, !tbaa !44
  %1314 = load i64, ptr %88, align 8, !tbaa !26
  %1315 = add i64 %1314, 2
  %1316 = trunc i64 %1315 to i16
  %1317 = load ptr, ptr %28, align 8, !tbaa !5
  %1318 = getelementptr inbounds i16, ptr %1317, i64 4
  store i16 %1316, ptr %1318, align 2, !tbaa !44
  %1319 = load i64, ptr %88, align 8, !tbaa !26
  %1320 = add i64 %1319, 1
  %1321 = trunc i64 %1320 to i16
  %1322 = load ptr, ptr %28, align 8, !tbaa !5
  %1323 = getelementptr inbounds i16, ptr %1322, i64 5
  store i16 %1321, ptr %1323, align 2, !tbaa !44
  %1324 = load i64, ptr %88, align 8, !tbaa !26
  %1325 = add i64 %1324, 1
  %1326 = trunc i64 %1325 to i16
  %1327 = load ptr, ptr %28, align 8, !tbaa !5
  %1328 = getelementptr inbounds i16, ptr %1327, i64 6
  store i16 %1326, ptr %1328, align 2, !tbaa !44
  %1329 = load i64, ptr %70, align 8, !tbaa !26
  %1330 = add i64 %1329, 1
  %1331 = trunc i64 %1330 to i16
  %1332 = load ptr, ptr %28, align 8, !tbaa !5
  %1333 = getelementptr inbounds i16, ptr %1332, i64 7
  store i16 %1331, ptr %1333, align 2, !tbaa !44
  %1334 = load i64, ptr %70, align 8, !tbaa !26
  %1335 = add i64 %1334, 0
  %1336 = trunc i64 %1335 to i16
  %1337 = load ptr, ptr %28, align 8, !tbaa !5
  %1338 = getelementptr inbounds i16, ptr %1337, i64 8
  store i16 %1336, ptr %1338, align 2, !tbaa !44
  %1339 = load i64, ptr %70, align 8, !tbaa !26
  %1340 = add i64 %1339, 0
  %1341 = trunc i64 %1340 to i16
  %1342 = load ptr, ptr %28, align 8, !tbaa !5
  %1343 = getelementptr inbounds i16, ptr %1342, i64 9
  store i16 %1341, ptr %1343, align 2, !tbaa !44
  %1344 = load i64, ptr %88, align 8, !tbaa !26
  %1345 = add i64 %1344, 0
  %1346 = trunc i64 %1345 to i16
  %1347 = load ptr, ptr %28, align 8, !tbaa !5
  %1348 = getelementptr inbounds i16, ptr %1347, i64 10
  store i16 %1346, ptr %1348, align 2, !tbaa !44
  %1349 = load i64, ptr %88, align 8, !tbaa !26
  %1350 = add i64 %1349, 1
  %1351 = trunc i64 %1350 to i16
  %1352 = load ptr, ptr %28, align 8, !tbaa !5
  %1353 = getelementptr inbounds i16, ptr %1352, i64 11
  store i16 %1351, ptr %1353, align 2, !tbaa !44
  %1354 = load i64, ptr %88, align 8, !tbaa !26
  %1355 = add i64 %1354, 2
  %1356 = trunc i64 %1355 to i16
  %1357 = load ptr, ptr %28, align 8, !tbaa !5
  %1358 = getelementptr inbounds i16, ptr %1357, i64 12
  store i16 %1356, ptr %1358, align 2, !tbaa !44
  %1359 = load i64, ptr %70, align 8, !tbaa !26
  %1360 = add i64 %1359, 2
  %1361 = trunc i64 %1360 to i16
  %1362 = load ptr, ptr %28, align 8, !tbaa !5
  %1363 = getelementptr inbounds i16, ptr %1362, i64 13
  store i16 %1361, ptr %1363, align 2, !tbaa !44
  %1364 = load i64, ptr %70, align 8, !tbaa !26
  %1365 = add i64 %1364, 3
  %1366 = trunc i64 %1365 to i16
  %1367 = load ptr, ptr %28, align 8, !tbaa !5
  %1368 = getelementptr inbounds i16, ptr %1367, i64 14
  store i16 %1366, ptr %1368, align 2, !tbaa !44
  %1369 = load i64, ptr %70, align 8, !tbaa !26
  %1370 = add i64 %1369, 3
  %1371 = trunc i64 %1370 to i16
  %1372 = load ptr, ptr %28, align 8, !tbaa !5
  %1373 = getelementptr inbounds i16, ptr %1372, i64 15
  store i16 %1371, ptr %1373, align 2, !tbaa !44
  %1374 = load i64, ptr %88, align 8, !tbaa !26
  %1375 = add i64 %1374, 3
  %1376 = trunc i64 %1375 to i16
  %1377 = load ptr, ptr %28, align 8, !tbaa !5
  %1378 = getelementptr inbounds i16, ptr %1377, i64 16
  store i16 %1376, ptr %1378, align 2, !tbaa !44
  %1379 = load i64, ptr %88, align 8, !tbaa !26
  %1380 = add i64 %1379, 2
  %1381 = trunc i64 %1380 to i16
  %1382 = load ptr, ptr %28, align 8, !tbaa !5
  %1383 = getelementptr inbounds i16, ptr %1382, i64 17
  store i16 %1381, ptr %1383, align 2, !tbaa !44
  %1384 = load ptr, ptr %28, align 8, !tbaa !5
  %1385 = getelementptr inbounds i16, ptr %1384, i64 18
  store ptr %1385, ptr %28, align 8, !tbaa !5
  %1386 = load i64, ptr %88, align 8, !tbaa !26
  store i64 %1386, ptr %70, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  br label %1387

1387:                                             ; preds = %1185
  %1388 = load i64, ptr %22, align 8, !tbaa !26
  %1389 = add i64 %1388, 1
  store i64 %1389, ptr %22, align 8, !tbaa !26
  br label %1073, !llvm.loop !48

1390:                                             ; preds = %1073
  store i64 0, ptr %71, align 8, !tbaa !26
  br label %1391

1391:                                             ; preds = %1461, %1390
  %1392 = load i64, ptr %71, align 8, !tbaa !26
  %1393 = load i32, ptr %11, align 4, !tbaa !9
  %1394 = zext i32 %1393 to i64
  %1395 = icmp ult i64 %1392, %1394
  br i1 %1395, label %1396, label %1464

1396:                                             ; preds = %1391
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %1397 = load ptr, ptr %9, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.nk_draw_list, ptr %1397, i32 0, i32 2
  %1399 = getelementptr inbounds %struct.nk_convert_config, ptr %1398, i32 0, i32 6
  %1400 = getelementptr inbounds %struct.nk_draw_null_texture, ptr %1399, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %101, ptr align 8 %1400, i64 8, i1 false), !tbaa.struct !41
  %1401 = load ptr, ptr %27, align 8, !tbaa !5
  %1402 = load ptr, ptr %9, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.nk_draw_list, ptr %1402, i32 0, i32 2
  %1404 = load ptr, ptr %31, align 8, !tbaa !5
  %1405 = load i64, ptr %71, align 8, !tbaa !26
  %1406 = mul i64 %1405, 4
  %1407 = add i64 %1406, 0
  %1408 = getelementptr inbounds %struct.nk_vec2, ptr %1404, i64 %1407
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %102, ptr align 4 %1408, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %103, ptr align 4 %101, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 4 %18, i64 16, i1 false), !tbaa.struct !29
  %1409 = load <2 x float>, ptr %102, align 4
  %1410 = load <2 x float>, ptr %103, align 4
  %1411 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %104, i32 0, i32 0
  %1412 = load <2 x float>, ptr %1411, align 4
  %1413 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %104, i32 0, i32 1
  %1414 = load <2 x float>, ptr %1413, align 4
  %1415 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1401, ptr noundef %1403, <2 x float> %1409, <2 x float> %1410, <2 x float> %1412, <2 x float> %1414)
  store ptr %1415, ptr %27, align 8, !tbaa !5
  %1416 = load ptr, ptr %27, align 8, !tbaa !5
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.nk_draw_list, ptr %1417, i32 0, i32 2
  %1419 = load ptr, ptr %31, align 8, !tbaa !5
  %1420 = load i64, ptr %71, align 8, !tbaa !26
  %1421 = mul i64 %1420, 4
  %1422 = add i64 %1421, 1
  %1423 = getelementptr inbounds %struct.nk_vec2, ptr %1419, i64 %1422
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 4 %1423, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %106, ptr align 4 %101, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %107, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1424 = load <2 x float>, ptr %105, align 4
  %1425 = load <2 x float>, ptr %106, align 4
  %1426 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %107, i32 0, i32 0
  %1427 = load <2 x float>, ptr %1426, align 4
  %1428 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %107, i32 0, i32 1
  %1429 = load <2 x float>, ptr %1428, align 4
  %1430 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1416, ptr noundef %1418, <2 x float> %1424, <2 x float> %1425, <2 x float> %1427, <2 x float> %1429)
  store ptr %1430, ptr %27, align 8, !tbaa !5
  %1431 = load ptr, ptr %27, align 8, !tbaa !5
  %1432 = load ptr, ptr %9, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.nk_draw_list, ptr %1432, i32 0, i32 2
  %1434 = load ptr, ptr %31, align 8, !tbaa !5
  %1435 = load i64, ptr %71, align 8, !tbaa !26
  %1436 = mul i64 %1435, 4
  %1437 = add i64 %1436, 2
  %1438 = getelementptr inbounds %struct.nk_vec2, ptr %1434, i64 %1437
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %108, ptr align 4 %1438, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %109, ptr align 4 %101, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %110, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1439 = load <2 x float>, ptr %108, align 4
  %1440 = load <2 x float>, ptr %109, align 4
  %1441 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %110, i32 0, i32 0
  %1442 = load <2 x float>, ptr %1441, align 4
  %1443 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %110, i32 0, i32 1
  %1444 = load <2 x float>, ptr %1443, align 4
  %1445 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1431, ptr noundef %1433, <2 x float> %1439, <2 x float> %1440, <2 x float> %1442, <2 x float> %1444)
  store ptr %1445, ptr %27, align 8, !tbaa !5
  %1446 = load ptr, ptr %27, align 8, !tbaa !5
  %1447 = load ptr, ptr %9, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.nk_draw_list, ptr %1447, i32 0, i32 2
  %1449 = load ptr, ptr %31, align 8, !tbaa !5
  %1450 = load i64, ptr %71, align 8, !tbaa !26
  %1451 = mul i64 %1450, 4
  %1452 = add i64 %1451, 3
  %1453 = getelementptr inbounds %struct.nk_vec2, ptr %1449, i64 %1452
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %111, ptr align 4 %1453, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %112, ptr align 4 %101, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %113, ptr align 4 %18, i64 16, i1 false), !tbaa.struct !29
  %1454 = load <2 x float>, ptr %111, align 4
  %1455 = load <2 x float>, ptr %112, align 4
  %1456 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %113, i32 0, i32 0
  %1457 = load <2 x float>, ptr %1456, align 4
  %1458 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %113, i32 0, i32 1
  %1459 = load <2 x float>, ptr %1458, align 4
  %1460 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1446, ptr noundef %1448, <2 x float> %1454, <2 x float> %1455, <2 x float> %1457, <2 x float> %1459)
  store ptr %1460, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %1461

1461:                                             ; preds = %1396
  %1462 = load i64, ptr %71, align 8, !tbaa !26
  %1463 = add i64 %1462, 1
  store i64 %1463, ptr %71, align 8, !tbaa !26
  br label %1391, !llvm.loop !49

1464:                                             ; preds = %1391
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %1465

1465:                                             ; preds = %1464, %815
  %1466 = load ptr, ptr %9, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.nk_draw_list, ptr %1466, i32 0, i32 4
  %1468 = load ptr, ptr %1467, align 8, !tbaa !33
  call void @nk_buffer_reset(ptr noundef %1468, i32 noundef 0)
  store i32 0, ptr %19, align 4
  br label %1469

1469:                                             ; preds = %1465, %259, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  %1470 = load i32, ptr %19, align 4
  switch i32 %1470, label %1685 [
    i32 0, label %1471
  ]

1471:                                             ; preds = %1469
  br label %1684

1472:                                             ; preds = %172
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  store i64 0, ptr %114, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %1473 = load ptr, ptr %9, align 8, !tbaa !5
  %1474 = getelementptr inbounds %struct.nk_draw_list, ptr %1473, i32 0, i32 7
  %1475 = load i32, ptr %1474, align 4, !tbaa !32
  %1476 = zext i32 %1475 to i64
  store i64 %1476, ptr %115, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #8
  %1477 = load i64, ptr %15, align 8, !tbaa !26
  %1478 = mul i64 %1477, 6
  store i64 %1478, ptr %116, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1479 = load i64, ptr %15, align 8, !tbaa !26
  %1480 = mul i64 %1479, 4
  store i64 %1480, ptr %117, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %1481 = load ptr, ptr %9, align 8, !tbaa !5
  %1482 = load i64, ptr %117, align 8, !tbaa !26
  %1483 = call noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef %1481, i64 noundef %1482)
  store ptr %1483, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %1484 = load ptr, ptr %9, align 8, !tbaa !5
  %1485 = load i64, ptr %116, align 8, !tbaa !26
  %1486 = call noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef %1484, i64 noundef %1485)
  store ptr %1486, ptr %119, align 8, !tbaa !5
  %1487 = load ptr, ptr %118, align 8, !tbaa !5
  %1488 = icmp ne ptr %1487, null
  br i1 %1488, label %1489, label %1492

1489:                                             ; preds = %1472
  %1490 = load ptr, ptr %119, align 8, !tbaa !5
  %1491 = icmp ne ptr %1490, null
  br i1 %1491, label %1493, label %1492

1492:                                             ; preds = %1489, %1472
  store i32 1, ptr %19, align 4
  br label %1681

1493:                                             ; preds = %1489
  store i64 0, ptr %114, align 8, !tbaa !26
  br label %1494

1494:                                             ; preds = %1677, %1493
  %1495 = load i64, ptr %114, align 8, !tbaa !26
  %1496 = load i64, ptr %15, align 8, !tbaa !26
  %1497 = icmp ult i64 %1495, %1496
  br i1 %1497, label %1498, label %1680

1498:                                             ; preds = %1494
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  %1499 = load ptr, ptr %9, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.nk_draw_list, ptr %1499, i32 0, i32 2
  %1501 = getelementptr inbounds %struct.nk_convert_config, ptr %1500, i32 0, i32 6
  %1502 = getelementptr inbounds %struct.nk_draw_null_texture, ptr %1501, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %122, ptr align 8 %1502, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  %1503 = load i64, ptr %114, align 8, !tbaa !26
  %1504 = add i64 %1503, 1
  %1505 = load i32, ptr %11, align 4, !tbaa !9
  %1506 = zext i32 %1505 to i64
  %1507 = icmp eq i64 %1504, %1506
  br i1 %1507, label %1508, label %1509

1508:                                             ; preds = %1498
  br label %1512

1509:                                             ; preds = %1498
  %1510 = load i64, ptr %114, align 8, !tbaa !26
  %1511 = add i64 %1510, 1
  br label %1512

1512:                                             ; preds = %1509, %1508
  %1513 = phi i64 [ 0, %1508 ], [ %1511, %1509 ]
  store i64 %1513, ptr %123, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #8
  %1514 = load ptr, ptr %10, align 8, !tbaa !5
  %1515 = load i64, ptr %114, align 8, !tbaa !26
  %1516 = getelementptr inbounds %struct.nk_vec2, ptr %1514, i64 %1515
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 %1516, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  %1517 = load ptr, ptr %10, align 8, !tbaa !5
  %1518 = load i64, ptr %123, align 8, !tbaa !26
  %1519 = getelementptr inbounds %struct.nk_vec2, ptr %1517, i64 %1518
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %125, ptr align 4 %1519, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  %1520 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 0
  %1521 = load float, ptr %1520, align 4, !tbaa !39
  %1522 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 0
  %1523 = load float, ptr %1522, align 4, !tbaa !39
  %1524 = fsub float %1521, %1523
  %1525 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 1
  %1526 = load float, ptr %1525, align 4, !tbaa !40
  %1527 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 1
  %1528 = load float, ptr %1527, align 4, !tbaa !40
  %1529 = fsub float %1526, %1528
  %1530 = call <2 x float> @nk_vec2(float noundef %1524, float noundef %1529)
  store <2 x float> %1530, ptr %126, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #8
  %1531 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 0
  %1532 = load float, ptr %1531, align 4, !tbaa !39
  %1533 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 0
  %1534 = load float, ptr %1533, align 4, !tbaa !39
  %1535 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 1
  %1536 = load float, ptr %1535, align 4, !tbaa !40
  %1537 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 1
  %1538 = load float, ptr %1537, align 4, !tbaa !40
  %1539 = fmul float %1536, %1538
  %1540 = call float @llvm.fmuladd.f32(float %1532, float %1534, float %1539)
  store float %1540, ptr %127, align 4, !tbaa !13
  %1541 = load float, ptr %127, align 4, !tbaa !13
  %1542 = fcmp une float %1541, 0.000000e+00
  br i1 %1542, label %1543, label %1546

1543:                                             ; preds = %1512
  %1544 = load float, ptr %127, align 4, !tbaa !13
  %1545 = call noundef float @_ZL11nk_inv_sqrtf(float noundef %1544)
  store float %1545, ptr %127, align 4, !tbaa !13
  br label %1547

1546:                                             ; preds = %1512
  store float 1.000000e+00, ptr %127, align 4, !tbaa !13
  br label %1547

1547:                                             ; preds = %1546, %1543
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #8
  %1548 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 0
  %1549 = load float, ptr %1548, align 4, !tbaa !39
  %1550 = load float, ptr %127, align 4, !tbaa !13
  %1551 = fmul float %1549, %1550
  %1552 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 1
  %1553 = load float, ptr %1552, align 4, !tbaa !40
  %1554 = load float, ptr %127, align 4, !tbaa !13
  %1555 = fmul float %1553, %1554
  %1556 = call <2 x float> @nk_vec2(float noundef %1551, float noundef %1555)
  store <2 x float> %1556, ptr %128, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 4 %128, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #8
  %1557 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 0
  %1558 = load float, ptr %1557, align 4, !tbaa !39
  %1559 = load float, ptr %13, align 4, !tbaa !13
  %1560 = fmul float %1559, 5.000000e-01
  %1561 = fmul float %1558, %1560
  store float %1561, ptr %120, align 4, !tbaa !13
  %1562 = getelementptr inbounds %struct.nk_vec2, ptr %126, i32 0, i32 1
  %1563 = load float, ptr %1562, align 4, !tbaa !40
  %1564 = load float, ptr %13, align 4, !tbaa !13
  %1565 = fmul float %1564, 5.000000e-01
  %1566 = fmul float %1563, %1565
  store float %1566, ptr %121, align 4, !tbaa !13
  %1567 = load ptr, ptr %118, align 8, !tbaa !5
  %1568 = load ptr, ptr %9, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.nk_draw_list, ptr %1568, i32 0, i32 2
  %1570 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 0
  %1571 = load float, ptr %1570, align 4, !tbaa !39
  %1572 = load float, ptr %121, align 4, !tbaa !13
  %1573 = fadd float %1571, %1572
  %1574 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 1
  %1575 = load float, ptr %1574, align 4, !tbaa !40
  %1576 = load float, ptr %120, align 4, !tbaa !13
  %1577 = fsub float %1575, %1576
  %1578 = call <2 x float> @nk_vec2(float noundef %1573, float noundef %1577)
  store <2 x float> %1578, ptr %129, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %122, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1579 = load <2 x float>, ptr %129, align 4
  %1580 = load <2 x float>, ptr %130, align 4
  %1581 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %131, i32 0, i32 0
  %1582 = load <2 x float>, ptr %1581, align 4
  %1583 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %131, i32 0, i32 1
  %1584 = load <2 x float>, ptr %1583, align 4
  %1585 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1567, ptr noundef %1569, <2 x float> %1579, <2 x float> %1580, <2 x float> %1582, <2 x float> %1584)
  store ptr %1585, ptr %118, align 8, !tbaa !5
  %1586 = load ptr, ptr %118, align 8, !tbaa !5
  %1587 = load ptr, ptr %9, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.nk_draw_list, ptr %1587, i32 0, i32 2
  %1589 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 0
  %1590 = load float, ptr %1589, align 4, !tbaa !39
  %1591 = load float, ptr %121, align 4, !tbaa !13
  %1592 = fadd float %1590, %1591
  %1593 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 1
  %1594 = load float, ptr %1593, align 4, !tbaa !40
  %1595 = load float, ptr %120, align 4, !tbaa !13
  %1596 = fsub float %1594, %1595
  %1597 = call <2 x float> @nk_vec2(float noundef %1592, float noundef %1596)
  store <2 x float> %1597, ptr %132, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %122, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %134, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1598 = load <2 x float>, ptr %132, align 4
  %1599 = load <2 x float>, ptr %133, align 4
  %1600 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %134, i32 0, i32 0
  %1601 = load <2 x float>, ptr %1600, align 4
  %1602 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %134, i32 0, i32 1
  %1603 = load <2 x float>, ptr %1602, align 4
  %1604 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1586, ptr noundef %1588, <2 x float> %1598, <2 x float> %1599, <2 x float> %1601, <2 x float> %1603)
  store ptr %1604, ptr %118, align 8, !tbaa !5
  %1605 = load ptr, ptr %118, align 8, !tbaa !5
  %1606 = load ptr, ptr %9, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.nk_draw_list, ptr %1606, i32 0, i32 2
  %1608 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 0
  %1609 = load float, ptr %1608, align 4, !tbaa !39
  %1610 = load float, ptr %121, align 4, !tbaa !13
  %1611 = fsub float %1609, %1610
  %1612 = getelementptr inbounds %struct.nk_vec2, ptr %125, i32 0, i32 1
  %1613 = load float, ptr %1612, align 4, !tbaa !40
  %1614 = load float, ptr %120, align 4, !tbaa !13
  %1615 = fadd float %1613, %1614
  %1616 = call <2 x float> @nk_vec2(float noundef %1611, float noundef %1615)
  store <2 x float> %1616, ptr %135, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %136, ptr align 4 %122, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %137, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1617 = load <2 x float>, ptr %135, align 4
  %1618 = load <2 x float>, ptr %136, align 4
  %1619 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %137, i32 0, i32 0
  %1620 = load <2 x float>, ptr %1619, align 4
  %1621 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %137, i32 0, i32 1
  %1622 = load <2 x float>, ptr %1621, align 4
  %1623 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1605, ptr noundef %1607, <2 x float> %1617, <2 x float> %1618, <2 x float> %1620, <2 x float> %1622)
  store ptr %1623, ptr %118, align 8, !tbaa !5
  %1624 = load ptr, ptr %118, align 8, !tbaa !5
  %1625 = load ptr, ptr %9, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.nk_draw_list, ptr %1625, i32 0, i32 2
  %1627 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 0
  %1628 = load float, ptr %1627, align 4, !tbaa !39
  %1629 = load float, ptr %121, align 4, !tbaa !13
  %1630 = fsub float %1628, %1629
  %1631 = getelementptr inbounds %struct.nk_vec2, ptr %124, i32 0, i32 1
  %1632 = load float, ptr %1631, align 4, !tbaa !40
  %1633 = load float, ptr %120, align 4, !tbaa !13
  %1634 = fadd float %1632, %1633
  %1635 = call <2 x float> @nk_vec2(float noundef %1630, float noundef %1634)
  store <2 x float> %1635, ptr %138, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %139, ptr align 4 %122, i64 8, i1 false), !tbaa.struct !41
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %140, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !29
  %1636 = load <2 x float>, ptr %138, align 4
  %1637 = load <2 x float>, ptr %139, align 4
  %1638 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %140, i32 0, i32 0
  %1639 = load <2 x float>, ptr %1638, align 4
  %1640 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %140, i32 0, i32 1
  %1641 = load <2 x float>, ptr %1640, align 4
  %1642 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %1624, ptr noundef %1626, <2 x float> %1636, <2 x float> %1637, <2 x float> %1639, <2 x float> %1641)
  store ptr %1642, ptr %118, align 8, !tbaa !5
  %1643 = load i64, ptr %115, align 8, !tbaa !26
  %1644 = add i64 %1643, 0
  %1645 = trunc i64 %1644 to i16
  %1646 = load ptr, ptr %119, align 8, !tbaa !5
  %1647 = getelementptr inbounds i16, ptr %1646, i64 0
  store i16 %1645, ptr %1647, align 2, !tbaa !44
  %1648 = load i64, ptr %115, align 8, !tbaa !26
  %1649 = add i64 %1648, 1
  %1650 = trunc i64 %1649 to i16
  %1651 = load ptr, ptr %119, align 8, !tbaa !5
  %1652 = getelementptr inbounds i16, ptr %1651, i64 1
  store i16 %1650, ptr %1652, align 2, !tbaa !44
  %1653 = load i64, ptr %115, align 8, !tbaa !26
  %1654 = add i64 %1653, 2
  %1655 = trunc i64 %1654 to i16
  %1656 = load ptr, ptr %119, align 8, !tbaa !5
  %1657 = getelementptr inbounds i16, ptr %1656, i64 2
  store i16 %1655, ptr %1657, align 2, !tbaa !44
  %1658 = load i64, ptr %115, align 8, !tbaa !26
  %1659 = add i64 %1658, 0
  %1660 = trunc i64 %1659 to i16
  %1661 = load ptr, ptr %119, align 8, !tbaa !5
  %1662 = getelementptr inbounds i16, ptr %1661, i64 3
  store i16 %1660, ptr %1662, align 2, !tbaa !44
  %1663 = load i64, ptr %115, align 8, !tbaa !26
  %1664 = add i64 %1663, 2
  %1665 = trunc i64 %1664 to i16
  %1666 = load ptr, ptr %119, align 8, !tbaa !5
  %1667 = getelementptr inbounds i16, ptr %1666, i64 4
  store i16 %1665, ptr %1667, align 2, !tbaa !44
  %1668 = load i64, ptr %115, align 8, !tbaa !26
  %1669 = add i64 %1668, 3
  %1670 = trunc i64 %1669 to i16
  %1671 = load ptr, ptr %119, align 8, !tbaa !5
  %1672 = getelementptr inbounds i16, ptr %1671, i64 5
  store i16 %1670, ptr %1672, align 2, !tbaa !44
  %1673 = load ptr, ptr %119, align 8, !tbaa !5
  %1674 = getelementptr inbounds i16, ptr %1673, i64 6
  store ptr %1674, ptr %119, align 8, !tbaa !5
  %1675 = load i64, ptr %115, align 8, !tbaa !26
  %1676 = add i64 %1675, 4
  store i64 %1676, ptr %115, align 8, !tbaa !26
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #8
  br label %1677

1677:                                             ; preds = %1547
  %1678 = load i64, ptr %114, align 8, !tbaa !26
  %1679 = add i64 %1678, 1
  store i64 %1679, ptr %114, align 8, !tbaa !26
  br label %1494, !llvm.loop !50

1680:                                             ; preds = %1494
  store i32 0, ptr %19, align 4
  br label %1681

1681:                                             ; preds = %1680, %1492
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  %1682 = load i32, ptr %19, align 4
  switch i32 %1682, label %1685 [
    i32 0, label %1683
  ]

1683:                                             ; preds = %1681
  br label %1684

1684:                                             ; preds = %1683, %1471
  store i32 0, ptr %19, align 4
  br label %1685

1685:                                             ; preds = %1684, %1681, %1469, %152
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  %1686 = load i32, ptr %19, align 4
  switch i32 %1686, label %1688 [
    i32 0, label %1687
    i32 1, label %1687
  ]

1687:                                             ; preds = %1685, %1685
  ret void

1688:                                             ; preds = %1685
  unreachable
}

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef, i64 noundef) #6

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef, i64 noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL11nk_inv_sqrtf(float noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef, ptr noundef, <2 x float>, <2 x float>, <2 x float>, <2 x float>) #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS19nk_draw_list_stroke", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"_ZTS16nk_anti_aliasing", !7, i64 0}
!17 = !{!18, !7, i64 3}
!18 = !{!"_ZTS8nk_color", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3}
!19 = !{!20, !14, i64 112}
!20 = !{!"_ZTS12nk_draw_list", !21, i64 0, !7, i64 16, !22, i64 112, !6, i64 176, !6, i64 184, !6, i64 192, !10, i64 200, !10, i64 204, !10, i64 208, !25, i64 216, !10, i64 224, !10, i64 228, !16, i64 232, !16, i64 236}
!21 = !{!"_ZTS7nk_rect", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!22 = !{!"_ZTS17nk_convert_config", !14, i64 0, !16, i64 4, !16, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !23, i64 24, !6, i64 40, !25, i64 48, !25, i64 56}
!23 = !{!"_ZTS20nk_draw_null_texture", !7, i64 0, !24, i64 8}
!24 = !{!"_ZTS7nk_vec2", !14, i64 0, !14, i64 4}
!25 = !{!"long", !7, i64 0}
!26 = !{!25, !25, i64 0}
!27 = !{i64 0, i64 1, !28, i64 1, i64 1, !28, i64 2, i64 1, !28, i64 3, i64 1, !28}
!28 = !{!7, !7, i64 0}
!29 = !{i64 0, i64 4, !13, i64 4, i64 4, !13, i64 8, i64 4, !13, i64 12, i64 4, !13}
!30 = !{!31, !14, i64 12}
!31 = !{!"_ZTS9nk_colorf", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!32 = !{!20, !10, i64 204}
!33 = !{!20, !6, i64 184}
!34 = !{!35, !6, i64 64}
!35 = !{!"_ZTS9nk_buffer", !7, i64 0, !36, i64 32, !37, i64 56, !38, i64 64, !14, i64 80, !25, i64 88, !25, i64 96, !25, i64 104, !25, i64 112}
!36 = !{!"_ZTS12nk_allocator", !7, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTS18nk_allocation_type", !7, i64 0}
!38 = !{!"_ZTS9nk_memory", !6, i64 0, !25, i64 8}
!39 = !{!24, !14, i64 0}
!40 = !{!24, !14, i64 4}
!41 = !{i64 0, i64 4, !13, i64 4, i64 4, !13}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!45, !45, i64 0}
!45 = !{!"short", !7, i64 0}
!46 = distinct !{!46, !43}
!47 = distinct !{!47, !43}
!48 = distinct !{!48, !43}
!49 = distinct !{!49, !43}
!50 = distinct !{!50, !43}


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

%struct.nk_colorf = type { float, float, float, float }
%struct.nk_vec2 = type { float, float }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@__PRETTY_FUNCTION__.nk_draw_list_stroke_poly_line = external hidden unnamed_addr constant [175 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local <2 x float> @nk_vec2(float noundef, float noundef) local_unnamed_addr #0

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_color_fv(ptr noundef, i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15nk_buffer_allocP9nk_buffer25nk_buffer_allocation_typemm(ptr noundef, i32 noundef, i64 noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_buffer_mark(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @nk_buffer_reset(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local void @nk_draw_list_stroke_poly_line(ptr noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2, i32 %3, i32 noundef %4, float noundef %5, i32 noundef %6) local_unnamed_addr #6 {
  %8 = alloca %struct.nk_colorf, align 8
  %.sroa.2637.0.extract.shift = lshr i32 %3, 24
  %.sroa.2637.0.extract.trunc = trunc nuw i32 %.sroa.2637.0.extract.shift to i8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %9, label %10

9:                                                ; preds = %7
  tail call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 9821, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_draw_list_stroke_poly_line) #9
  unreachable

10:                                               ; preds = %7
  %11 = icmp ult i32 %2, 2
  br i1 %11, label %.critedge671, label %12

12:                                               ; preds = %10
  %13 = uitofp i8 %.sroa.2637.0.extract.trunc to float
  %14 = getelementptr inbounds i8, ptr %0, i64 112
  %15 = load float, ptr %14, align 8, !tbaa !5
  %16 = fmul float %15, %13
  %17 = fptoui float %16 to i8
  %18 = zext i32 %2 to i64
  %.not668 = icmp eq i32 %4, 0
  %19 = add i32 %2, -1
  %20 = zext i32 %19 to i64
  %.0 = select i1 %.not668, i64 %20, i64 %18
  %21 = fcmp ogt float %5, 1.000000e+00
  %22 = uitofp i8 %17 to float
  %23 = fmul float %15, %22
  %24 = fptoui float %23 to i8
  %.sroa.2637.0.insert.ext = zext i8 %24 to i32
  %.sroa.2637.0.insert.shift = shl nuw i32 %.sroa.2637.0.insert.ext, 24
  %.sroa.0636.0.insert.ext = and i32 %3, 16777215
  %.sroa.0636.0.insert.insert = or disjoint i32 %.sroa.2637.0.insert.shift, %.sroa.0636.0.insert.ext
  call void @nk_color_fv(ptr noundef nonnull %8, i32 %.sroa.0636.0.insert.insert)
  %.sroa.0495.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8
  %.sroa.7.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %.sroa.7.12.vec.insert = insertelement <2 x float> %.sroa.7.0.copyload, float 0.000000e+00, i64 1
  %25 = icmp eq i32 %6, 1
  %26 = getelementptr inbounds i8, ptr %0, i64 204
  %27 = load i32, ptr %26, align 4, !tbaa !18
  br i1 %25, label %28, label %423

28:                                               ; preds = %12
  %29 = zext i32 %27 to i64
  %.v = select i1 %21, i64 18, i64 12
  %30 = mul nuw nsw i64 %.v, %.0
  %31 = shl i32 %2, 2
  %32 = mul i32 %2, 3
  %33 = select i1 %21, i32 %31, i32 %32
  %34 = zext i32 %33 to i64
  %35 = call noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef nonnull %0, i64 noundef %34)
  %36 = call noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef nonnull %0, i64 noundef %30)
  %37 = icmp ne ptr %35, null
  %38 = icmp ne ptr %36, null
  %or.cond4 = and i1 %37, %38
  br i1 %or.cond4, label %39, label %.critedge671

39:                                               ; preds = %28
  %40 = getelementptr inbounds i8, ptr %0, i64 184
  %41 = load ptr, ptr %40, align 8, !tbaa !19
  %42 = getelementptr inbounds i8, ptr %41, i64 64
  %43 = load ptr, ptr %42, align 8, !tbaa !20
  call void @nk_buffer_mark(ptr noundef %41, i32 noundef 0)
  %44 = select i1 %21, i64 40, i64 24
  %45 = mul nuw nsw i64 %44, %18
  %46 = load ptr, ptr %40, align 8, !tbaa !19
  %47 = call noundef ptr @_ZL15nk_buffer_allocP9nk_buffer25nk_buffer_allocation_typemm(ptr noundef %46, i32 noundef 0, i64 noundef %45, i64 noundef 4)
  %.not669 = icmp eq ptr %47, null
  br i1 %.not669, label %.critedge671, label %.lr.ph681.preheader

.lr.ph681.preheader:                              ; preds = %39
  %48 = ptrtoint ptr %35 to i64
  %49 = ptrtoint ptr %43 to i64
  %50 = sub i64 %48, %49
  %51 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %18
  %52 = load ptr, ptr %40, align 8, !tbaa !19
  %53 = getelementptr inbounds i8, ptr %52, i64 64
  %54 = load ptr, ptr %53, align 8, !tbaa !20
  %55 = getelementptr inbounds i8, ptr %54, i64 %50
  br label %.lr.ph681

.lr.ph681:                                        ; preds = %.lr.ph681.preheader, %75
  %.0640680 = phi i64 [ %56, %75 ], [ 0, %.lr.ph681.preheader ]
  %56 = add nuw nsw i64 %.0640680, 1
  %57 = icmp eq i64 %56, %18
  %58 = select i1 %57, i64 0, i64 %56
  %59 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %58
  %60 = load float, ptr %59, align 4, !tbaa !25
  %61 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %.0640680
  %62 = load float, ptr %61, align 4, !tbaa !25
  %63 = fsub float %60, %62
  %64 = getelementptr inbounds i8, ptr %59, i64 4
  %65 = load float, ptr %64, align 4, !tbaa !26
  %66 = getelementptr inbounds i8, ptr %61, i64 4
  %67 = load float, ptr %66, align 4, !tbaa !26
  %68 = fsub float %65, %67
  %69 = call <2 x float> @nk_vec2(float noundef %63, float noundef %68)
  %.sroa.0337.0.vec.extract = extractelement <2 x float> %69, i64 0
  %.sroa.0337.4.vec.extract = extractelement <2 x float> %69, i64 1
  %70 = fmul float %.sroa.0337.4.vec.extract, %.sroa.0337.4.vec.extract
  %71 = call float @llvm.fmuladd.f32(float %.sroa.0337.0.vec.extract, float %.sroa.0337.0.vec.extract, float %70)
  %72 = fcmp une float %71, 0.000000e+00
  br i1 %72, label %73, label %75

73:                                               ; preds = %.lr.ph681
  %74 = call noundef float @_ZL11nk_inv_sqrtf(float noundef %71)
  br label %75

75:                                               ; preds = %.lr.ph681, %73
  %.0646 = phi float [ %74, %73 ], [ 1.000000e+00, %.lr.ph681 ]
  %76 = fmul float %.sroa.0337.0.vec.extract, %.0646
  %77 = fmul float %.sroa.0337.4.vec.extract, %.0646
  %78 = call <2 x float> @nk_vec2(float noundef %76, float noundef %77)
  %.sroa.0337.4.vec.extract349 = extractelement <2 x float> %78, i64 1
  %79 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %.0640680
  store float %.sroa.0337.4.vec.extract349, ptr %79, align 4, !tbaa !25
  %.sroa.0337.0.vec.extract343 = extractelement <2 x float> %78, i64 0
  %80 = fneg float %.sroa.0337.0.vec.extract343
  %81 = getelementptr inbounds i8, ptr %79, i64 4
  store float %80, ptr %81, align 4, !tbaa !26
  %exitcond700.not = icmp eq i64 %56, %.0
  br i1 %exitcond700.not, label %._crit_edge, label %.lr.ph681, !llvm.loop !27

._crit_edge:                                      ; preds = %75
  br i1 %.not668, label %82, label %.thread

82:                                               ; preds = %._crit_edge
  %83 = add i32 %2, -2
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %84
  %86 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %20
  %87 = load i64, ptr %85, align 4
  store i64 %87, ptr %86, align 4
  br i1 %21, label %221, label %90

.thread:                                          ; preds = %._crit_edge
  br i1 %21, label %.thread673, label %.lr.ph685.preheader

.lr.ph685.preheader:                              ; preds = %90, %.thread
  br label %.lr.ph685

.thread673:                                       ; preds = %.thread
  %88 = fadd float %5, -1.000000e+00
  %89 = fmul float %88, 5.000000e-01
  br label %.lr.ph692

90:                                               ; preds = %82
  %91 = load float, ptr %1, align 4, !tbaa !25
  %92 = load float, ptr %47, align 4, !tbaa !25
  %93 = getelementptr inbounds i8, ptr %47, i64 4
  %94 = load float, ptr %93, align 4, !tbaa !26
  %95 = call <2 x float> @nk_vec2(float noundef %92, float noundef %94)
  %.sroa.0313.0.vec.extract = extractelement <2 x float> %95, i64 0
  %96 = fadd float %91, %.sroa.0313.0.vec.extract
  %97 = getelementptr inbounds i8, ptr %1, i64 4
  %98 = load float, ptr %97, align 4, !tbaa !26
  %99 = load float, ptr %47, align 4, !tbaa !25
  %100 = load float, ptr %93, align 4, !tbaa !26
  %101 = call <2 x float> @nk_vec2(float noundef %99, float noundef %100)
  %.sroa.0312.4.vec.extract = extractelement <2 x float> %101, i64 1
  %102 = fadd float %98, %.sroa.0312.4.vec.extract
  %103 = call <2 x float> @nk_vec2(float noundef %96, float noundef %102)
  store <2 x float> %103, ptr %51, align 4
  %104 = load float, ptr %1, align 4, !tbaa !25
  %105 = load float, ptr %47, align 4, !tbaa !25
  %106 = load float, ptr %93, align 4, !tbaa !26
  %107 = call <2 x float> @nk_vec2(float noundef %105, float noundef %106)
  %.sroa.0310.0.vec.extract = extractelement <2 x float> %107, i64 0
  %108 = fsub float %104, %.sroa.0310.0.vec.extract
  %109 = load float, ptr %97, align 4, !tbaa !26
  %110 = load float, ptr %47, align 4, !tbaa !25
  %111 = load float, ptr %93, align 4, !tbaa !26
  %112 = call <2 x float> @nk_vec2(float noundef %110, float noundef %111)
  %.sroa.0309.4.vec.extract = extractelement <2 x float> %112, i64 1
  %113 = fsub float %109, %.sroa.0309.4.vec.extract
  %114 = call <2 x float> @nk_vec2(float noundef %108, float noundef %113)
  %115 = getelementptr inbounds i8, ptr %51, i64 8
  store <2 x float> %114, ptr %115, align 4
  %116 = load float, ptr %86, align 4, !tbaa !25
  %117 = getelementptr inbounds i8, ptr %86, i64 4
  %118 = load float, ptr %117, align 4, !tbaa !26
  %119 = call <2 x float> @nk_vec2(float noundef %116, float noundef %118)
  %120 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %20
  %121 = load float, ptr %120, align 4, !tbaa !25
  %.sroa.0315.0.vec.extract = extractelement <2 x float> %119, i64 0
  %122 = fadd float %121, %.sroa.0315.0.vec.extract
  %123 = getelementptr inbounds i8, ptr %120, i64 4
  %124 = load float, ptr %123, align 4, !tbaa !26
  %.sroa.0315.4.vec.extract = extractelement <2 x float> %119, i64 1
  %125 = fadd float %.sroa.0315.4.vec.extract, %124
  %126 = call <2 x float> @nk_vec2(float noundef %122, float noundef %125)
  %127 = shl i32 %19, 1
  %128 = zext i32 %127 to i64
  %129 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %128
  store <2 x float> %126, ptr %129, align 4
  %130 = load float, ptr %120, align 4, !tbaa !25
  %131 = fsub float %130, %.sroa.0315.0.vec.extract
  %132 = load float, ptr %123, align 4, !tbaa !26
  %133 = fsub float %132, %.sroa.0315.4.vec.extract
  %134 = call <2 x float> @nk_vec2(float noundef %131, float noundef %133)
  %135 = or disjoint i32 %127, 1
  %136 = zext i32 %135 to i64
  %137 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %136
  store <2 x float> %134, ptr %137, align 4
  br label %.lr.ph685.preheader

.preheader674:                                    ; preds = %175
  %138 = getelementptr inbounds i8, ptr %0, i64 144
  %umax = call i64 @llvm.umax.i64(i64 %18, i64 1)
  br label %211

.lr.ph685:                                        ; preds = %.lr.ph685.preheader, %175
  %.1641684 = phi i64 [ %139, %175 ], [ 0, %.lr.ph685.preheader ]
  %.0644683 = phi ptr [ %210, %175 ], [ %36, %.lr.ph685.preheader ]
  %.0647682 = phi i64 [ %143, %175 ], [ %29, %.lr.ph685.preheader ]
  %139 = add nuw nsw i64 %.1641684, 1
  %140 = icmp eq i64 %139, %18
  %141 = select i1 %140, i64 0, i64 %139
  %142 = add i64 %.0647682, 3
  %143 = select i1 %140, i64 %29, i64 %142
  %144 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %.1641684
  %145 = load float, ptr %144, align 4, !tbaa !25
  %146 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %141
  %147 = load float, ptr %146, align 4, !tbaa !25
  %148 = fadd float %145, %147
  %149 = getelementptr inbounds i8, ptr %144, i64 4
  %150 = load float, ptr %149, align 4, !tbaa !26
  %151 = getelementptr inbounds i8, ptr %146, i64 4
  %152 = load float, ptr %151, align 4, !tbaa !26
  %153 = fadd float %150, %152
  %154 = call <2 x float> @nk_vec2(float noundef %148, float noundef %153)
  %.sroa.0264.0.vec.extract = extractelement <2 x float> %154, i64 0
  %155 = fmul float %.sroa.0264.0.vec.extract, 5.000000e-01
  %156 = load float, ptr %144, align 4, !tbaa !25
  %157 = load float, ptr %146, align 4, !tbaa !25
  %158 = fadd float %156, %157
  %159 = load float, ptr %149, align 4, !tbaa !26
  %160 = load float, ptr %151, align 4, !tbaa !26
  %161 = fadd float %159, %160
  %162 = call <2 x float> @nk_vec2(float noundef %158, float noundef %161)
  %.sroa.0263.4.vec.extract = extractelement <2 x float> %162, i64 1
  %163 = fmul float %.sroa.0263.4.vec.extract, 5.000000e-01
  %164 = call <2 x float> @nk_vec2(float noundef %155, float noundef %163)
  %.sroa.0285.0.vec.extract = extractelement <2 x float> %164, i64 0
  %.sroa.0285.4.vec.extract = extractelement <2 x float> %164, i64 1
  %165 = fmul float %.sroa.0285.4.vec.extract, %.sroa.0285.4.vec.extract
  %166 = call float @llvm.fmuladd.f32(float %.sroa.0285.0.vec.extract, float %.sroa.0285.0.vec.extract, float %165)
  %167 = fcmp ogt float %166, 0x3EB0C6F7A0000000
  br i1 %167, label %168, label %175

168:                                              ; preds = %.lr.ph685
  %169 = fdiv float 1.000000e+00, %166
  %170 = fcmp ogt float %169, 1.000000e+02
  %171 = select i1 %170, float 1.000000e+02, float %169
  %172 = fmul float %.sroa.0285.0.vec.extract, %171
  %173 = fmul float %.sroa.0285.4.vec.extract, %171
  %174 = call <2 x float> @nk_vec2(float noundef %172, float noundef %173)
  %.pre707 = extractelement <2 x float> %174, i64 0
  %.pre708 = extractelement <2 x float> %174, i64 1
  br label %175

175:                                              ; preds = %168, %.lr.ph685
  %.sroa.0285.4.vec.extract301.pre-phi = phi float [ %.pre708, %168 ], [ %.sroa.0285.4.vec.extract, %.lr.ph685 ]
  %.sroa.0285.0.vec.extract291.pre-phi = phi float [ %.pre707, %168 ], [ %.sroa.0285.0.vec.extract, %.lr.ph685 ]
  %176 = call <2 x float> @nk_vec2(float noundef %.sroa.0285.0.vec.extract291.pre-phi, float noundef %.sroa.0285.4.vec.extract301.pre-phi)
  %177 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %141
  %178 = load float, ptr %177, align 4, !tbaa !25
  %.sroa.0285.0.vec.extract293 = extractelement <2 x float> %176, i64 0
  %179 = fadd float %178, %.sroa.0285.0.vec.extract293
  %180 = getelementptr inbounds i8, ptr %177, i64 4
  %181 = load float, ptr %180, align 4, !tbaa !26
  %.sroa.0285.4.vec.extract303 = extractelement <2 x float> %176, i64 1
  %182 = fadd float %.sroa.0285.4.vec.extract303, %181
  %183 = call <2 x float> @nk_vec2(float noundef %179, float noundef %182)
  %184 = shl nuw nsw i64 %141, 1
  %185 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %184
  store <2 x float> %183, ptr %185, align 4
  %186 = load float, ptr %177, align 4, !tbaa !25
  %187 = fsub float %186, %.sroa.0285.0.vec.extract293
  %188 = load float, ptr %180, align 4, !tbaa !26
  %189 = fsub float %188, %.sroa.0285.4.vec.extract303
  %190 = call <2 x float> @nk_vec2(float noundef %187, float noundef %189)
  %191 = or disjoint i64 %184, 1
  %192 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %191
  store <2 x float> %190, ptr %192, align 4
  %193 = trunc i64 %143 to i16
  store i16 %193, ptr %.0644683, align 2, !tbaa !29
  %194 = trunc i64 %.0647682 to i16
  %195 = getelementptr inbounds i8, ptr %.0644683, i64 2
  store i16 %194, ptr %195, align 2, !tbaa !29
  %196 = add i16 %194, 2
  %197 = getelementptr inbounds i8, ptr %.0644683, i64 4
  store i16 %196, ptr %197, align 2, !tbaa !29
  %198 = getelementptr inbounds i8, ptr %.0644683, i64 6
  store i16 %196, ptr %198, align 2, !tbaa !29
  %199 = add i16 %193, 2
  %200 = getelementptr inbounds i8, ptr %.0644683, i64 8
  store i16 %199, ptr %200, align 2, !tbaa !29
  %201 = getelementptr inbounds i8, ptr %.0644683, i64 10
  store i16 %193, ptr %201, align 2, !tbaa !29
  %202 = add i16 %193, 1
  %203 = getelementptr inbounds i8, ptr %.0644683, i64 12
  store i16 %202, ptr %203, align 2, !tbaa !29
  %204 = add i16 %194, 1
  %205 = getelementptr inbounds i8, ptr %.0644683, i64 14
  store i16 %204, ptr %205, align 2, !tbaa !29
  %206 = getelementptr inbounds i8, ptr %.0644683, i64 16
  store i16 %194, ptr %206, align 2, !tbaa !29
  %207 = getelementptr inbounds i8, ptr %.0644683, i64 18
  store i16 %194, ptr %207, align 2, !tbaa !29
  %208 = getelementptr inbounds i8, ptr %.0644683, i64 20
  store i16 %193, ptr %208, align 2, !tbaa !29
  %209 = getelementptr inbounds i8, ptr %.0644683, i64 22
  store i16 %202, ptr %209, align 2, !tbaa !29
  %210 = getelementptr inbounds i8, ptr %.0644683, i64 24
  %exitcond701.not = icmp eq i64 %139, %.0
  br i1 %exitcond701.not, label %.preheader674, label %.lr.ph685, !llvm.loop !31

211:                                              ; preds = %.preheader674, %211
  %.0642687 = phi ptr [ %55, %.preheader674 ], [ %219, %211 ]
  %.0648686 = phi i64 [ 0, %.preheader674 ], [ %220, %211 ]
  %.sroa.0252.0.copyload = load <2 x float>, ptr %138, align 8
  %212 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %.0648686
  %.sroa.0251.0.copyload = load <2 x float>, ptr %212, align 4
  %.sroa.0248.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.2249.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %213 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %.0642687, ptr noundef nonnull %14, <2 x float> %.sroa.0251.0.copyload, <2 x float> %.sroa.0252.0.copyload, <2 x float> %.sroa.0248.0.copyload, <2 x float> %.sroa.2249.0.copyload)
  %214 = shl nuw nsw i64 %.0648686, 1
  %215 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %214
  %.sroa.0247.0.copyload = load <2 x float>, ptr %215, align 4
  %216 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %213, ptr noundef nonnull %14, <2 x float> %.sroa.0247.0.copyload, <2 x float> %.sroa.0252.0.copyload, <2 x float> %.sroa.0495.0.copyload, <2 x float> %.sroa.7.12.vec.insert)
  %217 = or disjoint i64 %214, 1
  %218 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %217
  %.sroa.0243.0.copyload = load <2 x float>, ptr %218, align 4
  %219 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %216, ptr noundef nonnull %14, <2 x float> %.sroa.0243.0.copyload, <2 x float> %.sroa.0252.0.copyload, <2 x float> %.sroa.0495.0.copyload, <2 x float> %.sroa.7.12.vec.insert)
  %220 = add nuw nsw i64 %.0648686, 1
  %exitcond702.not = icmp eq i64 %220, %umax
  br i1 %exitcond702.not, label %.critedge, label %211, !llvm.loop !32

221:                                              ; preds = %82
  %222 = fadd float %5, -1.000000e+00
  %223 = fmul float %222, 5.000000e-01
  %224 = load float, ptr %47, align 4, !tbaa !25
  %225 = fadd float %223, 1.000000e+00
  %226 = fmul float %225, %224
  %227 = getelementptr inbounds i8, ptr %47, i64 4
  %228 = load float, ptr %227, align 4, !tbaa !26
  %229 = fmul float %225, %228
  %230 = call <2 x float> @nk_vec2(float noundef %226, float noundef %229)
  %231 = load float, ptr %47, align 4, !tbaa !25
  %232 = fmul float %223, %231
  %233 = load float, ptr %227, align 4, !tbaa !26
  %234 = fmul float %223, %233
  %235 = call <2 x float> @nk_vec2(float noundef %232, float noundef %234)
  %236 = load float, ptr %1, align 4, !tbaa !25
  %.sroa.0199.0.vec.extract = extractelement <2 x float> %230, i64 0
  %237 = fadd float %.sroa.0199.0.vec.extract, %236
  %238 = getelementptr inbounds i8, ptr %1, i64 4
  %239 = load float, ptr %238, align 4, !tbaa !26
  %.sroa.0199.4.vec.extract = extractelement <2 x float> %230, i64 1
  %240 = fadd float %.sroa.0199.4.vec.extract, %239
  %241 = call <2 x float> @nk_vec2(float noundef %237, float noundef %240)
  store <2 x float> %241, ptr %51, align 4
  %242 = load float, ptr %1, align 4, !tbaa !25
  %.sroa.0186.0.vec.extract = extractelement <2 x float> %235, i64 0
  %243 = fadd float %.sroa.0186.0.vec.extract, %242
  %244 = load float, ptr %238, align 4, !tbaa !26
  %.sroa.0186.4.vec.extract = extractelement <2 x float> %235, i64 1
  %245 = fadd float %.sroa.0186.4.vec.extract, %244
  %246 = call <2 x float> @nk_vec2(float noundef %243, float noundef %245)
  %247 = getelementptr inbounds i8, ptr %51, i64 8
  store <2 x float> %246, ptr %247, align 4
  %248 = load float, ptr %1, align 4, !tbaa !25
  %249 = fsub float %248, %.sroa.0186.0.vec.extract
  %250 = load float, ptr %238, align 4, !tbaa !26
  %251 = fsub float %250, %.sroa.0186.4.vec.extract
  %252 = call <2 x float> @nk_vec2(float noundef %249, float noundef %251)
  %253 = getelementptr inbounds i8, ptr %51, i64 16
  store <2 x float> %252, ptr %253, align 4
  %254 = load float, ptr %1, align 4, !tbaa !25
  %255 = fsub float %254, %.sroa.0199.0.vec.extract
  %256 = load float, ptr %238, align 4, !tbaa !26
  %257 = fsub float %256, %.sroa.0199.4.vec.extract
  %258 = call <2 x float> @nk_vec2(float noundef %255, float noundef %257)
  %259 = getelementptr inbounds i8, ptr %51, i64 24
  store <2 x float> %258, ptr %259, align 4
  %260 = load float, ptr %86, align 4, !tbaa !25
  %261 = fmul float %225, %260
  %262 = getelementptr inbounds i8, ptr %86, i64 4
  %263 = load float, ptr %262, align 4, !tbaa !26
  %264 = fmul float %225, %263
  %265 = call <2 x float> @nk_vec2(float noundef %261, float noundef %264)
  %266 = load float, ptr %86, align 4, !tbaa !25
  %267 = fmul float %223, %266
  %268 = load float, ptr %262, align 4, !tbaa !26
  %269 = fmul float %223, %268
  %270 = call <2 x float> @nk_vec2(float noundef %267, float noundef %269)
  %271 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %20
  %272 = load float, ptr %271, align 4, !tbaa !25
  %.sroa.0199.0.vec.extract203 = extractelement <2 x float> %265, i64 0
  %273 = fadd float %.sroa.0199.0.vec.extract203, %272
  %274 = getelementptr inbounds i8, ptr %271, i64 4
  %275 = load float, ptr %274, align 4, !tbaa !26
  %.sroa.0199.4.vec.extract209 = extractelement <2 x float> %265, i64 1
  %276 = fadd float %.sroa.0199.4.vec.extract209, %275
  %277 = call <2 x float> @nk_vec2(float noundef %273, float noundef %276)
  %278 = shl i32 %19, 2
  %279 = zext i32 %278 to i64
  %280 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %279
  store <2 x float> %277, ptr %280, align 4
  %281 = load float, ptr %271, align 4, !tbaa !25
  %.sroa.0186.0.vec.extract190 = extractelement <2 x float> %270, i64 0
  %282 = fadd float %.sroa.0186.0.vec.extract190, %281
  %283 = load float, ptr %274, align 4, !tbaa !26
  %.sroa.0186.4.vec.extract196 = extractelement <2 x float> %270, i64 1
  %284 = fadd float %.sroa.0186.4.vec.extract196, %283
  %285 = call <2 x float> @nk_vec2(float noundef %282, float noundef %284)
  %286 = or disjoint i32 %278, 1
  %287 = zext i32 %286 to i64
  %288 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %287
  store <2 x float> %285, ptr %288, align 4
  %289 = load float, ptr %271, align 4, !tbaa !25
  %290 = fsub float %289, %.sroa.0186.0.vec.extract190
  %291 = load float, ptr %274, align 4, !tbaa !26
  %292 = fsub float %291, %.sroa.0186.4.vec.extract196
  %293 = call <2 x float> @nk_vec2(float noundef %290, float noundef %292)
  %294 = or disjoint i32 %278, 2
  %295 = zext i32 %294 to i64
  %296 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %295
  store <2 x float> %293, ptr %296, align 4
  %297 = load float, ptr %271, align 4, !tbaa !25
  %298 = fsub float %297, %.sroa.0199.0.vec.extract203
  %299 = load float, ptr %274, align 4, !tbaa !26
  %300 = fsub float %299, %.sroa.0199.4.vec.extract209
  %301 = call <2 x float> @nk_vec2(float noundef %298, float noundef %300)
  %302 = or disjoint i32 %278, 3
  %303 = zext i32 %302 to i64
  %304 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %303
  store <2 x float> %301, ptr %304, align 4
  br label %.lr.ph692

.lr.ph692:                                        ; preds = %221, %.thread673
  %305 = phi float [ %89, %.thread673 ], [ %223, %221 ]
  %306 = fadd float %305, 1.000000e+00
  br label %308

.preheader:                                       ; preds = %345
  %307 = getelementptr inbounds i8, ptr %0, i64 144
  %umax704 = call i64 @llvm.umax.i64(i64 %18, i64 1)
  br label %408

308:                                              ; preds = %.lr.ph692, %345
  %.2690 = phi i64 [ 0, %.lr.ph692 ], [ %309, %345 ]
  %.1645689 = phi ptr [ %36, %.lr.ph692 ], [ %407, %345 ]
  %.0649688 = phi i64 [ %29, %.lr.ph692 ], [ %313, %345 ]
  %309 = add nuw nsw i64 %.2690, 1
  %310 = icmp eq i64 %309, %18
  %311 = select i1 %310, i64 0, i64 %309
  %312 = add i64 %.0649688, 4
  %313 = select i1 %310, i64 %29, i64 %312
  %314 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %.2690
  %315 = load float, ptr %314, align 4, !tbaa !25
  %316 = getelementptr inbounds %struct.nk_vec2, ptr %47, i64 %311
  %317 = load float, ptr %316, align 4, !tbaa !25
  %318 = fadd float %315, %317
  %319 = getelementptr inbounds i8, ptr %314, i64 4
  %320 = load float, ptr %319, align 4, !tbaa !26
  %321 = getelementptr inbounds i8, ptr %316, i64 4
  %322 = load float, ptr %321, align 4, !tbaa !26
  %323 = fadd float %320, %322
  %324 = call <2 x float> @nk_vec2(float noundef %318, float noundef %323)
  %.sroa.0122.0.vec.extract = extractelement <2 x float> %324, i64 0
  %325 = fmul float %.sroa.0122.0.vec.extract, 5.000000e-01
  %326 = load float, ptr %314, align 4, !tbaa !25
  %327 = load float, ptr %316, align 4, !tbaa !25
  %328 = fadd float %326, %327
  %329 = load float, ptr %319, align 4, !tbaa !26
  %330 = load float, ptr %321, align 4, !tbaa !26
  %331 = fadd float %329, %330
  %332 = call <2 x float> @nk_vec2(float noundef %328, float noundef %331)
  %.sroa.0121.4.vec.extract = extractelement <2 x float> %332, i64 1
  %333 = fmul float %.sroa.0121.4.vec.extract, 5.000000e-01
  %334 = call <2 x float> @nk_vec2(float noundef %325, float noundef %333)
  %.sroa.0123.0.vec.extract = extractelement <2 x float> %334, i64 0
  %.sroa.0123.4.vec.extract = extractelement <2 x float> %334, i64 1
  %335 = fmul float %.sroa.0123.4.vec.extract, %.sroa.0123.4.vec.extract
  %336 = call float @llvm.fmuladd.f32(float %.sroa.0123.0.vec.extract, float %.sroa.0123.0.vec.extract, float %335)
  %337 = fcmp ogt float %336, 0x3EB0C6F7A0000000
  br i1 %337, label %338, label %345

338:                                              ; preds = %308
  %339 = fdiv float 1.000000e+00, %336
  %340 = fcmp ogt float %339, 1.000000e+02
  %341 = select i1 %340, float 1.000000e+02, float %339
  %342 = fmul float %.sroa.0123.0.vec.extract, %341
  %343 = fmul float %.sroa.0123.4.vec.extract, %341
  %344 = call <2 x float> @nk_vec2(float noundef %342, float noundef %343)
  %.pre = extractelement <2 x float> %344, i64 0
  %.pre706 = extractelement <2 x float> %344, i64 1
  br label %345

345:                                              ; preds = %338, %308
  %.sroa.0123.4.vec.extract137.pre-phi = phi float [ %.pre706, %338 ], [ %.sroa.0123.4.vec.extract, %308 ]
  %.sroa.0123.0.vec.extract129.pre-phi = phi float [ %.pre, %338 ], [ %.sroa.0123.0.vec.extract, %308 ]
  %346 = fmul float %306, %.sroa.0123.0.vec.extract129.pre-phi
  %347 = fmul float %306, %.sroa.0123.4.vec.extract137.pre-phi
  %348 = call <2 x float> @nk_vec2(float noundef %346, float noundef %347)
  %349 = fmul float %305, %.sroa.0123.0.vec.extract129.pre-phi
  %350 = fmul float %305, %.sroa.0123.4.vec.extract137.pre-phi
  %351 = call <2 x float> @nk_vec2(float noundef %349, float noundef %350)
  %352 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %311
  %353 = load float, ptr %352, align 4, !tbaa !25
  %.sroa.0171.0.vec.extract = extractelement <2 x float> %348, i64 0
  %354 = fadd float %.sroa.0171.0.vec.extract, %353
  %355 = getelementptr inbounds i8, ptr %352, i64 4
  %356 = load float, ptr %355, align 4, !tbaa !26
  %.sroa.0171.4.vec.extract = extractelement <2 x float> %348, i64 1
  %357 = fadd float %.sroa.0171.4.vec.extract, %356
  %358 = call <2 x float> @nk_vec2(float noundef %354, float noundef %357)
  %359 = shl nuw nsw i64 %311, 2
  %360 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %359
  store <2 x float> %358, ptr %360, align 4
  %361 = load float, ptr %352, align 4, !tbaa !25
  %.sroa.0166.0.vec.extract = extractelement <2 x float> %351, i64 0
  %362 = fadd float %.sroa.0166.0.vec.extract, %361
  %363 = load float, ptr %355, align 4, !tbaa !26
  %.sroa.0166.4.vec.extract = extractelement <2 x float> %351, i64 1
  %364 = fadd float %.sroa.0166.4.vec.extract, %363
  %365 = call <2 x float> @nk_vec2(float noundef %362, float noundef %364)
  %366 = or disjoint i64 %359, 1
  %367 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %366
  store <2 x float> %365, ptr %367, align 4
  %368 = load float, ptr %352, align 4, !tbaa !25
  %369 = fsub float %368, %.sroa.0166.0.vec.extract
  %370 = load float, ptr %355, align 4, !tbaa !26
  %371 = fsub float %370, %.sroa.0166.4.vec.extract
  %372 = call <2 x float> @nk_vec2(float noundef %369, float noundef %371)
  %373 = or disjoint i64 %359, 2
  %374 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %373
  store <2 x float> %372, ptr %374, align 4
  %375 = load float, ptr %352, align 4, !tbaa !25
  %376 = fsub float %375, %.sroa.0171.0.vec.extract
  %377 = load float, ptr %355, align 4, !tbaa !26
  %378 = fsub float %377, %.sroa.0171.4.vec.extract
  %379 = call <2 x float> @nk_vec2(float noundef %376, float noundef %378)
  %380 = or disjoint i64 %359, 3
  %381 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %380
  store <2 x float> %379, ptr %381, align 4
  %382 = trunc i64 %313 to i16
  %383 = add i16 %382, 1
  store i16 %383, ptr %.1645689, align 2, !tbaa !29
  %384 = trunc i64 %.0649688 to i16
  %385 = add i16 %384, 1
  %386 = getelementptr inbounds i8, ptr %.1645689, i64 2
  store i16 %385, ptr %386, align 2, !tbaa !29
  %387 = add i16 %384, 2
  %388 = getelementptr inbounds i8, ptr %.1645689, i64 4
  store i16 %387, ptr %388, align 2, !tbaa !29
  %389 = getelementptr inbounds i8, ptr %.1645689, i64 6
  store i16 %387, ptr %389, align 2, !tbaa !29
  %390 = add i16 %382, 2
  %391 = getelementptr inbounds i8, ptr %.1645689, i64 8
  store i16 %390, ptr %391, align 2, !tbaa !29
  %392 = getelementptr inbounds i8, ptr %.1645689, i64 10
  store i16 %383, ptr %392, align 2, !tbaa !29
  %393 = getelementptr inbounds i8, ptr %.1645689, i64 12
  store i16 %383, ptr %393, align 2, !tbaa !29
  %394 = getelementptr inbounds i8, ptr %.1645689, i64 14
  store i16 %385, ptr %394, align 2, !tbaa !29
  %395 = getelementptr inbounds i8, ptr %.1645689, i64 16
  store i16 %384, ptr %395, align 2, !tbaa !29
  %396 = getelementptr inbounds i8, ptr %.1645689, i64 18
  store i16 %384, ptr %396, align 2, !tbaa !29
  %397 = getelementptr inbounds i8, ptr %.1645689, i64 20
  store i16 %382, ptr %397, align 2, !tbaa !29
  %398 = getelementptr inbounds i8, ptr %.1645689, i64 22
  store i16 %383, ptr %398, align 2, !tbaa !29
  %399 = getelementptr inbounds i8, ptr %.1645689, i64 24
  store i16 %390, ptr %399, align 2, !tbaa !29
  %400 = getelementptr inbounds i8, ptr %.1645689, i64 26
  store i16 %387, ptr %400, align 2, !tbaa !29
  %401 = add i16 %384, 3
  %402 = getelementptr inbounds i8, ptr %.1645689, i64 28
  store i16 %401, ptr %402, align 2, !tbaa !29
  %403 = getelementptr inbounds i8, ptr %.1645689, i64 30
  store i16 %401, ptr %403, align 2, !tbaa !29
  %404 = add i16 %382, 3
  %405 = getelementptr inbounds i8, ptr %.1645689, i64 32
  store i16 %404, ptr %405, align 2, !tbaa !29
  %406 = getelementptr inbounds i8, ptr %.1645689, i64 34
  store i16 %390, ptr %406, align 2, !tbaa !29
  %407 = getelementptr inbounds i8, ptr %.1645689, i64 36
  %exitcond703.not = icmp eq i64 %309, %.0
  br i1 %exitcond703.not, label %.preheader, label %308, !llvm.loop !33

408:                                              ; preds = %.preheader, %408
  %.1643694 = phi ptr [ %55, %.preheader ], [ %420, %408 ]
  %.0650693 = phi i64 [ 0, %.preheader ], [ %421, %408 ]
  %.sroa.0104.0.copyload = load <2 x float>, ptr %307, align 8
  %409 = shl nuw nsw i64 %.0650693, 2
  %410 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %409
  %.sroa.0103.0.copyload = load <2 x float>, ptr %410, align 4
  %411 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %.1643694, ptr noundef nonnull %14, <2 x float> %.sroa.0103.0.copyload, <2 x float> %.sroa.0104.0.copyload, <2 x float> %.sroa.0495.0.copyload, <2 x float> %.sroa.7.12.vec.insert)
  %412 = or disjoint i64 %409, 1
  %413 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %412
  %.sroa.099.0.copyload = load <2 x float>, ptr %413, align 4
  %.sroa.096.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.297.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %414 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %411, ptr noundef nonnull %14, <2 x float> %.sroa.099.0.copyload, <2 x float> %.sroa.0104.0.copyload, <2 x float> %.sroa.096.0.copyload, <2 x float> %.sroa.297.0.copyload)
  %415 = or disjoint i64 %409, 2
  %416 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %415
  %.sroa.095.0.copyload = load <2 x float>, ptr %416, align 4
  %.sroa.092.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.293.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %417 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %414, ptr noundef nonnull %14, <2 x float> %.sroa.095.0.copyload, <2 x float> %.sroa.0104.0.copyload, <2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.293.0.copyload)
  %418 = or disjoint i64 %409, 3
  %419 = getelementptr inbounds %struct.nk_vec2, ptr %51, i64 %418
  %.sroa.091.0.copyload = load <2 x float>, ptr %419, align 4
  %420 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %417, ptr noundef nonnull %14, <2 x float> %.sroa.091.0.copyload, <2 x float> %.sroa.0104.0.copyload, <2 x float> %.sroa.0495.0.copyload, <2 x float> %.sroa.7.12.vec.insert)
  %421 = add nuw nsw i64 %.0650693, 1
  %exitcond705.not = icmp eq i64 %421, %umax704
  br i1 %exitcond705.not, label %.critedge, label %408, !llvm.loop !34

.critedge:                                        ; preds = %211, %408
  %422 = load ptr, ptr %40, align 8, !tbaa !19
  call void @nk_buffer_reset(ptr noundef %422, i32 noundef 0)
  br label %.critedge671

423:                                              ; preds = %12
  %424 = mul nuw nsw i64 %.0, 6
  %425 = shl nuw nsw i64 %.0, 2
  %426 = call noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef nonnull %0, i64 noundef %425)
  %427 = call noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef nonnull %0, i64 noundef %424)
  %428 = icmp ne ptr %426, null
  %429 = icmp ne ptr %427, null
  %or.cond6 = and i1 %428, %429
  br i1 %or.cond6, label %.lr.ph, label %.critedge671

.lr.ph:                                           ; preds = %423
  %430 = trunc i32 %27 to i16
  %431 = getelementptr inbounds i8, ptr %0, i64 144
  %432 = fmul float %5, 5.000000e-01
  br label %433

433:                                              ; preds = %.lr.ph, %447
  %.0651679 = phi i64 [ 0, %.lr.ph ], [ %434, %447 ]
  %.0652678 = phi i16 [ %430, %.lr.ph ], [ %478, %447 ]
  %.0654677 = phi ptr [ %426, %.lr.ph ], [ %468, %447 ]
  %.0655676 = phi ptr [ %427, %.lr.ph ], [ %477, %447 ]
  %.sroa.049.0.copyload = load <2 x float>, ptr %431, align 8
  %434 = add nuw nsw i64 %.0651679, 1
  %435 = icmp eq i64 %434, %18
  %436 = select i1 %435, i64 0, i64 %434
  %437 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %.0651679
  %.sroa.043.0.copyload = load float, ptr %437, align 4, !tbaa !35
  %.sroa.646.0..sroa_idx = getelementptr inbounds i8, ptr %437, i64 4
  %.sroa.646.0.copyload = load float, ptr %.sroa.646.0..sroa_idx, align 4, !tbaa !35
  %438 = getelementptr inbounds %struct.nk_vec2, ptr %1, i64 %436
  %.sroa.038.0.copyload = load float, ptr %438, align 4, !tbaa !35
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %438, i64 4
  %.sroa.6.0.copyload = load float, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !35
  %439 = fsub float %.sroa.038.0.copyload, %.sroa.043.0.copyload
  %440 = fsub float %.sroa.6.0.copyload, %.sroa.646.0.copyload
  %441 = call <2 x float> @nk_vec2(float noundef %439, float noundef %440)
  %.sroa.025.0.vec.extract = extractelement <2 x float> %441, i64 0
  %.sroa.025.4.vec.extract = extractelement <2 x float> %441, i64 1
  %442 = fmul float %.sroa.025.4.vec.extract, %.sroa.025.4.vec.extract
  %443 = call float @llvm.fmuladd.f32(float %.sroa.025.0.vec.extract, float %.sroa.025.0.vec.extract, float %442)
  %444 = fcmp une float %443, 0.000000e+00
  br i1 %444, label %445, label %447

445:                                              ; preds = %433
  %446 = call noundef float @_ZL11nk_inv_sqrtf(float noundef %443)
  br label %447

447:                                              ; preds = %433, %445
  %.0653 = phi float [ %446, %445 ], [ 1.000000e+00, %433 ]
  %448 = fmul float %.sroa.025.0.vec.extract, %.0653
  %449 = fmul float %.sroa.025.4.vec.extract, %.0653
  %450 = call <2 x float> @nk_vec2(float noundef %448, float noundef %449)
  %.sroa.025.0.vec.extract31 = extractelement <2 x float> %450, i64 0
  %451 = fmul float %432, %.sroa.025.0.vec.extract31
  %.sroa.025.4.vec.extract37 = extractelement <2 x float> %450, i64 1
  %452 = fmul float %432, %.sroa.025.4.vec.extract37
  %453 = fadd float %.sroa.043.0.copyload, %452
  %454 = fsub float %.sroa.646.0.copyload, %451
  %455 = call <2 x float> @nk_vec2(float noundef %453, float noundef %454)
  %.sroa.017.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.218.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %456 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %.0654677, ptr noundef nonnull %14, <2 x float> %455, <2 x float> %.sroa.049.0.copyload, <2 x float> %.sroa.017.0.copyload, <2 x float> %.sroa.218.0.copyload)
  %457 = fadd float %.sroa.038.0.copyload, %452
  %458 = fsub float %.sroa.6.0.copyload, %451
  %459 = call <2 x float> @nk_vec2(float noundef %457, float noundef %458)
  %.sroa.013.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.214.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %460 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %456, ptr noundef nonnull %14, <2 x float> %459, <2 x float> %.sroa.049.0.copyload, <2 x float> %.sroa.013.0.copyload, <2 x float> %.sroa.214.0.copyload)
  %461 = fsub float %.sroa.038.0.copyload, %452
  %462 = fadd float %.sroa.6.0.copyload, %451
  %463 = call <2 x float> @nk_vec2(float noundef %461, float noundef %462)
  %.sroa.09.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.210.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %464 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %460, ptr noundef nonnull %14, <2 x float> %463, <2 x float> %.sroa.049.0.copyload, <2 x float> %.sroa.09.0.copyload, <2 x float> %.sroa.210.0.copyload)
  %465 = fsub float %.sroa.043.0.copyload, %452
  %466 = fadd float %.sroa.646.0.copyload, %451
  %467 = call <2 x float> @nk_vec2(float noundef %465, float noundef %466)
  %.sroa.0.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.2.0.copyload = load <2 x float>, ptr %.sroa.7.0..sroa_idx, align 8
  %468 = call noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef %464, ptr noundef nonnull %14, <2 x float> %467, <2 x float> %.sroa.049.0.copyload, <2 x float> %.sroa.0.0.copyload, <2 x float> %.sroa.2.0.copyload)
  store i16 %.0652678, ptr %.0655676, align 2, !tbaa !29
  %469 = add i16 %.0652678, 1
  %470 = getelementptr inbounds i8, ptr %.0655676, i64 2
  store i16 %469, ptr %470, align 2, !tbaa !29
  %471 = add i16 %.0652678, 2
  %472 = getelementptr inbounds i8, ptr %.0655676, i64 4
  store i16 %471, ptr %472, align 2, !tbaa !29
  %473 = getelementptr inbounds i8, ptr %.0655676, i64 6
  store i16 %.0652678, ptr %473, align 2, !tbaa !29
  %474 = getelementptr inbounds i8, ptr %.0655676, i64 8
  store i16 %471, ptr %474, align 2, !tbaa !29
  %475 = add i16 %.0652678, 3
  %476 = getelementptr inbounds i8, ptr %.0655676, i64 10
  store i16 %475, ptr %476, align 2, !tbaa !29
  %477 = getelementptr inbounds i8, ptr %.0655676, i64 12
  %478 = add i16 %.0652678, 4
  %exitcond.not = icmp eq i64 %434, %.0
  br i1 %exitcond.not, label %.critedge671, label %433, !llvm.loop !36

.critedge671:                                     ; preds = %447, %423, %.critedge, %28, %39, %10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  ret void
}

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL27nk_draw_list_alloc_verticesP12nk_draw_listm(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL27nk_draw_list_alloc_elementsP12nk_draw_listm(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL11nk_inv_sqrtf(float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL14nk_draw_vertexPvPK17nk_convert_config7nk_vec2S3_9nk_colorf(ptr noundef, ptr noundef, <2 x float>, <2 x float>, <2 x float>, <2 x float>) local_unnamed_addr #6

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 112}
!6 = !{!"_ZTS12nk_draw_list", !7, i64 0, !9, i64 16, !11, i64 112, !16, i64 176, !16, i64 184, !16, i64 192, !13, i64 200, !13, i64 204, !13, i64 208, !17, i64 216, !13, i64 224, !13, i64 228, !12, i64 232, !12, i64 236}
!7 = !{!"_ZTS7nk_rect", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12}
!8 = !{!"float", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTS17nk_convert_config", !8, i64 0, !12, i64 4, !12, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !14, i64 24, !16, i64 40, !17, i64 48, !17, i64 56}
!12 = !{!"_ZTS16nk_anti_aliasing", !9, i64 0}
!13 = !{!"int", !9, i64 0}
!14 = !{!"_ZTS20nk_draw_null_texture", !9, i64 0, !15, i64 8}
!15 = !{!"_ZTS7nk_vec2", !8, i64 0, !8, i64 4}
!16 = !{!"any pointer", !9, i64 0}
!17 = !{!"long", !9, i64 0}
!18 = !{!6, !13, i64 204}
!19 = !{!6, !16, i64 184}
!20 = !{!21, !16, i64 64}
!21 = !{!"_ZTS9nk_buffer", !9, i64 0, !22, i64 32, !23, i64 56, !24, i64 64, !8, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112}
!22 = !{!"_ZTS12nk_allocator", !9, i64 0, !16, i64 8, !16, i64 16}
!23 = !{!"_ZTS18nk_allocation_type", !9, i64 0}
!24 = !{!"_ZTS9nk_memory", !16, i64 0, !17, i64 8}
!25 = !{!15, !8, i64 0}
!26 = !{!15, !8, i64 4}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!30, !30, i64 0}
!30 = !{!"short", !9, i64 0}
!31 = distinct !{!31, !28}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = !{!8, !8, i64 0}
!36 = distinct !{!36, !28}


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