; 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_image = type { %union.nk_handle, i16, i16, [4 x i16] }
%union.nk_handle = type { ptr }
%struct.nk_rect = type { float, float, float, float }
%struct.nk_vec2 = type { float, float }
%struct.nk_color = type { i8, i8, i8, i8 }
%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 }
%struct.nk_context = type { %struct.nk_input, %struct.nk_style, %struct.nk_buffer, %struct.nk_clipboard, i32, i32, %struct.nk_configuration_stacks, float, %struct.nk_draw_list, %struct.nk_text_edit, %struct.nk_command_buffer, i32, i32, %struct.nk_pool, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.nk_input = type { %struct.nk_keyboard, %struct.nk_mouse }
%struct.nk_keyboard = type { [30 x %struct.nk_key], [16 x i8], i32 }
%struct.nk_key = type { i32, i32 }
%struct.nk_mouse = type { [4 x %struct.nk_mouse_button], %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, i8, i8, i8 }
%struct.nk_mouse_button = type { i32, i32, %struct.nk_vec2 }
%struct.nk_style = type { ptr, [7 x ptr], ptr, ptr, i32, %struct.nk_style_text, %struct.nk_style_button, %struct.nk_style_button, %struct.nk_style_button, %struct.nk_style_toggle, %struct.nk_style_toggle, %struct.nk_style_selectable, %struct.nk_style_slider, %struct.nk_style_progress, %struct.nk_style_property, %struct.nk_style_edit, %struct.nk_style_chart, %struct.nk_style_scrollbar, %struct.nk_style_scrollbar, %struct.nk_style_tab, %struct.nk_style_combo, %struct.nk_style_window }
%struct.nk_style_text = type { %struct.nk_color, %struct.nk_vec2 }
%struct.nk_style_button = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, i32, float, float, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %union.nk_handle, ptr, ptr }
%struct.nk_style_item = type { i32, %union.nk_style_item_data }
%union.nk_style_item_data = type { %struct.nk_nine_slice }
%struct.nk_nine_slice = type { %struct.nk_image, i16, i16, i16, i16 }
%struct.nk_style_toggle = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, i32, %struct.nk_vec2, %struct.nk_vec2, float, float, %union.nk_handle, ptr, ptr }
%struct.nk_style_selectable = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, i32, float, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %union.nk_handle, ptr, ptr }
%struct.nk_style_slider = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, float, float, float, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, i32, %struct.nk_style_button, %struct.nk_style_button, i32, i32, %union.nk_handle, ptr, ptr }
%struct.nk_style_progress = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, float, float, float, float, %struct.nk_vec2, %union.nk_handle, ptr, ptr }
%struct.nk_style_property = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, i32, i32, float, float, %struct.nk_vec2, %struct.nk_style_edit, %struct.nk_style_button, %struct.nk_style_button, %union.nk_handle, ptr, ptr }
%struct.nk_style_edit = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_style_scrollbar, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, float, float, float, %struct.nk_vec2, %struct.nk_vec2, float }
%struct.nk_style_chart = type { %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, float, float, %struct.nk_vec2 }
%struct.nk_style_scrollbar = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, float, float, float, float, %struct.nk_vec2, i32, %struct.nk_style_button, %struct.nk_style_button, i32, i32, %union.nk_handle, ptr, ptr }
%struct.nk_style_tab = type { %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_style_button, %struct.nk_style_button, %struct.nk_style_button, %struct.nk_style_button, i32, i32, float, float, float, %struct.nk_vec2, %struct.nk_vec2 }
%struct.nk_style_combo = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_style_button, i32, i32, i32, float, float, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2 }
%struct.nk_style_window = type { %struct.nk_style_window_header, %struct.nk_style_item, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_style_item, float, float, float, float, float, float, float, float, float, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2 }
%struct.nk_style_window_header = type { %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_item, %struct.nk_style_button, %struct.nk_style_button, i32, i32, i32, %struct.nk_color, %struct.nk_color, %struct.nk_color, i32, %struct.nk_vec2, %struct.nk_vec2, %struct.nk_vec2 }
%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 }
%struct.nk_clipboard = type { %union.nk_handle, ptr, ptr }
%struct.nk_configuration_stacks = type { %struct.nk_config_stack_style_item, %struct.nk_config_stack_float, %struct.nk_config_stack_vec2, %struct.nk_config_stack_flags, %struct.nk_config_stack_color, %struct.nk_config_stack_user_font, %struct.nk_config_stack_button_behavior }
%struct.nk_config_stack_style_item = type { i32, [16 x %struct.nk_config_stack_style_item_element] }
%struct.nk_config_stack_style_item_element = type { ptr, %struct.nk_style_item }
%struct.nk_config_stack_float = type { i32, [32 x %struct.nk_config_stack_float_element] }
%struct.nk_config_stack_float_element = type { ptr, float }
%struct.nk_config_stack_vec2 = type { i32, [16 x %struct.nk_config_stack_vec2_element] }
%struct.nk_config_stack_vec2_element = type { ptr, %struct.nk_vec2 }
%struct.nk_config_stack_flags = type { i32, [32 x %struct.nk_config_stack_flags_element] }
%struct.nk_config_stack_flags_element = type { ptr, i32 }
%struct.nk_config_stack_color = type { i32, [32 x %struct.nk_config_stack_color_element] }
%struct.nk_config_stack_color_element = type { ptr, %struct.nk_color }
%struct.nk_config_stack_user_font = type { i32, [8 x %struct.nk_config_stack_user_font_element] }
%struct.nk_config_stack_user_font_element = type { ptr, ptr }
%struct.nk_config_stack_button_behavior = type { i32, [8 x %struct.nk_config_stack_button_behavior_element] }
%struct.nk_config_stack_button_behavior_element = type { ptr, i32 }
%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_text_edit = type { %struct.nk_clipboard, %struct.nk_str, ptr, %struct.nk_vec2, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, float, %struct.nk_text_undo_state }
%struct.nk_str = type { %struct.nk_buffer, i32 }
%struct.nk_text_undo_state = type { [99 x %struct.nk_text_undo_record], [999 x i32], i16, i16, i16, i16 }
%struct.nk_text_undo_record = type { i32, i16, i16, i16 }
%struct.nk_command_buffer = type { ptr, %struct.nk_rect, i32, %union.nk_handle, i64, i64, i64 }
%struct.nk_pool = type { %struct.nk_allocator, i32, i32, ptr, ptr, i32, i64, i64 }
%struct.nk_command = type { i32, i64 }
%struct.nk_command_scissor = type { %struct.nk_command, i16, i16, i16, i16 }
%struct.nk_command_line = type { %struct.nk_command, i16, %struct.nk_vec2i, %struct.nk_vec2i, %struct.nk_color }
%struct.nk_vec2i = type { i16, i16 }
%struct.nk_command_curve = type { %struct.nk_command, i16, %struct.nk_vec2i, %struct.nk_vec2i, [2 x %struct.nk_vec2i], %struct.nk_color }
%struct.nk_command_rect = type { %struct.nk_command, i16, i16, i16, i16, i16, i16, %struct.nk_color }
%struct.nk_command_rect_filled = type { %struct.nk_command, i16, i16, i16, i16, i16, %struct.nk_color }
%struct.nk_command_rect_multi_color = type { %struct.nk_command, i16, i16, i16, i16, %struct.nk_color, %struct.nk_color, %struct.nk_color, %struct.nk_color }
%struct.nk_command_circle = type { %struct.nk_command, i16, i16, i16, i16, i16, %struct.nk_color }
%struct.nk_command_circle_filled = type { %struct.nk_command, i16, i16, i16, i16, %struct.nk_color }
%struct.nk_command_arc = type { %struct.nk_command, i16, i16, i16, i16, [2 x float], %struct.nk_color }
%struct.nk_command_arc_filled = type { %struct.nk_command, i16, i16, i16, [2 x float], %struct.nk_color }
%struct.nk_command_triangle = type { %struct.nk_command, i16, %struct.nk_vec2i, %struct.nk_vec2i, %struct.nk_vec2i, %struct.nk_color }
%struct.nk_command_triangle_filled = type { %struct.nk_command, %struct.nk_vec2i, %struct.nk_vec2i, %struct.nk_vec2i, %struct.nk_color }
%struct.nk_command_polygon = type { %struct.nk_command, %struct.nk_color, i16, i16, [1 x %struct.nk_vec2i] }
%struct.nk_command_polygon_filled = type { %struct.nk_command, %struct.nk_color, i16, [1 x %struct.nk_vec2i] }
%struct.nk_command_polyline = type { %struct.nk_command, %struct.nk_color, i16, i16, [1 x %struct.nk_vec2i] }
%struct.nk_command_text = type { %struct.nk_command, ptr, %struct.nk_color, %struct.nk_color, i16, i16, i16, i16, float, i32, [1 x i8] }
%struct.nk_command_image = type { %struct.nk_command, i16, i16, i16, i16, %struct.nk_image, %struct.nk_color }
%struct.nk_command_custom = type { %struct.nk_command, i16, i16, i16, i16, %union.nk_handle, ptr }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__.nk_convert = external hidden unnamed_addr constant [135 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 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>, <2 x float> } @nk_rect(float noundef, float noundef, float noundef, float noundef) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_line_to(ptr noundef, <2 x float>) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_arc_to(ptr noundef, <2 x float>, float noundef, float noundef, float noundef, i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_fill(ptr noundef, i32) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_stroke(ptr noundef, i32, i32 noundef, float noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_line(ptr noundef, <2 x float>, <2 x float>, i32, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_rect(ptr noundef, <2 x float>, <2 x float>, i32, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_rect(ptr noundef, <2 x float>, <2 x float>, i32, float noundef, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_rect_multi_color(ptr noundef, <2 x float>, <2 x float>, i32, i32, i32, i32) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_triangle(ptr noundef, <2 x float>, <2 x float>, <2 x float>, i32) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_triangle(ptr noundef, <2 x float>, <2 x float>, <2 x float>, i32, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_circle(ptr noundef, <2 x float>, float noundef, i32, i32 noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_circle(ptr noundef, <2 x float>, float noundef, i32, i32 noundef, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_curve(ptr noundef, <2 x float>, <2 x float>, <2 x float>, <2 x float>, i32, i32 noundef, float noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_add_image(ptr noundef, ptr noundef byval(%struct.nk_image) align 8, <2 x float>, <2 x float>, i32) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_add_text(ptr noundef, ptr noundef, <2 x float>, <2 x float>, ptr noundef, i32 noundef, float noundef, i32) #5

; Function Attrs: mustprogress uwtable
define dso_local i32 @nk_convert(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #5 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca %struct.nk_rect, align 4
  %17 = alloca ptr, align 8
  %18 = alloca %struct.nk_vec2, align 4
  %19 = alloca %struct.nk_vec2, align 4
  %20 = alloca %struct.nk_color, align 1
  %21 = alloca ptr, align 8
  %22 = alloca %struct.nk_vec2, align 4
  %23 = alloca %struct.nk_vec2, align 4
  %24 = alloca %struct.nk_vec2, align 4
  %25 = alloca %struct.nk_vec2, align 4
  %26 = alloca %struct.nk_color, align 1
  %27 = alloca ptr, align 8
  %28 = alloca %struct.nk_rect, align 4
  %29 = alloca %struct.nk_color, align 1
  %30 = alloca ptr, align 8
  %31 = alloca %struct.nk_rect, align 4
  %32 = alloca %struct.nk_color, align 1
  %33 = alloca ptr, align 8
  %34 = alloca %struct.nk_rect, align 4
  %35 = alloca %struct.nk_color, align 1
  %36 = alloca %struct.nk_color, align 1
  %37 = alloca %struct.nk_color, align 1
  %38 = alloca %struct.nk_color, align 1
  %39 = alloca ptr, align 8
  %40 = alloca %struct.nk_vec2, align 4
  %41 = alloca %struct.nk_color, align 1
  %42 = alloca ptr, align 8
  %43 = alloca %struct.nk_vec2, align 4
  %44 = alloca %struct.nk_color, align 1
  %45 = alloca ptr, align 8
  %46 = alloca %struct.nk_vec2, align 4
  %47 = alloca %struct.nk_vec2, align 4
  %48 = alloca %struct.nk_color, align 1
  %49 = alloca ptr, align 8
  %50 = alloca %struct.nk_vec2, align 4
  %51 = alloca %struct.nk_vec2, align 4
  %52 = alloca %struct.nk_color, align 1
  %53 = alloca ptr, align 8
  %54 = alloca %struct.nk_vec2, align 4
  %55 = alloca %struct.nk_vec2, align 4
  %56 = alloca %struct.nk_vec2, align 4
  %57 = alloca %struct.nk_color, align 1
  %58 = alloca ptr, align 8
  %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_color, align 1
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca %struct.nk_vec2, align 4
  %66 = alloca %struct.nk_vec2, align 4
  %67 = alloca %struct.nk_color, align 1
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca %struct.nk_vec2, align 4
  %71 = alloca %struct.nk_vec2, align 4
  %72 = alloca %struct.nk_color, align 1
  %73 = alloca i32, align 4
  %74 = alloca ptr, align 8
  %75 = alloca %struct.nk_vec2, align 4
  %76 = alloca %struct.nk_vec2, align 4
  %77 = alloca %struct.nk_color, align 1
  %78 = alloca ptr, align 8
  %79 = alloca %struct.nk_rect, align 4
  %80 = alloca %struct.nk_color, align 1
  %81 = alloca ptr, align 8
  %82 = alloca %struct.nk_image, align 8
  %83 = alloca %struct.nk_rect, align 4
  %84 = alloca %struct.nk_color, align 1
  %85 = alloca ptr, align 8
  %86 = alloca %union.nk_handle, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  %88 = icmp ne ptr %87, null
  br i1 %88, label %89, label %90

89:                                               ; preds = %5
  br label %92

90:                                               ; preds = %5
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 10584, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

91:                                               ; No predecessors!
  br label %92

92:                                               ; preds = %91, %89
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  br label %98

96:                                               ; preds = %92
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 10585, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

97:                                               ; No predecessors!
  br label %98

98:                                               ; preds = %97, %95
  %99 = load ptr, ptr %9, align 8, !tbaa !5
  %100 = icmp ne ptr %99, null
  br i1 %100, label %101, label %102

101:                                              ; preds = %98
  br label %104

102:                                              ; preds = %98
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 10586, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

103:                                              ; No predecessors!
  br label %104

104:                                              ; preds = %103, %101
  %105 = load ptr, ptr %10, align 8, !tbaa !5
  %106 = icmp ne ptr %105, null
  br i1 %106, label %107, label %108

107:                                              ; preds = %104
  br label %110

108:                                              ; preds = %104
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 10587, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

109:                                              ; No predecessors!
  br label %110

110:                                              ; preds = %109, %107
  %111 = load ptr, ptr %11, align 8, !tbaa !5
  %112 = icmp ne ptr %111, null
  br i1 %112, label %113, label %114

113:                                              ; preds = %110
  br label %116

114:                                              ; preds = %110
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 10588, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

115:                                              ; No predecessors!
  br label %116

116:                                              ; preds = %115, %113
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.nk_convert_config, ptr %117, i32 0, i32 7
  %119 = load ptr, ptr %118, align 8, !tbaa !11
  %120 = icmp ne ptr %119, null
  br i1 %120, label %121, label %122

121:                                              ; preds = %116
  br label %124

122:                                              ; preds = %116
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 10589, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %121
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.nk_convert_config, ptr %125, i32 0, i32 8
  %127 = load i64, ptr %126, align 8, !tbaa !18
  %128 = icmp ne i64 %127, 0
  br i1 %128, label %129, label %130

129:                                              ; preds = %124
  br label %132

130:                                              ; preds = %124
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 10590, ptr noundef @__PRETTY_FUNCTION__.nk_convert) #8
  unreachable

131:                                              ; No predecessors!
  br label %132

132:                                              ; preds = %131, %129
  %133 = load ptr, ptr %7, align 8, !tbaa !5
  %134 = icmp ne ptr %133, null
  br i1 %134, label %135, label %152

135:                                              ; preds = %132
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = icmp ne ptr %136, null
  br i1 %137, label %138, label %152

138:                                              ; preds = %135
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = icmp ne ptr %139, null
  br i1 %140, label %141, label %152

141:                                              ; preds = %138
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %144, label %152

144:                                              ; preds = %141
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = icmp ne ptr %145, null
  br i1 %146, label %147, label %152

147:                                              ; preds = %144
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.nk_convert_config, ptr %148, i32 0, i32 7
  %150 = load ptr, ptr %149, align 8, !tbaa !11
  %151 = icmp ne ptr %150, null
  br i1 %151, label %153, label %152

152:                                              ; preds = %147, %144, %141, %138, %135, %132
  store i32 1, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %962

153:                                              ; preds = %147
  %154 = load ptr, ptr %7, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.nk_context, ptr %154, i32 0, i32 8
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  %158 = load ptr, ptr %9, align 8, !tbaa !5
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = load ptr, ptr %11, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.nk_convert_config, ptr %160, i32 0, i32 1
  %162 = load i32, ptr %161, align 4, !tbaa !19
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.nk_convert_config, ptr %163, i32 0, i32 2
  %165 = load i32, ptr %164, align 8, !tbaa !20
  call void @nk_draw_list_setup(ptr noundef %155, ptr noundef %156, ptr noundef %157, ptr noundef %158, ptr noundef %159, i32 noundef %162, i32 noundef %165)
  %166 = load ptr, ptr %7, align 8, !tbaa !5
  %167 = call ptr @nk__begin(ptr noundef %166)
  store ptr %167, ptr %13, align 8, !tbaa !5
  br label %168

168:                                              ; preds = %914, %153
  %169 = load ptr, ptr %13, align 8, !tbaa !5
  %170 = icmp ne ptr %169, null
  br i1 %170, label %171, label %918

171:                                              ; preds = %168
  %172 = load ptr, ptr %13, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.nk_command, ptr %172, i32 0, i32 0
  %174 = load i32, ptr %173, align 8, !tbaa !21
  switch i32 %174, label %912 [
    i32 0, label %913
    i32 1, label %175
    i32 2, label %204
    i32 3, label %239
    i32 4, label %305
    i32 5, label %345
    i32 6, label %381
    i32 7, label %422
    i32 8, label %463
    i32 9, label %500
    i32 10, label %550
    i32 11, label %596
    i32 12, label %643
    i32 13, label %686
    i32 14, label %729
    i32 15, label %768
    i32 16, label %811
    i32 17, label %855
    i32 18, label %889
  ]

175:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %176 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %176, ptr %15, align 8, !tbaa !5
  %177 = load ptr, ptr %7, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.nk_context, ptr %177, i32 0, i32 8
  %179 = load ptr, ptr %15, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.nk_command_scissor, ptr %179, i32 0, i32 1
  %181 = load i16, ptr %180, align 8, !tbaa !24
  %182 = sitofp i16 %181 to float
  %183 = load ptr, ptr %15, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.nk_command_scissor, ptr %183, i32 0, i32 2
  %185 = load i16, ptr %184, align 2, !tbaa !27
  %186 = sitofp i16 %185 to float
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.nk_command_scissor, ptr %187, i32 0, i32 3
  %189 = load i16, ptr %188, align 4, !tbaa !28
  %190 = uitofp i16 %189 to float
  %191 = load ptr, ptr %15, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.nk_command_scissor, ptr %191, i32 0, i32 4
  %193 = load i16, ptr %192, align 2, !tbaa !29
  %194 = uitofp i16 %193 to float
  %195 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %182, float noundef %186, float noundef %190, float noundef %194)
  %196 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 0
  %197 = extractvalue { <2 x float>, <2 x float> } %195, 0
  store <2 x float> %197, ptr %196, align 4
  %198 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 1
  %199 = extractvalue { <2 x float>, <2 x float> } %195, 1
  store <2 x float> %199, ptr %198, align 4
  %200 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 0
  %201 = load <2 x float>, ptr %200, align 4
  %202 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %16, i32 0, i32 1
  %203 = load <2 x float>, ptr %202, align 4
  call void @_ZL21nk_draw_list_add_clipP12nk_draw_list7nk_rect(ptr noundef %178, <2 x float> %201, <2 x float> %203)
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %913

204:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %205, ptr %17, align 8, !tbaa !5
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.nk_context, ptr %206, i32 0, i32 8
  %208 = load ptr, ptr %17, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.nk_command_line, ptr %208, i32 0, i32 2
  %210 = getelementptr inbounds %struct.nk_vec2i, ptr %209, i32 0, i32 0
  %211 = load i16, ptr %210, align 2, !tbaa !30
  %212 = sitofp i16 %211 to float
  %213 = load ptr, ptr %17, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.nk_command_line, ptr %213, i32 0, i32 2
  %215 = getelementptr inbounds %struct.nk_vec2i, ptr %214, i32 0, i32 1
  %216 = load i16, ptr %215, align 2, !tbaa !34
  %217 = sitofp i16 %216 to float
  %218 = call <2 x float> @nk_vec2(float noundef %212, float noundef %217)
  store <2 x float> %218, ptr %18, align 4
  %219 = load ptr, ptr %17, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.nk_command_line, ptr %219, i32 0, i32 3
  %221 = getelementptr inbounds %struct.nk_vec2i, ptr %220, i32 0, i32 0
  %222 = load i16, ptr %221, align 2, !tbaa !35
  %223 = sitofp i16 %222 to float
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.nk_command_line, ptr %224, i32 0, i32 3
  %226 = getelementptr inbounds %struct.nk_vec2i, ptr %225, i32 0, i32 1
  %227 = load i16, ptr %226, align 2, !tbaa !36
  %228 = sitofp i16 %227 to float
  %229 = call <2 x float> @nk_vec2(float noundef %223, float noundef %228)
  store <2 x float> %229, ptr %19, align 4
  %230 = load ptr, ptr %17, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.nk_command_line, ptr %230, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 2 %231, i64 4, i1 false), !tbaa.struct !37
  %232 = load ptr, ptr %17, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.nk_command_line, ptr %232, i32 0, i32 1
  %234 = load i16, ptr %233, align 8, !tbaa !39
  %235 = uitofp i16 %234 to float
  %236 = load <2 x float>, ptr %18, align 4
  %237 = load <2 x float>, ptr %19, align 4
  %238 = load i32, ptr %20, align 1
  call void @nk_draw_list_stroke_line(ptr noundef %207, <2 x float> %236, <2 x float> %237, i32 %238, float noundef %235)
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %913

239:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %240 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %240, ptr %21, align 8, !tbaa !5
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.nk_context, ptr %241, i32 0, i32 8
  %243 = load ptr, ptr %21, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.nk_command_curve, ptr %243, i32 0, i32 2
  %245 = getelementptr inbounds %struct.nk_vec2i, ptr %244, i32 0, i32 0
  %246 = load i16, ptr %245, align 2, !tbaa !40
  %247 = sitofp i16 %246 to float
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.nk_command_curve, ptr %248, i32 0, i32 2
  %250 = getelementptr inbounds %struct.nk_vec2i, ptr %249, i32 0, i32 1
  %251 = load i16, ptr %250, align 2, !tbaa !42
  %252 = sitofp i16 %251 to float
  %253 = call <2 x float> @nk_vec2(float noundef %247, float noundef %252)
  store <2 x float> %253, ptr %22, align 4
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.nk_command_curve, ptr %254, i32 0, i32 4
  %256 = getelementptr inbounds [2 x %struct.nk_vec2i], ptr %255, i64 0, i64 0
  %257 = getelementptr inbounds %struct.nk_vec2i, ptr %256, i32 0, i32 0
  %258 = load i16, ptr %257, align 2, !tbaa !43
  %259 = sitofp i16 %258 to float
  %260 = load ptr, ptr %21, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.nk_command_curve, ptr %260, i32 0, i32 4
  %262 = getelementptr inbounds [2 x %struct.nk_vec2i], ptr %261, i64 0, i64 0
  %263 = getelementptr inbounds %struct.nk_vec2i, ptr %262, i32 0, i32 1
  %264 = load i16, ptr %263, align 2, !tbaa !44
  %265 = sitofp i16 %264 to float
  %266 = call <2 x float> @nk_vec2(float noundef %259, float noundef %265)
  store <2 x float> %266, ptr %23, align 4
  %267 = load ptr, ptr %21, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.nk_command_curve, ptr %267, i32 0, i32 4
  %269 = getelementptr inbounds [2 x %struct.nk_vec2i], ptr %268, i64 0, i64 1
  %270 = getelementptr inbounds %struct.nk_vec2i, ptr %269, i32 0, i32 0
  %271 = load i16, ptr %270, align 2, !tbaa !43
  %272 = sitofp i16 %271 to float
  %273 = load ptr, ptr %21, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.nk_command_curve, ptr %273, i32 0, i32 4
  %275 = getelementptr inbounds [2 x %struct.nk_vec2i], ptr %274, i64 0, i64 1
  %276 = getelementptr inbounds %struct.nk_vec2i, ptr %275, i32 0, i32 1
  %277 = load i16, ptr %276, align 2, !tbaa !44
  %278 = sitofp i16 %277 to float
  %279 = call <2 x float> @nk_vec2(float noundef %272, float noundef %278)
  store <2 x float> %279, ptr %24, align 4
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.nk_command_curve, ptr %280, i32 0, i32 3
  %282 = getelementptr inbounds %struct.nk_vec2i, ptr %281, i32 0, i32 0
  %283 = load i16, ptr %282, align 2, !tbaa !45
  %284 = sitofp i16 %283 to float
  %285 = load ptr, ptr %21, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.nk_command_curve, ptr %285, i32 0, i32 3
  %287 = getelementptr inbounds %struct.nk_vec2i, ptr %286, i32 0, i32 1
  %288 = load i16, ptr %287, align 2, !tbaa !46
  %289 = sitofp i16 %288 to float
  %290 = call <2 x float> @nk_vec2(float noundef %284, float noundef %289)
  store <2 x float> %290, ptr %25, align 4
  %291 = load ptr, ptr %21, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.nk_command_curve, ptr %291, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %26, ptr align 2 %292, i64 4, i1 false), !tbaa.struct !37
  %293 = load ptr, ptr %11, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.nk_convert_config, ptr %293, i32 0, i32 5
  %295 = load i32, ptr %294, align 4, !tbaa !47
  %296 = load ptr, ptr %21, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.nk_command_curve, ptr %296, i32 0, i32 1
  %298 = load i16, ptr %297, align 8, !tbaa !48
  %299 = uitofp i16 %298 to float
  %300 = load <2 x float>, ptr %22, align 4
  %301 = load <2 x float>, ptr %23, align 4
  %302 = load <2 x float>, ptr %24, align 4
  %303 = load <2 x float>, ptr %25, align 4
  %304 = load i32, ptr %26, align 1
  call void @nk_draw_list_stroke_curve(ptr noundef %242, <2 x float> %300, <2 x float> %301, <2 x float> %302, <2 x float> %303, i32 %304, i32 noundef %295, float noundef %299)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %913

305:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %306 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %306, ptr %27, align 8, !tbaa !5
  %307 = load ptr, ptr %7, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.nk_context, ptr %307, i32 0, i32 8
  %309 = load ptr, ptr %27, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.nk_command_rect, ptr %309, i32 0, i32 3
  %311 = load i16, ptr %310, align 4, !tbaa !49
  %312 = sitofp i16 %311 to float
  %313 = load ptr, ptr %27, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.nk_command_rect, ptr %313, i32 0, i32 4
  %315 = load i16, ptr %314, align 2, !tbaa !51
  %316 = sitofp i16 %315 to float
  %317 = load ptr, ptr %27, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.nk_command_rect, ptr %317, i32 0, i32 5
  %319 = load i16, ptr %318, align 8, !tbaa !52
  %320 = uitofp i16 %319 to float
  %321 = load ptr, ptr %27, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.nk_command_rect, ptr %321, i32 0, i32 6
  %323 = load i16, ptr %322, align 2, !tbaa !53
  %324 = uitofp i16 %323 to float
  %325 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %312, float noundef %316, float noundef %320, float noundef %324)
  %326 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %28, i32 0, i32 0
  %327 = extractvalue { <2 x float>, <2 x float> } %325, 0
  store <2 x float> %327, ptr %326, align 4
  %328 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %28, i32 0, i32 1
  %329 = extractvalue { <2 x float>, <2 x float> } %325, 1
  store <2 x float> %329, ptr %328, align 4
  %330 = load ptr, ptr %27, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.nk_command_rect, ptr %330, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %29, ptr align 4 %331, i64 4, i1 false), !tbaa.struct !37
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.nk_command_rect, ptr %332, i32 0, i32 1
  %334 = load i16, ptr %333, align 8, !tbaa !54
  %335 = uitofp i16 %334 to float
  %336 = load ptr, ptr %27, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.nk_command_rect, ptr %336, i32 0, i32 2
  %338 = load i16, ptr %337, align 2, !tbaa !55
  %339 = uitofp i16 %338 to float
  %340 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %28, i32 0, i32 0
  %341 = load <2 x float>, ptr %340, align 4
  %342 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %28, i32 0, i32 1
  %343 = load <2 x float>, ptr %342, align 4
  %344 = load i32, ptr %29, align 1
  call void @nk_draw_list_stroke_rect(ptr noundef %308, <2 x float> %341, <2 x float> %343, i32 %344, float noundef %335, float noundef %339)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %913

345:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %346, ptr %30, align 8, !tbaa !5
  %347 = load ptr, ptr %7, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.nk_context, ptr %347, i32 0, i32 8
  %349 = load ptr, ptr %30, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %349, i32 0, i32 2
  %351 = load i16, ptr %350, align 2, !tbaa !56
  %352 = sitofp i16 %351 to float
  %353 = load ptr, ptr %30, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %353, i32 0, i32 3
  %355 = load i16, ptr %354, align 4, !tbaa !58
  %356 = sitofp i16 %355 to float
  %357 = load ptr, ptr %30, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %357, i32 0, i32 4
  %359 = load i16, ptr %358, align 2, !tbaa !59
  %360 = uitofp i16 %359 to float
  %361 = load ptr, ptr %30, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %361, i32 0, i32 5
  %363 = load i16, ptr %362, align 8, !tbaa !60
  %364 = uitofp i16 %363 to float
  %365 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %352, float noundef %356, float noundef %360, float noundef %364)
  %366 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 0
  %367 = extractvalue { <2 x float>, <2 x float> } %365, 0
  store <2 x float> %367, ptr %366, align 4
  %368 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 1
  %369 = extractvalue { <2 x float>, <2 x float> } %365, 1
  store <2 x float> %369, ptr %368, align 4
  %370 = load ptr, ptr %30, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %370, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %32, ptr align 2 %371, i64 4, i1 false), !tbaa.struct !37
  %372 = load ptr, ptr %30, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.nk_command_rect_filled, ptr %372, i32 0, i32 1
  %374 = load i16, ptr %373, align 8, !tbaa !61
  %375 = uitofp i16 %374 to float
  %376 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 0
  %377 = load <2 x float>, ptr %376, align 4
  %378 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %31, i32 0, i32 1
  %379 = load <2 x float>, ptr %378, align 4
  %380 = load i32, ptr %32, align 1
  call void @nk_draw_list_fill_rect(ptr noundef %348, <2 x float> %377, <2 x float> %379, i32 %380, float noundef %375)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %913

381:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %382 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %382, ptr %33, align 8, !tbaa !5
  %383 = load ptr, ptr %7, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.nk_context, ptr %383, i32 0, i32 8
  %385 = load ptr, ptr %33, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %385, i32 0, i32 1
  %387 = load i16, ptr %386, align 8, !tbaa !62
  %388 = sitofp i16 %387 to float
  %389 = load ptr, ptr %33, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %389, i32 0, i32 2
  %391 = load i16, ptr %390, align 2, !tbaa !64
  %392 = sitofp i16 %391 to float
  %393 = load ptr, ptr %33, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %393, i32 0, i32 3
  %395 = load i16, ptr %394, align 4, !tbaa !65
  %396 = uitofp i16 %395 to float
  %397 = load ptr, ptr %33, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %397, i32 0, i32 4
  %399 = load i16, ptr %398, align 2, !tbaa !66
  %400 = uitofp i16 %399 to float
  %401 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %388, float noundef %392, float noundef %396, float noundef %400)
  %402 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %34, i32 0, i32 0
  %403 = extractvalue { <2 x float>, <2 x float> } %401, 0
  store <2 x float> %403, ptr %402, align 4
  %404 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %34, i32 0, i32 1
  %405 = extractvalue { <2 x float>, <2 x float> } %401, 1
  store <2 x float> %405, ptr %404, align 4
  %406 = load ptr, ptr %33, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %406, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %35, ptr align 8 %407, i64 4, i1 false), !tbaa.struct !37
  %408 = load ptr, ptr %33, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %408, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %36, ptr align 4 %409, i64 4, i1 false), !tbaa.struct !37
  %410 = load ptr, ptr %33, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %410, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr align 4 %411, i64 4, i1 false), !tbaa.struct !37
  %412 = load ptr, ptr %33, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.nk_command_rect_multi_color, ptr %412, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %38, ptr align 8 %413, i64 4, i1 false), !tbaa.struct !37
  %414 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %34, i32 0, i32 0
  %415 = load <2 x float>, ptr %414, align 4
  %416 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %34, i32 0, i32 1
  %417 = load <2 x float>, ptr %416, align 4
  %418 = load i32, ptr %35, align 1
  %419 = load i32, ptr %36, align 1
  %420 = load i32, ptr %37, align 1
  %421 = load i32, ptr %38, align 1
  call void @nk_draw_list_fill_rect_multi_color(ptr noundef %384, <2 x float> %415, <2 x float> %417, i32 %418, i32 %419, i32 %420, i32 %421)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %913

422:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %423, ptr %39, align 8, !tbaa !5
  %424 = load ptr, ptr %7, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.nk_context, ptr %424, i32 0, i32 8
  %426 = load ptr, ptr %39, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.nk_command_circle, ptr %426, i32 0, i32 1
  %428 = load i16, ptr %427, align 8, !tbaa !67
  %429 = sitofp i16 %428 to float
  %430 = load ptr, ptr %39, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.nk_command_circle, ptr %430, i32 0, i32 4
  %432 = load i16, ptr %431, align 2, !tbaa !69
  %433 = uitofp i16 %432 to float
  %434 = fdiv float %433, 2.000000e+00
  %435 = fadd float %429, %434
  %436 = load ptr, ptr %39, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.nk_command_circle, ptr %436, i32 0, i32 2
  %438 = load i16, ptr %437, align 2, !tbaa !70
  %439 = sitofp i16 %438 to float
  %440 = load ptr, ptr %39, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.nk_command_circle, ptr %440, i32 0, i32 5
  %442 = load i16, ptr %441, align 8, !tbaa !71
  %443 = uitofp i16 %442 to float
  %444 = fdiv float %443, 2.000000e+00
  %445 = fadd float %439, %444
  %446 = call <2 x float> @nk_vec2(float noundef %435, float noundef %445)
  store <2 x float> %446, ptr %40, align 4
  %447 = load ptr, ptr %39, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.nk_command_circle, ptr %447, i32 0, i32 4
  %449 = load i16, ptr %448, align 2, !tbaa !69
  %450 = uitofp i16 %449 to float
  %451 = fdiv float %450, 2.000000e+00
  %452 = load ptr, ptr %39, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.nk_command_circle, ptr %452, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %41, ptr align 2 %453, i64 4, i1 false), !tbaa.struct !37
  %454 = load ptr, ptr %11, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.nk_convert_config, ptr %454, i32 0, i32 3
  %456 = load i32, ptr %455, align 4, !tbaa !72
  %457 = load ptr, ptr %39, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.nk_command_circle, ptr %457, i32 0, i32 3
  %459 = load i16, ptr %458, align 4, !tbaa !73
  %460 = uitofp i16 %459 to float
  %461 = load <2 x float>, ptr %40, align 4
  %462 = load i32, ptr %41, align 1
  call void @nk_draw_list_stroke_circle(ptr noundef %425, <2 x float> %461, float noundef %451, i32 %462, i32 noundef %456, float noundef %460)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %913

463:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %464 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %464, ptr %42, align 8, !tbaa !5
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.nk_context, ptr %465, i32 0, i32 8
  %467 = load ptr, ptr %42, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %467, i32 0, i32 1
  %469 = load i16, ptr %468, align 8, !tbaa !74
  %470 = sitofp i16 %469 to float
  %471 = load ptr, ptr %42, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %471, i32 0, i32 3
  %473 = load i16, ptr %472, align 4, !tbaa !76
  %474 = uitofp i16 %473 to float
  %475 = fdiv float %474, 2.000000e+00
  %476 = fadd float %470, %475
  %477 = load ptr, ptr %42, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %477, i32 0, i32 2
  %479 = load i16, ptr %478, align 2, !tbaa !77
  %480 = sitofp i16 %479 to float
  %481 = load ptr, ptr %42, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %481, i32 0, i32 4
  %483 = load i16, ptr %482, align 2, !tbaa !78
  %484 = uitofp i16 %483 to float
  %485 = fdiv float %484, 2.000000e+00
  %486 = fadd float %480, %485
  %487 = call <2 x float> @nk_vec2(float noundef %476, float noundef %486)
  store <2 x float> %487, ptr %43, align 4
  %488 = load ptr, ptr %42, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %488, i32 0, i32 3
  %490 = load i16, ptr %489, align 4, !tbaa !76
  %491 = uitofp i16 %490 to float
  %492 = fdiv float %491, 2.000000e+00
  %493 = load ptr, ptr %42, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.nk_command_circle_filled, ptr %493, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %44, ptr align 8 %494, i64 4, i1 false), !tbaa.struct !37
  %495 = load ptr, ptr %11, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.nk_convert_config, ptr %495, i32 0, i32 3
  %497 = load i32, ptr %496, align 4, !tbaa !72
  %498 = load <2 x float>, ptr %43, align 4
  %499 = load i32, ptr %44, align 1
  call void @nk_draw_list_fill_circle(ptr noundef %466, <2 x float> %498, float noundef %492, i32 %499, i32 noundef %497)
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %913

500:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %501 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %501, ptr %45, align 8, !tbaa !5
  %502 = load ptr, ptr %7, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.nk_context, ptr %502, i32 0, i32 8
  %504 = load ptr, ptr %45, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.nk_command_arc, ptr %504, i32 0, i32 1
  %506 = load i16, ptr %505, align 8, !tbaa !79
  %507 = sitofp i16 %506 to float
  %508 = load ptr, ptr %45, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.nk_command_arc, ptr %508, i32 0, i32 2
  %510 = load i16, ptr %509, align 2, !tbaa !81
  %511 = sitofp i16 %510 to float
  %512 = call <2 x float> @nk_vec2(float noundef %507, float noundef %511)
  store <2 x float> %512, ptr %46, align 4
  %513 = load <2 x float>, ptr %46, align 4
  call void @nk_draw_list_path_line_to(ptr noundef %503, <2 x float> %513)
  %514 = load ptr, ptr %7, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.nk_context, ptr %514, i32 0, i32 8
  %516 = load ptr, ptr %45, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.nk_command_arc, ptr %516, i32 0, i32 1
  %518 = load i16, ptr %517, align 8, !tbaa !79
  %519 = sitofp i16 %518 to float
  %520 = load ptr, ptr %45, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.nk_command_arc, ptr %520, i32 0, i32 2
  %522 = load i16, ptr %521, align 2, !tbaa !81
  %523 = sitofp i16 %522 to float
  %524 = call <2 x float> @nk_vec2(float noundef %519, float noundef %523)
  store <2 x float> %524, ptr %47, align 4
  %525 = load ptr, ptr %45, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.nk_command_arc, ptr %525, i32 0, i32 3
  %527 = load i16, ptr %526, align 4, !tbaa !82
  %528 = uitofp i16 %527 to float
  %529 = load ptr, ptr %45, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.nk_command_arc, ptr %529, i32 0, i32 5
  %531 = getelementptr inbounds [2 x float], ptr %530, i64 0, i64 0
  %532 = load float, ptr %531, align 8, !tbaa !83
  %533 = load ptr, ptr %45, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.nk_command_arc, ptr %533, i32 0, i32 5
  %535 = getelementptr inbounds [2 x float], ptr %534, i64 0, i64 1
  %536 = load float, ptr %535, align 4, !tbaa !83
  %537 = load ptr, ptr %11, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.nk_convert_config, ptr %537, i32 0, i32 4
  %539 = load i32, ptr %538, align 8, !tbaa !84
  %540 = load <2 x float>, ptr %47, align 4
  call void @nk_draw_list_path_arc_to(ptr noundef %515, <2 x float> %540, float noundef %528, float noundef %532, float noundef %536, i32 noundef %539)
  %541 = load ptr, ptr %7, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.nk_context, ptr %541, i32 0, i32 8
  %543 = load ptr, ptr %45, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.nk_command_arc, ptr %543, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %48, ptr align 8 %544, i64 4, i1 false), !tbaa.struct !37
  %545 = load ptr, ptr %45, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.nk_command_arc, ptr %545, i32 0, i32 4
  %547 = load i16, ptr %546, align 2, !tbaa !85
  %548 = uitofp i16 %547 to float
  %549 = load i32, ptr %48, align 1
  call void @nk_draw_list_path_stroke(ptr noundef %542, i32 %549, i32 noundef 1, float noundef %548)
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %913

550:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %551 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %551, ptr %49, align 8, !tbaa !5
  %552 = load ptr, ptr %7, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.nk_context, ptr %552, i32 0, i32 8
  %554 = load ptr, ptr %49, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %554, i32 0, i32 1
  %556 = load i16, ptr %555, align 8, !tbaa !86
  %557 = sitofp i16 %556 to float
  %558 = load ptr, ptr %49, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %558, i32 0, i32 2
  %560 = load i16, ptr %559, align 2, !tbaa !88
  %561 = sitofp i16 %560 to float
  %562 = call <2 x float> @nk_vec2(float noundef %557, float noundef %561)
  store <2 x float> %562, ptr %50, align 4
  %563 = load <2 x float>, ptr %50, align 4
  call void @nk_draw_list_path_line_to(ptr noundef %553, <2 x float> %563)
  %564 = load ptr, ptr %7, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.nk_context, ptr %564, i32 0, i32 8
  %566 = load ptr, ptr %49, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %566, i32 0, i32 1
  %568 = load i16, ptr %567, align 8, !tbaa !86
  %569 = sitofp i16 %568 to float
  %570 = load ptr, ptr %49, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %570, i32 0, i32 2
  %572 = load i16, ptr %571, align 2, !tbaa !88
  %573 = sitofp i16 %572 to float
  %574 = call <2 x float> @nk_vec2(float noundef %569, float noundef %573)
  store <2 x float> %574, ptr %51, align 4
  %575 = load ptr, ptr %49, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %575, i32 0, i32 3
  %577 = load i16, ptr %576, align 4, !tbaa !89
  %578 = uitofp i16 %577 to float
  %579 = load ptr, ptr %49, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %579, i32 0, i32 4
  %581 = getelementptr inbounds [2 x float], ptr %580, i64 0, i64 0
  %582 = load float, ptr %581, align 8, !tbaa !83
  %583 = load ptr, ptr %49, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %583, i32 0, i32 4
  %585 = getelementptr inbounds [2 x float], ptr %584, i64 0, i64 1
  %586 = load float, ptr %585, align 4, !tbaa !83
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.nk_convert_config, ptr %587, i32 0, i32 4
  %589 = load i32, ptr %588, align 8, !tbaa !84
  %590 = load <2 x float>, ptr %51, align 4
  call void @nk_draw_list_path_arc_to(ptr noundef %565, <2 x float> %590, float noundef %578, float noundef %582, float noundef %586, i32 noundef %589)
  %591 = load ptr, ptr %7, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.nk_context, ptr %591, i32 0, i32 8
  %593 = load ptr, ptr %49, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.nk_command_arc_filled, ptr %593, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %52, ptr align 8 %594, i64 4, i1 false), !tbaa.struct !37
  %595 = load i32, ptr %52, align 1
  call void @nk_draw_list_path_fill(ptr noundef %592, i32 %595)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %913

596:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %597 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %597, ptr %53, align 8, !tbaa !5
  %598 = load ptr, ptr %7, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.nk_context, ptr %598, i32 0, i32 8
  %600 = load ptr, ptr %53, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.nk_command_triangle, ptr %600, i32 0, i32 2
  %602 = getelementptr inbounds %struct.nk_vec2i, ptr %601, i32 0, i32 0
  %603 = load i16, ptr %602, align 2, !tbaa !90
  %604 = sitofp i16 %603 to float
  %605 = load ptr, ptr %53, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.nk_command_triangle, ptr %605, i32 0, i32 2
  %607 = getelementptr inbounds %struct.nk_vec2i, ptr %606, i32 0, i32 1
  %608 = load i16, ptr %607, align 2, !tbaa !92
  %609 = sitofp i16 %608 to float
  %610 = call <2 x float> @nk_vec2(float noundef %604, float noundef %609)
  store <2 x float> %610, ptr %54, align 4
  %611 = load ptr, ptr %53, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.nk_command_triangle, ptr %611, i32 0, i32 3
  %613 = getelementptr inbounds %struct.nk_vec2i, ptr %612, i32 0, i32 0
  %614 = load i16, ptr %613, align 2, !tbaa !93
  %615 = sitofp i16 %614 to float
  %616 = load ptr, ptr %53, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.nk_command_triangle, ptr %616, i32 0, i32 3
  %618 = getelementptr inbounds %struct.nk_vec2i, ptr %617, i32 0, i32 1
  %619 = load i16, ptr %618, align 2, !tbaa !94
  %620 = sitofp i16 %619 to float
  %621 = call <2 x float> @nk_vec2(float noundef %615, float noundef %620)
  store <2 x float> %621, ptr %55, align 4
  %622 = load ptr, ptr %53, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.nk_command_triangle, ptr %622, i32 0, i32 4
  %624 = getelementptr inbounds %struct.nk_vec2i, ptr %623, i32 0, i32 0
  %625 = load i16, ptr %624, align 2, !tbaa !95
  %626 = sitofp i16 %625 to float
  %627 = load ptr, ptr %53, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.nk_command_triangle, ptr %627, i32 0, i32 4
  %629 = getelementptr inbounds %struct.nk_vec2i, ptr %628, i32 0, i32 1
  %630 = load i16, ptr %629, align 2, !tbaa !96
  %631 = sitofp i16 %630 to float
  %632 = call <2 x float> @nk_vec2(float noundef %626, float noundef %631)
  store <2 x float> %632, ptr %56, align 4
  %633 = load ptr, ptr %53, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.nk_command_triangle, ptr %633, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %57, ptr align 2 %634, i64 4, i1 false), !tbaa.struct !37
  %635 = load ptr, ptr %53, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.nk_command_triangle, ptr %635, i32 0, i32 1
  %637 = load i16, ptr %636, align 8, !tbaa !97
  %638 = uitofp i16 %637 to float
  %639 = load <2 x float>, ptr %54, align 4
  %640 = load <2 x float>, ptr %55, align 4
  %641 = load <2 x float>, ptr %56, align 4
  %642 = load i32, ptr %57, align 1
  call void @nk_draw_list_stroke_triangle(ptr noundef %599, <2 x float> %639, <2 x float> %640, <2 x float> %641, i32 %642, float noundef %638)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %913

643:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %644 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %644, ptr %58, align 8, !tbaa !5
  %645 = load ptr, ptr %7, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.nk_context, ptr %645, i32 0, i32 8
  %647 = load ptr, ptr %58, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %647, i32 0, i32 1
  %649 = getelementptr inbounds %struct.nk_vec2i, ptr %648, i32 0, i32 0
  %650 = load i16, ptr %649, align 8, !tbaa !98
  %651 = sitofp i16 %650 to float
  %652 = load ptr, ptr %58, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %652, i32 0, i32 1
  %654 = getelementptr inbounds %struct.nk_vec2i, ptr %653, i32 0, i32 1
  %655 = load i16, ptr %654, align 2, !tbaa !100
  %656 = sitofp i16 %655 to float
  %657 = call <2 x float> @nk_vec2(float noundef %651, float noundef %656)
  store <2 x float> %657, ptr %59, align 4
  %658 = load ptr, ptr %58, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %658, i32 0, i32 2
  %660 = getelementptr inbounds %struct.nk_vec2i, ptr %659, i32 0, i32 0
  %661 = load i16, ptr %660, align 4, !tbaa !101
  %662 = sitofp i16 %661 to float
  %663 = load ptr, ptr %58, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %663, i32 0, i32 2
  %665 = getelementptr inbounds %struct.nk_vec2i, ptr %664, i32 0, i32 1
  %666 = load i16, ptr %665, align 2, !tbaa !102
  %667 = sitofp i16 %666 to float
  %668 = call <2 x float> @nk_vec2(float noundef %662, float noundef %667)
  store <2 x float> %668, ptr %60, align 4
  %669 = load ptr, ptr %58, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %669, i32 0, i32 3
  %671 = getelementptr inbounds %struct.nk_vec2i, ptr %670, i32 0, i32 0
  %672 = load i16, ptr %671, align 8, !tbaa !103
  %673 = sitofp i16 %672 to float
  %674 = load ptr, ptr %58, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %674, i32 0, i32 3
  %676 = getelementptr inbounds %struct.nk_vec2i, ptr %675, i32 0, i32 1
  %677 = load i16, ptr %676, align 2, !tbaa !104
  %678 = sitofp i16 %677 to float
  %679 = call <2 x float> @nk_vec2(float noundef %673, float noundef %678)
  store <2 x float> %679, ptr %61, align 4
  %680 = load ptr, ptr %58, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.nk_command_triangle_filled, ptr %680, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %62, ptr align 4 %681, i64 4, i1 false), !tbaa.struct !37
  %682 = load <2 x float>, ptr %59, align 4
  %683 = load <2 x float>, ptr %60, align 4
  %684 = load <2 x float>, ptr %61, align 4
  %685 = load i32, ptr %62, align 1
  call void @nk_draw_list_fill_triangle(ptr noundef %646, <2 x float> %682, <2 x float> %683, <2 x float> %684, i32 %685)
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %913

686:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %687 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %687, ptr %64, align 8, !tbaa !5
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %716, %686
  %689 = load i32, ptr %63, align 4, !tbaa !9
  %690 = load ptr, ptr %64, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.nk_command_polygon, ptr %690, i32 0, i32 3
  %692 = load i16, ptr %691, align 2, !tbaa !105
  %693 = zext i16 %692 to i32
  %694 = icmp slt i32 %689, %693
  br i1 %694, label %695, label %719

695:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %696 = load ptr, ptr %64, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.nk_command_polygon, ptr %696, i32 0, i32 4
  %698 = load i32, ptr %63, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %697, i64 0, i64 %699
  %701 = getelementptr inbounds %struct.nk_vec2i, ptr %700, i32 0, i32 0
  %702 = load i16, ptr %701, align 4, !tbaa !43
  %703 = sitofp i16 %702 to float
  %704 = load ptr, ptr %64, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.nk_command_polygon, ptr %704, i32 0, i32 4
  %706 = load i32, ptr %63, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %705, i64 0, i64 %707
  %709 = getelementptr inbounds %struct.nk_vec2i, ptr %708, i32 0, i32 1
  %710 = load i16, ptr %709, align 2, !tbaa !44
  %711 = sitofp i16 %710 to float
  %712 = call <2 x float> @nk_vec2(float noundef %703, float noundef %711)
  store <2 x float> %712, ptr %65, align 4
  %713 = load ptr, ptr %7, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.nk_context, ptr %713, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %65, i64 8, i1 false), !tbaa.struct !107
  %715 = load <2 x float>, ptr %66, align 4
  call void @nk_draw_list_path_line_to(ptr noundef %714, <2 x float> %715)
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  br label %716

716:                                              ; preds = %695
  %717 = load i32, ptr %63, align 4, !tbaa !9
  %718 = add nsw i32 %717, 1
  store i32 %718, ptr %63, align 4, !tbaa !9
  br label %688, !llvm.loop !108

719:                                              ; preds = %688
  %720 = load ptr, ptr %7, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.nk_context, ptr %720, i32 0, i32 8
  %722 = load ptr, ptr %64, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.nk_command_polygon, ptr %722, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %67, ptr align 8 %723, i64 4, i1 false), !tbaa.struct !37
  %724 = load ptr, ptr %64, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.nk_command_polygon, ptr %724, i32 0, i32 2
  %726 = load i16, ptr %725, align 4, !tbaa !110
  %727 = uitofp i16 %726 to float
  %728 = load i32, ptr %67, align 1
  call void @nk_draw_list_path_stroke(ptr noundef %721, i32 %728, i32 noundef 1, float noundef %727)
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br label %913

729:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %730 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %730, ptr %69, align 8, !tbaa !5
  store i32 0, ptr %68, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %759, %729
  %732 = load i32, ptr %68, align 4, !tbaa !9
  %733 = load ptr, ptr %69, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.nk_command_polygon_filled, ptr %733, i32 0, i32 2
  %735 = load i16, ptr %734, align 4, !tbaa !111
  %736 = zext i16 %735 to i32
  %737 = icmp slt i32 %732, %736
  br i1 %737, label %738, label %762

738:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %739 = load ptr, ptr %69, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.nk_command_polygon_filled, ptr %739, i32 0, i32 3
  %741 = load i32, ptr %68, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %740, i64 0, i64 %742
  %744 = getelementptr inbounds %struct.nk_vec2i, ptr %743, i32 0, i32 0
  %745 = load i16, ptr %744, align 2, !tbaa !43
  %746 = sitofp i16 %745 to float
  %747 = load ptr, ptr %69, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.nk_command_polygon_filled, ptr %747, i32 0, i32 3
  %749 = load i32, ptr %68, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %748, i64 0, i64 %750
  %752 = getelementptr inbounds %struct.nk_vec2i, ptr %751, i32 0, i32 1
  %753 = load i16, ptr %752, align 2, !tbaa !44
  %754 = sitofp i16 %753 to float
  %755 = call <2 x float> @nk_vec2(float noundef %746, float noundef %754)
  store <2 x float> %755, ptr %70, align 4
  %756 = load ptr, ptr %7, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.nk_context, ptr %756, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %70, i64 8, i1 false), !tbaa.struct !107
  %758 = load <2 x float>, ptr %71, align 4
  call void @nk_draw_list_path_line_to(ptr noundef %757, <2 x float> %758)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %759

759:                                              ; preds = %738
  %760 = load i32, ptr %68, align 4, !tbaa !9
  %761 = add nsw i32 %760, 1
  store i32 %761, ptr %68, align 4, !tbaa !9
  br label %731, !llvm.loop !113

762:                                              ; preds = %731
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.nk_context, ptr %763, i32 0, i32 8
  %765 = load ptr, ptr %69, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.nk_command_polygon_filled, ptr %765, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %72, ptr align 8 %766, i64 4, i1 false), !tbaa.struct !37
  %767 = load i32, ptr %72, align 1
  call void @nk_draw_list_path_fill(ptr noundef %764, i32 %767)
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %913

768:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %769 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %769, ptr %74, align 8, !tbaa !5
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %770

770:                                              ; preds = %798, %768
  %771 = load i32, ptr %73, align 4, !tbaa !9
  %772 = load ptr, ptr %74, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.nk_command_polyline, ptr %772, i32 0, i32 3
  %774 = load i16, ptr %773, align 2, !tbaa !114
  %775 = zext i16 %774 to i32
  %776 = icmp slt i32 %771, %775
  br i1 %776, label %777, label %801

777:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %778 = load ptr, ptr %74, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.nk_command_polyline, ptr %778, i32 0, i32 4
  %780 = load i32, ptr %73, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %779, i64 0, i64 %781
  %783 = getelementptr inbounds %struct.nk_vec2i, ptr %782, i32 0, i32 0
  %784 = load i16, ptr %783, align 4, !tbaa !43
  %785 = sitofp i16 %784 to float
  %786 = load ptr, ptr %74, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.nk_command_polyline, ptr %786, i32 0, i32 4
  %788 = load i32, ptr %73, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %787, i64 0, i64 %789
  %791 = getelementptr inbounds %struct.nk_vec2i, ptr %790, i32 0, i32 1
  %792 = load i16, ptr %791, align 2, !tbaa !44
  %793 = sitofp i16 %792 to float
  %794 = call <2 x float> @nk_vec2(float noundef %785, float noundef %793)
  store <2 x float> %794, ptr %75, align 4
  %795 = load ptr, ptr %7, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.nk_context, ptr %795, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !107
  %797 = load <2 x float>, ptr %76, align 4
  call void @nk_draw_list_path_line_to(ptr noundef %796, <2 x float> %797)
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %798

798:                                              ; preds = %777
  %799 = load i32, ptr %73, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %73, align 4, !tbaa !9
  br label %770, !llvm.loop !116

801:                                              ; preds = %770
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.nk_context, ptr %802, i32 0, i32 8
  %804 = load ptr, ptr %74, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.nk_command_polyline, ptr %804, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr align 8 %805, i64 4, i1 false), !tbaa.struct !37
  %806 = load ptr, ptr %74, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.nk_command_polyline, ptr %806, i32 0, i32 2
  %808 = load i16, ptr %807, align 4, !tbaa !117
  %809 = uitofp i16 %808 to float
  %810 = load i32, ptr %77, align 1
  call void @nk_draw_list_path_stroke(ptr noundef %803, i32 %810, i32 noundef 0, float noundef %809)
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  br label %913

811:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %812 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %812, ptr %78, align 8, !tbaa !5
  %813 = load ptr, ptr %7, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.nk_context, ptr %813, i32 0, i32 8
  %815 = load ptr, ptr %78, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.nk_command_text, ptr %815, i32 0, i32 1
  %817 = load ptr, ptr %816, align 8, !tbaa !118
  %818 = load ptr, ptr %78, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.nk_command_text, ptr %818, i32 0, i32 4
  %820 = load i16, ptr %819, align 8, !tbaa !120
  %821 = sitofp i16 %820 to float
  %822 = load ptr, ptr %78, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.nk_command_text, ptr %822, i32 0, i32 5
  %824 = load i16, ptr %823, align 2, !tbaa !121
  %825 = sitofp i16 %824 to float
  %826 = load ptr, ptr %78, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.nk_command_text, ptr %826, i32 0, i32 6
  %828 = load i16, ptr %827, align 4, !tbaa !122
  %829 = uitofp i16 %828 to float
  %830 = load ptr, ptr %78, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.nk_command_text, ptr %830, i32 0, i32 7
  %832 = load i16, ptr %831, align 2, !tbaa !123
  %833 = uitofp i16 %832 to float
  %834 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %821, float noundef %825, float noundef %829, float noundef %833)
  %835 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %836 = extractvalue { <2 x float>, <2 x float> } %834, 0
  store <2 x float> %836, ptr %835, align 4
  %837 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %838 = extractvalue { <2 x float>, <2 x float> } %834, 1
  store <2 x float> %838, ptr %837, align 4
  %839 = load ptr, ptr %78, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.nk_command_text, ptr %839, i32 0, i32 10
  %841 = getelementptr inbounds [1 x i8], ptr %840, i64 0, i64 0
  %842 = load ptr, ptr %78, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.nk_command_text, ptr %842, i32 0, i32 9
  %844 = load i32, ptr %843, align 4, !tbaa !124
  %845 = load ptr, ptr %78, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.nk_command_text, ptr %845, i32 0, i32 8
  %847 = load float, ptr %846, align 8, !tbaa !125
  %848 = load ptr, ptr %78, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.nk_command_text, ptr %848, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %80, ptr align 4 %849, i64 4, i1 false), !tbaa.struct !37
  %850 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %851 = load <2 x float>, ptr %850, align 4
  %852 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %853 = load <2 x float>, ptr %852, align 4
  %854 = load i32, ptr %80, align 1
  call void @nk_draw_list_add_text(ptr noundef %814, ptr noundef %817, <2 x float> %851, <2 x float> %853, ptr noundef %841, i32 noundef %844, float noundef %847, i32 %854)
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %913

855:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %856 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %856, ptr %81, align 8, !tbaa !5
  %857 = load ptr, ptr %7, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.nk_context, ptr %857, i32 0, i32 8
  %859 = load ptr, ptr %81, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.nk_command_image, ptr %859, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %82, ptr align 8 %860, i64 24, i1 false), !tbaa.struct !126
  %861 = load ptr, ptr %81, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.nk_command_image, ptr %861, i32 0, i32 1
  %863 = load i16, ptr %862, align 8, !tbaa !128
  %864 = sitofp i16 %863 to float
  %865 = load ptr, ptr %81, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.nk_command_image, ptr %865, i32 0, i32 2
  %867 = load i16, ptr %866, align 2, !tbaa !131
  %868 = sitofp i16 %867 to float
  %869 = load ptr, ptr %81, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.nk_command_image, ptr %869, i32 0, i32 3
  %871 = load i16, ptr %870, align 4, !tbaa !132
  %872 = uitofp i16 %871 to float
  %873 = load ptr, ptr %81, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.nk_command_image, ptr %873, i32 0, i32 4
  %875 = load i16, ptr %874, align 2, !tbaa !133
  %876 = uitofp i16 %875 to float
  %877 = call { <2 x float>, <2 x float> } @nk_rect(float noundef %864, float noundef %868, float noundef %872, float noundef %876)
  %878 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 0
  %879 = extractvalue { <2 x float>, <2 x float> } %877, 0
  store <2 x float> %879, ptr %878, align 4
  %880 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 1
  %881 = extractvalue { <2 x float>, <2 x float> } %877, 1
  store <2 x float> %881, ptr %880, align 4
  %882 = load ptr, ptr %81, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.nk_command_image, ptr %882, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %84, ptr align 8 %883, i64 4, i1 false), !tbaa.struct !37
  %884 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 0
  %885 = load <2 x float>, ptr %884, align 4
  %886 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 1
  %887 = load <2 x float>, ptr %886, align 4
  %888 = load i32, ptr %84, align 1
  call void @nk_draw_list_add_image(ptr noundef %858, ptr noundef byval(%struct.nk_image) align 8 %82, <2 x float> %885, <2 x float> %887, i32 %888)
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  br label %913

889:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  %890 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %890, ptr %85, align 8, !tbaa !5
  %891 = load ptr, ptr %85, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.nk_command_custom, ptr %891, i32 0, i32 6
  %893 = load ptr, ptr %892, align 8, !tbaa !134
  %894 = load ptr, ptr %7, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.nk_context, ptr %894, i32 0, i32 8
  %896 = load ptr, ptr %85, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.nk_command_custom, ptr %896, i32 0, i32 1
  %898 = load i16, ptr %897, align 8, !tbaa !136
  %899 = load ptr, ptr %85, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.nk_command_custom, ptr %899, i32 0, i32 2
  %901 = load i16, ptr %900, align 2, !tbaa !137
  %902 = load ptr, ptr %85, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.nk_command_custom, ptr %902, i32 0, i32 3
  %904 = load i16, ptr %903, align 4, !tbaa !138
  %905 = load ptr, ptr %85, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.nk_command_custom, ptr %905, i32 0, i32 4
  %907 = load i16, ptr %906, align 2, !tbaa !139
  %908 = load ptr, ptr %85, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.nk_command_custom, ptr %908, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %86, ptr align 8 %909, i64 8, i1 false), !tbaa.struct !140
  %910 = getelementptr inbounds %union.nk_handle, ptr %86, i32 0, i32 0
  %911 = load ptr, ptr %910, align 8
  call void %893(ptr noundef %895, i16 noundef signext %898, i16 noundef signext %901, i16 noundef zeroext %904, i16 noundef zeroext %907, ptr %911)
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %913

912:                                              ; preds = %171
  br label %913

913:                                              ; preds = %912, %889, %855, %811, %801, %762, %719, %643, %596, %550, %500, %463, %422, %381, %345, %305, %239, %204, %175, %171
  br label %914

914:                                              ; preds = %913
  %915 = load ptr, ptr %7, align 8, !tbaa !5
  %916 = load ptr, ptr %13, align 8, !tbaa !5
  %917 = call ptr @nk__next(ptr noundef %915, ptr noundef %916)
  store ptr %917, ptr %13, align 8, !tbaa !5
  br label %168, !llvm.loop !141

918:                                              ; preds = %168
  %919 = load ptr, ptr %8, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.nk_buffer, ptr %919, i32 0, i32 6
  %921 = load i64, ptr %920, align 8, !tbaa !142
  %922 = load ptr, ptr %8, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.nk_buffer, ptr %922, i32 0, i32 5
  %924 = load i64, ptr %923, align 8, !tbaa !147
  %925 = load ptr, ptr %8, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.nk_buffer, ptr %925, i32 0, i32 3
  %927 = getelementptr inbounds %struct.nk_memory, ptr %926, i32 0, i32 1
  %928 = load i64, ptr %927, align 8, !tbaa !148
  %929 = load ptr, ptr %8, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.nk_buffer, ptr %929, i32 0, i32 8
  %931 = load i64, ptr %930, align 8, !tbaa !149
  %932 = sub i64 %928, %931
  %933 = add i64 %924, %932
  %934 = icmp ugt i64 %921, %933
  %935 = zext i1 %934 to i64
  %936 = select i1 %934, i32 2, i32 0
  %937 = load i32, ptr %12, align 4, !tbaa !9
  %938 = or i32 %937, %936
  store i32 %938, ptr %12, align 4, !tbaa !9
  %939 = load ptr, ptr %9, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.nk_buffer, ptr %939, i32 0, i32 6
  %941 = load i64, ptr %940, align 8, !tbaa !142
  %942 = load ptr, ptr %9, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.nk_buffer, ptr %942, i32 0, i32 5
  %944 = load i64, ptr %943, align 8, !tbaa !147
  %945 = icmp ugt i64 %941, %944
  %946 = zext i1 %945 to i64
  %947 = select i1 %945, i32 4, i32 0
  %948 = load i32, ptr %12, align 4, !tbaa !9
  %949 = or i32 %948, %947
  store i32 %949, ptr %12, align 4, !tbaa !9
  %950 = load ptr, ptr %10, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.nk_buffer, ptr %950, i32 0, i32 6
  %952 = load i64, ptr %951, align 8, !tbaa !142
  %953 = load ptr, ptr %10, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.nk_buffer, ptr %953, i32 0, i32 5
  %955 = load i64, ptr %954, align 8, !tbaa !147
  %956 = icmp ugt i64 %952, %955
  %957 = zext i1 %956 to i64
  %958 = select i1 %956, i32 8, i32 0
  %959 = load i32, ptr %12, align 4, !tbaa !9
  %960 = or i32 %959, %958
  store i32 %960, ptr %12, align 4, !tbaa !9
  %961 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %961, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %962

962:                                              ; preds = %918, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  %963 = load i32, ptr %6, align 4
  ret i32 %963
}

; Function Attrs: mustprogress uwtable
declare dso_local ptr @nk__begin(ptr noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @nk__next(ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #5 = { 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 #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 = { nounwind }
attributes #8 = { 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, !6, i64 40}
!12 = !{!"_ZTS17nk_convert_config", !13, i64 0, !14, i64 4, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !15, i64 24, !6, i64 40, !17, i64 48, !17, i64 56}
!13 = !{!"float", !7, i64 0}
!14 = !{!"_ZTS16nk_anti_aliasing", !7, i64 0}
!15 = !{!"_ZTS20nk_draw_null_texture", !7, i64 0, !16, i64 8}
!16 = !{!"_ZTS7nk_vec2", !13, i64 0, !13, i64 4}
!17 = !{!"long", !7, i64 0}
!18 = !{!12, !17, i64 48}
!19 = !{!12, !14, i64 4}
!20 = !{!12, !14, i64 8}
!21 = !{!22, !23, i64 0}
!22 = !{!"_ZTS10nk_command", !23, i64 0, !17, i64 8}
!23 = !{!"_ZTS15nk_command_type", !7, i64 0}
!24 = !{!25, !26, i64 16}
!25 = !{!"_ZTS18nk_command_scissor", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22}
!26 = !{!"short", !7, i64 0}
!27 = !{!25, !26, i64 18}
!28 = !{!25, !26, i64 20}
!29 = !{!25, !26, i64 22}
!30 = !{!31, !26, i64 18}
!31 = !{!"_ZTS15nk_command_line", !22, i64 0, !26, i64 16, !32, i64 18, !32, i64 22, !33, i64 26}
!32 = !{!"_ZTS8nk_vec2i", !26, i64 0, !26, i64 2}
!33 = !{!"_ZTS8nk_color", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3}
!34 = !{!31, !26, i64 20}
!35 = !{!31, !26, i64 22}
!36 = !{!31, !26, i64 24}
!37 = !{i64 0, i64 1, !38, i64 1, i64 1, !38, i64 2, i64 1, !38, i64 3, i64 1, !38}
!38 = !{!7, !7, i64 0}
!39 = !{!31, !26, i64 16}
!40 = !{!41, !26, i64 18}
!41 = !{!"_ZTS16nk_command_curve", !22, i64 0, !26, i64 16, !32, i64 18, !32, i64 22, !7, i64 26, !33, i64 34}
!42 = !{!41, !26, i64 20}
!43 = !{!32, !26, i64 0}
!44 = !{!32, !26, i64 2}
!45 = !{!41, !26, i64 22}
!46 = !{!41, !26, i64 24}
!47 = !{!12, !10, i64 20}
!48 = !{!41, !26, i64 16}
!49 = !{!50, !26, i64 20}
!50 = !{!"_ZTS15nk_command_rect", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !26, i64 24, !26, i64 26, !33, i64 28}
!51 = !{!50, !26, i64 22}
!52 = !{!50, !26, i64 24}
!53 = !{!50, !26, i64 26}
!54 = !{!50, !26, i64 16}
!55 = !{!50, !26, i64 18}
!56 = !{!57, !26, i64 18}
!57 = !{!"_ZTS22nk_command_rect_filled", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !26, i64 24, !33, i64 26}
!58 = !{!57, !26, i64 20}
!59 = !{!57, !26, i64 22}
!60 = !{!57, !26, i64 24}
!61 = !{!57, !26, i64 16}
!62 = !{!63, !26, i64 16}
!63 = !{!"_ZTS27nk_command_rect_multi_color", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !33, i64 24, !33, i64 28, !33, i64 32, !33, i64 36}
!64 = !{!63, !26, i64 18}
!65 = !{!63, !26, i64 20}
!66 = !{!63, !26, i64 22}
!67 = !{!68, !26, i64 16}
!68 = !{!"_ZTS17nk_command_circle", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !26, i64 24, !33, i64 26}
!69 = !{!68, !26, i64 22}
!70 = !{!68, !26, i64 18}
!71 = !{!68, !26, i64 24}
!72 = !{!12, !10, i64 12}
!73 = !{!68, !26, i64 20}
!74 = !{!75, !26, i64 16}
!75 = !{!"_ZTS24nk_command_circle_filled", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !33, i64 24}
!76 = !{!75, !26, i64 20}
!77 = !{!75, !26, i64 18}
!78 = !{!75, !26, i64 22}
!79 = !{!80, !26, i64 16}
!80 = !{!"_ZTS14nk_command_arc", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !7, i64 24, !33, i64 32}
!81 = !{!80, !26, i64 18}
!82 = !{!80, !26, i64 20}
!83 = !{!13, !13, i64 0}
!84 = !{!12, !10, i64 16}
!85 = !{!80, !26, i64 22}
!86 = !{!87, !26, i64 16}
!87 = !{!"_ZTS21nk_command_arc_filled", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !7, i64 24, !33, i64 32}
!88 = !{!87, !26, i64 18}
!89 = !{!87, !26, i64 20}
!90 = !{!91, !26, i64 18}
!91 = !{!"_ZTS19nk_command_triangle", !22, i64 0, !26, i64 16, !32, i64 18, !32, i64 22, !32, i64 26, !33, i64 30}
!92 = !{!91, !26, i64 20}
!93 = !{!91, !26, i64 22}
!94 = !{!91, !26, i64 24}
!95 = !{!91, !26, i64 26}
!96 = !{!91, !26, i64 28}
!97 = !{!91, !26, i64 16}
!98 = !{!99, !26, i64 16}
!99 = !{!"_ZTS26nk_command_triangle_filled", !22, i64 0, !32, i64 16, !32, i64 20, !32, i64 24, !33, i64 28}
!100 = !{!99, !26, i64 18}
!101 = !{!99, !26, i64 20}
!102 = !{!99, !26, i64 22}
!103 = !{!99, !26, i64 24}
!104 = !{!99, !26, i64 26}
!105 = !{!106, !26, i64 22}
!106 = !{!"_ZTS18nk_command_polygon", !22, i64 0, !33, i64 16, !26, i64 20, !26, i64 22, !7, i64 24}
!107 = !{i64 0, i64 4, !83, i64 4, i64 4, !83}
!108 = distinct !{!108, !109}
!109 = !{!"llvm.loop.mustprogress"}
!110 = !{!106, !26, i64 20}
!111 = !{!112, !26, i64 20}
!112 = !{!"_ZTS25nk_command_polygon_filled", !22, i64 0, !33, i64 16, !26, i64 20, !7, i64 22}
!113 = distinct !{!113, !109}
!114 = !{!115, !26, i64 22}
!115 = !{!"_ZTS19nk_command_polyline", !22, i64 0, !33, i64 16, !26, i64 20, !26, i64 22, !7, i64 24}
!116 = distinct !{!116, !109}
!117 = !{!115, !26, i64 20}
!118 = !{!119, !6, i64 16}
!119 = !{!"_ZTS15nk_command_text", !22, i64 0, !6, i64 16, !33, i64 24, !33, i64 28, !26, i64 32, !26, i64 34, !26, i64 36, !26, i64 38, !13, i64 40, !10, i64 44, !7, i64 48}
!120 = !{!119, !26, i64 32}
!121 = !{!119, !26, i64 34}
!122 = !{!119, !26, i64 36}
!123 = !{!119, !26, i64 38}
!124 = !{!119, !10, i64 44}
!125 = !{!119, !13, i64 40}
!126 = !{i64 0, i64 8, !38, i64 8, i64 2, !127, i64 10, i64 2, !127, i64 12, i64 8, !38}
!127 = !{!26, !26, i64 0}
!128 = !{!129, !26, i64 16}
!129 = !{!"_ZTS16nk_command_image", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !130, i64 24, !33, i64 48}
!130 = !{!"_ZTS8nk_image", !7, i64 0, !26, i64 8, !26, i64 10, !7, i64 12}
!131 = !{!129, !26, i64 18}
!132 = !{!129, !26, i64 20}
!133 = !{!129, !26, i64 22}
!134 = !{!135, !6, i64 32}
!135 = !{!"_ZTS17nk_command_custom", !22, i64 0, !26, i64 16, !26, i64 18, !26, i64 20, !26, i64 22, !7, i64 24, !6, i64 32}
!136 = !{!135, !26, i64 16}
!137 = !{!135, !26, i64 18}
!138 = !{!135, !26, i64 20}
!139 = !{!135, !26, i64 22}
!140 = !{i64 0, i64 8, !38}
!141 = distinct !{!141, !109}
!142 = !{!143, !17, i64 96}
!143 = !{!"_ZTS9nk_buffer", !7, i64 0, !144, i64 32, !145, i64 56, !146, i64 64, !13, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112}
!144 = !{!"_ZTS12nk_allocator", !7, i64 0, !6, i64 8, !6, i64 16}
!145 = !{!"_ZTS18nk_allocation_type", !7, i64 0}
!146 = !{!"_ZTS9nk_memory", !6, i64 0, !17, i64 8}
!147 = !{!143, !17, i64 88}
!148 = !{!143, !17, i64 72}
!149 = !{!143, !17, i64 112}


; 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_image = type { %union.nk_handle, i16, i16, [4 x i16] }
%union.nk_handle = type { ptr }
%struct.nk_vec2i = type { i16, i16 }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__.nk_convert = external hidden unnamed_addr constant [135 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_line_to(ptr noundef, <2 x float>) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_arc_to(ptr noundef, <2 x float>, float noundef, float noundef, float noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_path_stroke(ptr noundef, i32, i32 noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_line(ptr noundef, <2 x float>, <2 x float>, i32, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_rect(ptr noundef, <2 x float>, <2 x float>, i32, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_rect(ptr noundef, <2 x float>, <2 x float>, i32, float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_rect_multi_color(ptr noundef, <2 x float>, <2 x float>, i32, i32, i32, i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_triangle(ptr noundef, <2 x float>, <2 x float>, <2 x float>, i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_triangle(ptr noundef, <2 x float>, <2 x float>, <2 x float>, i32, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_fill_circle(ptr noundef, <2 x float>, float noundef, i32, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_circle(ptr noundef, <2 x float>, float noundef, i32, i32 noundef, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_stroke_curve(ptr noundef, <2 x float>, <2 x float>, <2 x float>, <2 x float>, i32, i32 noundef, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_add_image(ptr noundef, ptr noundef byval(%struct.nk_image) align 8, <2 x float>, <2 x float>, i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @nk_draw_list_add_text(ptr noundef, ptr noundef, <2 x float>, <2 x float>, ptr noundef, i32 noundef, float noundef, i32) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local range(i32 0, 16) i32 @nk_convert(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #4 {
  %6 = alloca %struct.nk_image, align 8
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %7, label %8

7:                                                ; preds = %5
  tail call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 10584, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

8:                                                ; preds = %5
  %.not288 = icmp eq ptr %1, null
  br i1 %.not288, label %9, label %10

9:                                                ; preds = %8
  tail call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 10585, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

10:                                               ; preds = %8
  %.not289 = icmp eq ptr %2, null
  br i1 %.not289, label %11, label %12

11:                                               ; preds = %10
  tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 10586, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

12:                                               ; preds = %10
  %.not290 = icmp eq ptr %3, null
  br i1 %.not290, label %13, label %14

13:                                               ; preds = %12
  tail call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 10587, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

14:                                               ; preds = %12
  %.not291 = icmp eq ptr %4, null
  br i1 %.not291, label %15, label %16

15:                                               ; preds = %14
  tail call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 10588, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

16:                                               ; preds = %14
  %17 = getelementptr inbounds i8, ptr %4, i64 40
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %.not292 = icmp eq ptr %18, null
  br i1 %.not292, label %19, label %20

19:                                               ; preds = %16
  tail call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 10589, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

20:                                               ; preds = %16
  %21 = getelementptr inbounds i8, ptr %4, i64 48
  %22 = load i64, ptr %21, align 8, !tbaa !16
  %.not293 = icmp eq i64 %22, 0
  br i1 %.not293, label %23, label %24

23:                                               ; preds = %20
  tail call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 10590, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_convert) #6
  unreachable

24:                                               ; preds = %20
  %25 = getelementptr inbounds i8, ptr %0, i64 12032
  %26 = getelementptr inbounds i8, ptr %4, i64 4
  %27 = load i32, ptr %26, align 4, !tbaa !17
  %28 = getelementptr inbounds i8, ptr %4, i64 8
  %29 = load i32, ptr %28, align 8, !tbaa !18
  tail call void @nk_draw_list_setup(ptr noundef nonnull %25, ptr noundef nonnull %4, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef %27, i32 noundef %29)
  %30 = tail call ptr @nk__begin(ptr noundef nonnull %0)
  %.not294304 = icmp eq ptr %30, null
  br i1 %.not294304, label %._crit_edge308, label %.lr.ph307

.lr.ph307:                                        ; preds = %24
  %31 = getelementptr inbounds i8, ptr %4, i64 16
  %32 = getelementptr inbounds i8, ptr %4, i64 12
  %33 = getelementptr inbounds i8, ptr %4, i64 20
  br label %34

34:                                               ; preds = %.lr.ph307, %418
  %.0279305 = phi ptr [ %30, %.lr.ph307 ], [ %419, %418 ]
  %35 = load i32, ptr %.0279305, align 8, !tbaa !19
  switch i32 %35, label %418 [
    i32 18, label %406
    i32 1, label %45
    i32 2, label %61
    i32 3, label %80
    i32 4, label %114
    i32 5, label %137
    i32 6, label %157
    i32 7, label %177
    i32 8, label %203
    i32 9, label %226
    i32 10, label %251
    i32 11, label %273
    i32 12, label %299
    i32 13, label %.preheader
    i32 14, label %.preheader295
    i32 15, label %.preheader296
    i32 16, label %364
    i32 17, label %388
  ]

.preheader296:                                    ; preds = %34
  %36 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %37 = load i16, ptr %36, align 2, !tbaa !22
  %.not309 = icmp eq i16 %37, 0
  br i1 %.not309, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader296
  %38 = getelementptr inbounds i8, ptr %.0279305, i64 24
  br label %349

.preheader295:                                    ; preds = %34
  %39 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %40 = load i16, ptr %39, align 4, !tbaa !26
  %.not310 = icmp eq i16 %40, 0
  br i1 %.not310, label %._crit_edge300, label %.lr.ph299

.lr.ph299:                                        ; preds = %.preheader295
  %41 = getelementptr inbounds i8, ptr %.0279305, i64 22
  br label %337

.preheader:                                       ; preds = %34
  %42 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %43 = load i16, ptr %42, align 2, !tbaa !28
  %.not311 = icmp eq i16 %43, 0
  br i1 %.not311, label %._crit_edge303, label %.lr.ph302

.lr.ph302:                                        ; preds = %.preheader
  %44 = getelementptr inbounds i8, ptr %.0279305, i64 24
  br label %322

45:                                               ; preds = %34
  %46 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %47 = load i16, ptr %46, align 8, !tbaa !30
  %48 = sitofp i16 %47 to float
  %49 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %50 = load i16, ptr %49, align 2, !tbaa !32
  %51 = sitofp i16 %50 to float
  %52 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %53 = load i16, ptr %52, align 4, !tbaa !33
  %54 = uitofp i16 %53 to float
  %55 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %56 = load i16, ptr %55, align 2, !tbaa !34
  %57 = uitofp i16 %56 to float
  %58 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %48, float noundef %51, float noundef %54, float noundef %57)
  %59 = extractvalue { <2 x float>, <2 x float> } %58, 0
  %60 = extractvalue { <2 x float>, <2 x float> } %58, 1
  tail call void @_ZL21nk_draw_list_add_clipP12nk_draw_list7nk_rect(ptr noundef nonnull %25, <2 x float> %59, <2 x float> %60)
  br label %418

61:                                               ; preds = %34
  %62 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %63 = load i16, ptr %62, align 2, !tbaa !35
  %64 = sitofp i16 %63 to float
  %65 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %66 = load i16, ptr %65, align 2, !tbaa !38
  %67 = sitofp i16 %66 to float
  %68 = tail call <2 x float> @nk_vec2(float noundef %64, float noundef %67)
  %69 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %70 = load i16, ptr %69, align 2, !tbaa !39
  %71 = sitofp i16 %70 to float
  %72 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %73 = load i16, ptr %72, align 2, !tbaa !40
  %74 = sitofp i16 %73 to float
  %75 = tail call <2 x float> @nk_vec2(float noundef %71, float noundef %74)
  %76 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %.sroa.0178.0.copyload = load i32, ptr %76, align 2
  %77 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %78 = load i16, ptr %77, align 8, !tbaa !41
  %79 = uitofp i16 %78 to float
  tail call void @nk_draw_list_stroke_line(ptr noundef nonnull %25, <2 x float> %68, <2 x float> %75, i32 %.sroa.0178.0.copyload, float noundef %79)
  br label %418

80:                                               ; preds = %34
  %81 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %82 = load i16, ptr %81, align 2, !tbaa !42
  %83 = sitofp i16 %82 to float
  %84 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %85 = load i16, ptr %84, align 2, !tbaa !44
  %86 = sitofp i16 %85 to float
  %87 = tail call <2 x float> @nk_vec2(float noundef %83, float noundef %86)
  %88 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %89 = load i16, ptr %88, align 2, !tbaa !45
  %90 = sitofp i16 %89 to float
  %91 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %92 = load i16, ptr %91, align 2, !tbaa !46
  %93 = sitofp i16 %92 to float
  %94 = tail call <2 x float> @nk_vec2(float noundef %90, float noundef %93)
  %95 = getelementptr inbounds i8, ptr %.0279305, i64 30
  %96 = load i16, ptr %95, align 2, !tbaa !45
  %97 = sitofp i16 %96 to float
  %98 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %99 = load i16, ptr %98, align 2, !tbaa !46
  %100 = sitofp i16 %99 to float
  %101 = tail call <2 x float> @nk_vec2(float noundef %97, float noundef %100)
  %102 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %103 = load i16, ptr %102, align 2, !tbaa !47
  %104 = sitofp i16 %103 to float
  %105 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %106 = load i16, ptr %105, align 2, !tbaa !48
  %107 = sitofp i16 %106 to float
  %108 = tail call <2 x float> @nk_vec2(float noundef %104, float noundef %107)
  %109 = getelementptr inbounds i8, ptr %.0279305, i64 34
  %.sroa.0163.0.copyload = load i32, ptr %109, align 2
  %110 = load i32, ptr %33, align 4, !tbaa !49
  %111 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %112 = load i16, ptr %111, align 8, !tbaa !50
  %113 = uitofp i16 %112 to float
  tail call void @nk_draw_list_stroke_curve(ptr noundef nonnull %25, <2 x float> %87, <2 x float> %94, <2 x float> %101, <2 x float> %108, i32 %.sroa.0163.0.copyload, i32 noundef %110, float noundef %113)
  br label %418

114:                                              ; preds = %34
  %115 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %116 = load i16, ptr %115, align 4, !tbaa !51
  %117 = sitofp i16 %116 to float
  %118 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %119 = load i16, ptr %118, align 2, !tbaa !53
  %120 = sitofp i16 %119 to float
  %121 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %122 = load i16, ptr %121, align 8, !tbaa !54
  %123 = uitofp i16 %122 to float
  %124 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %125 = load i16, ptr %124, align 2, !tbaa !55
  %126 = uitofp i16 %125 to float
  %127 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %117, float noundef %120, float noundef %123, float noundef %126)
  %128 = extractvalue { <2 x float>, <2 x float> } %127, 0
  %129 = extractvalue { <2 x float>, <2 x float> } %127, 1
  %130 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %.sroa.0153.0.copyload = load i32, ptr %130, align 4
  %131 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %132 = load i16, ptr %131, align 8, !tbaa !56
  %133 = uitofp i16 %132 to float
  %134 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %135 = load i16, ptr %134, align 2, !tbaa !57
  %136 = uitofp i16 %135 to float
  tail call void @nk_draw_list_stroke_rect(ptr noundef nonnull %25, <2 x float> %128, <2 x float> %129, i32 %.sroa.0153.0.copyload, float noundef %133, float noundef %136)
  br label %418

137:                                              ; preds = %34
  %138 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %139 = load i16, ptr %138, align 2, !tbaa !58
  %140 = sitofp i16 %139 to float
  %141 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %142 = load i16, ptr %141, align 4, !tbaa !60
  %143 = sitofp i16 %142 to float
  %144 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %145 = load i16, ptr %144, align 2, !tbaa !61
  %146 = uitofp i16 %145 to float
  %147 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %148 = load i16, ptr %147, align 8, !tbaa !62
  %149 = uitofp i16 %148 to float
  %150 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %140, float noundef %143, float noundef %146, float noundef %149)
  %151 = extractvalue { <2 x float>, <2 x float> } %150, 0
  %152 = extractvalue { <2 x float>, <2 x float> } %150, 1
  %153 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %.sroa.0144.0.copyload = load i32, ptr %153, align 2
  %154 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %155 = load i16, ptr %154, align 8, !tbaa !63
  %156 = uitofp i16 %155 to float
  tail call void @nk_draw_list_fill_rect(ptr noundef nonnull %25, <2 x float> %151, <2 x float> %152, i32 %.sroa.0144.0.copyload, float noundef %156)
  br label %418

157:                                              ; preds = %34
  %158 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %159 = load i16, ptr %158, align 8, !tbaa !64
  %160 = sitofp i16 %159 to float
  %161 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %162 = load i16, ptr %161, align 2, !tbaa !66
  %163 = sitofp i16 %162 to float
  %164 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %165 = load i16, ptr %164, align 4, !tbaa !67
  %166 = uitofp i16 %165 to float
  %167 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %168 = load i16, ptr %167, align 2, !tbaa !68
  %169 = uitofp i16 %168 to float
  %170 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %160, float noundef %163, float noundef %166, float noundef %169)
  %171 = extractvalue { <2 x float>, <2 x float> } %170, 0
  %172 = extractvalue { <2 x float>, <2 x float> } %170, 1
  %173 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %.sroa.0133.0.copyload = load i32, ptr %173, align 8
  %174 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %.sroa.0132.0.copyload = load i32, ptr %174, align 4
  %175 = getelementptr inbounds i8, ptr %.0279305, i64 36
  %.sroa.0131.0.copyload = load i32, ptr %175, align 4
  %176 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %.sroa.0130.0.copyload = load i32, ptr %176, align 8
  tail call void @nk_draw_list_fill_rect_multi_color(ptr noundef nonnull %25, <2 x float> %171, <2 x float> %172, i32 %.sroa.0133.0.copyload, i32 %.sroa.0132.0.copyload, i32 %.sroa.0131.0.copyload, i32 %.sroa.0130.0.copyload)
  br label %418

177:                                              ; preds = %34
  %178 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %179 = load i16, ptr %178, align 8, !tbaa !69
  %180 = sitofp i16 %179 to float
  %181 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %182 = load i16, ptr %181, align 2, !tbaa !71
  %183 = uitofp i16 %182 to float
  %184 = fmul float %183, 5.000000e-01
  %185 = fadd float %184, %180
  %186 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %187 = load i16, ptr %186, align 2, !tbaa !72
  %188 = sitofp i16 %187 to float
  %189 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %190 = load i16, ptr %189, align 8, !tbaa !73
  %191 = uitofp i16 %190 to float
  %192 = fmul float %191, 5.000000e-01
  %193 = fadd float %192, %188
  %194 = tail call <2 x float> @nk_vec2(float noundef %185, float noundef %193)
  %195 = load i16, ptr %181, align 2, !tbaa !71
  %196 = uitofp i16 %195 to float
  %197 = fmul float %196, 5.000000e-01
  %198 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %.sroa.0121.0.copyload = load i32, ptr %198, align 2
  %199 = load i32, ptr %32, align 4, !tbaa !74
  %200 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %201 = load i16, ptr %200, align 4, !tbaa !75
  %202 = uitofp i16 %201 to float
  tail call void @nk_draw_list_stroke_circle(ptr noundef nonnull %25, <2 x float> %194, float noundef %197, i32 %.sroa.0121.0.copyload, i32 noundef %199, float noundef %202)
  br label %418

203:                                              ; preds = %34
  %204 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %205 = load i16, ptr %204, align 8, !tbaa !76
  %206 = sitofp i16 %205 to float
  %207 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %208 = load i16, ptr %207, align 4, !tbaa !78
  %209 = uitofp i16 %208 to float
  %210 = fmul float %209, 5.000000e-01
  %211 = fadd float %210, %206
  %212 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %213 = load i16, ptr %212, align 2, !tbaa !79
  %214 = sitofp i16 %213 to float
  %215 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %216 = load i16, ptr %215, align 2, !tbaa !80
  %217 = uitofp i16 %216 to float
  %218 = fmul float %217, 5.000000e-01
  %219 = fadd float %218, %214
  %220 = tail call <2 x float> @nk_vec2(float noundef %211, float noundef %219)
  %221 = load i16, ptr %207, align 4, !tbaa !78
  %222 = uitofp i16 %221 to float
  %223 = fmul float %222, 5.000000e-01
  %224 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %.sroa.0113.0.copyload = load i32, ptr %224, align 8
  %225 = load i32, ptr %32, align 4, !tbaa !74
  tail call void @nk_draw_list_fill_circle(ptr noundef nonnull %25, <2 x float> %220, float noundef %223, i32 %.sroa.0113.0.copyload, i32 noundef %225)
  br label %418

226:                                              ; preds = %34
  %227 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %228 = load i16, ptr %227, align 8, !tbaa !81
  %229 = sitofp i16 %228 to float
  %230 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %231 = load i16, ptr %230, align 2, !tbaa !83
  %232 = sitofp i16 %231 to float
  %233 = tail call <2 x float> @nk_vec2(float noundef %229, float noundef %232)
  tail call void @nk_draw_list_path_line_to(ptr noundef nonnull %25, <2 x float> %233)
  %234 = load i16, ptr %227, align 8, !tbaa !81
  %235 = sitofp i16 %234 to float
  %236 = load i16, ptr %230, align 2, !tbaa !83
  %237 = sitofp i16 %236 to float
  %238 = tail call <2 x float> @nk_vec2(float noundef %235, float noundef %237)
  %239 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %240 = load i16, ptr %239, align 4, !tbaa !84
  %241 = uitofp i16 %240 to float
  %242 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %243 = load float, ptr %242, align 8, !tbaa !85
  %244 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %245 = load float, ptr %244, align 4, !tbaa !85
  %246 = load i32, ptr %31, align 8, !tbaa !86
  tail call void @nk_draw_list_path_arc_to(ptr noundef nonnull %25, <2 x float> %238, float noundef %241, float noundef %243, float noundef %245, i32 noundef %246)
  %247 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %.sroa.0101.0.copyload = load i32, ptr %247, align 8
  %248 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %249 = load i16, ptr %248, align 2, !tbaa !87
  %250 = uitofp i16 %249 to float
  tail call void @nk_draw_list_path_stroke(ptr noundef nonnull %25, i32 %.sroa.0101.0.copyload, i32 noundef 1, float noundef %250)
  br label %418

251:                                              ; preds = %34
  %252 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %253 = load i16, ptr %252, align 8, !tbaa !88
  %254 = sitofp i16 %253 to float
  %255 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %256 = load i16, ptr %255, align 2, !tbaa !90
  %257 = sitofp i16 %256 to float
  %258 = tail call <2 x float> @nk_vec2(float noundef %254, float noundef %257)
  tail call void @nk_draw_list_path_line_to(ptr noundef nonnull %25, <2 x float> %258)
  %259 = load i16, ptr %252, align 8, !tbaa !88
  %260 = sitofp i16 %259 to float
  %261 = load i16, ptr %255, align 2, !tbaa !90
  %262 = sitofp i16 %261 to float
  %263 = tail call <2 x float> @nk_vec2(float noundef %260, float noundef %262)
  %264 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %265 = load i16, ptr %264, align 4, !tbaa !91
  %266 = uitofp i16 %265 to float
  %267 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %268 = load float, ptr %267, align 8, !tbaa !85
  %269 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %270 = load float, ptr %269, align 4, !tbaa !85
  %271 = load i32, ptr %31, align 8, !tbaa !86
  tail call void @nk_draw_list_path_arc_to(ptr noundef nonnull %25, <2 x float> %263, float noundef %266, float noundef %268, float noundef %270, i32 noundef %271)
  %272 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %.sroa.090.0.copyload = load i32, ptr %272, align 8
  tail call void @nk_draw_list_path_fill(ptr noundef nonnull %25, i32 %.sroa.090.0.copyload)
  br label %418

273:                                              ; preds = %34
  %274 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %275 = load i16, ptr %274, align 2, !tbaa !92
  %276 = sitofp i16 %275 to float
  %277 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %278 = load i16, ptr %277, align 2, !tbaa !94
  %279 = sitofp i16 %278 to float
  %280 = tail call <2 x float> @nk_vec2(float noundef %276, float noundef %279)
  %281 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %282 = load i16, ptr %281, align 2, !tbaa !95
  %283 = sitofp i16 %282 to float
  %284 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %285 = load i16, ptr %284, align 2, !tbaa !96
  %286 = sitofp i16 %285 to float
  %287 = tail call <2 x float> @nk_vec2(float noundef %283, float noundef %286)
  %288 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %289 = load i16, ptr %288, align 2, !tbaa !97
  %290 = sitofp i16 %289 to float
  %291 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %292 = load i16, ptr %291, align 2, !tbaa !98
  %293 = sitofp i16 %292 to float
  %294 = tail call <2 x float> @nk_vec2(float noundef %290, float noundef %293)
  %295 = getelementptr inbounds i8, ptr %.0279305, i64 30
  %.sroa.078.0.copyload = load i32, ptr %295, align 2
  %296 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %297 = load i16, ptr %296, align 8, !tbaa !99
  %298 = uitofp i16 %297 to float
  tail call void @nk_draw_list_stroke_triangle(ptr noundef nonnull %25, <2 x float> %280, <2 x float> %287, <2 x float> %294, i32 %.sroa.078.0.copyload, float noundef %298)
  br label %418

299:                                              ; preds = %34
  %300 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %301 = load i16, ptr %300, align 8, !tbaa !100
  %302 = sitofp i16 %301 to float
  %303 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %304 = load i16, ptr %303, align 2, !tbaa !102
  %305 = sitofp i16 %304 to float
  %306 = tail call <2 x float> @nk_vec2(float noundef %302, float noundef %305)
  %307 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %308 = load i16, ptr %307, align 4, !tbaa !103
  %309 = sitofp i16 %308 to float
  %310 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %311 = load i16, ptr %310, align 2, !tbaa !104
  %312 = sitofp i16 %311 to float
  %313 = tail call <2 x float> @nk_vec2(float noundef %309, float noundef %312)
  %314 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %315 = load i16, ptr %314, align 8, !tbaa !105
  %316 = sitofp i16 %315 to float
  %317 = getelementptr inbounds i8, ptr %.0279305, i64 26
  %318 = load i16, ptr %317, align 2, !tbaa !106
  %319 = sitofp i16 %318 to float
  %320 = tail call <2 x float> @nk_vec2(float noundef %316, float noundef %319)
  %321 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %.sroa.067.0.copyload = load i32, ptr %321, align 4
  tail call void @nk_draw_list_fill_triangle(ptr noundef nonnull %25, <2 x float> %306, <2 x float> %313, <2 x float> %320, i32 %.sroa.067.0.copyload)
  br label %418

322:                                              ; preds = %.lr.ph302, %322
  %indvars.iv316 = phi i64 [ 0, %.lr.ph302 ], [ %indvars.iv.next317, %322 ]
  %323 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %44, i64 0, i64 %indvars.iv316
  %324 = load i16, ptr %323, align 4, !tbaa !45
  %325 = sitofp i16 %324 to float
  %326 = getelementptr inbounds i8, ptr %323, i64 2
  %327 = load i16, ptr %326, align 2, !tbaa !46
  %328 = sitofp i16 %327 to float
  %329 = tail call <2 x float> @nk_vec2(float noundef %325, float noundef %328)
  tail call void @nk_draw_list_path_line_to(ptr noundef nonnull %25, <2 x float> %329)
  %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1
  %330 = load i16, ptr %42, align 2, !tbaa !28
  %331 = zext i16 %330 to i64
  %332 = icmp ult i64 %indvars.iv.next317, %331
  br i1 %332, label %322, label %._crit_edge303, !llvm.loop !107

._crit_edge303:                                   ; preds = %322, %.preheader
  %333 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %.sroa.055.0.copyload = load i32, ptr %333, align 8
  %334 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %335 = load i16, ptr %334, align 4, !tbaa !109
  %336 = uitofp i16 %335 to float
  tail call void @nk_draw_list_path_stroke(ptr noundef nonnull %25, i32 %.sroa.055.0.copyload, i32 noundef 1, float noundef %336)
  br label %418

337:                                              ; preds = %.lr.ph299, %337
  %indvars.iv313 = phi i64 [ 0, %.lr.ph299 ], [ %indvars.iv.next314, %337 ]
  %338 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %41, i64 0, i64 %indvars.iv313
  %339 = load i16, ptr %338, align 2, !tbaa !45
  %340 = sitofp i16 %339 to float
  %341 = getelementptr inbounds i8, ptr %338, i64 2
  %342 = load i16, ptr %341, align 2, !tbaa !46
  %343 = sitofp i16 %342 to float
  %344 = tail call <2 x float> @nk_vec2(float noundef %340, float noundef %343)
  tail call void @nk_draw_list_path_line_to(ptr noundef nonnull %25, <2 x float> %344)
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %345 = load i16, ptr %39, align 4, !tbaa !26
  %346 = zext i16 %345 to i64
  %347 = icmp ult i64 %indvars.iv.next314, %346
  br i1 %347, label %337, label %._crit_edge300, !llvm.loop !110

._crit_edge300:                                   ; preds = %337, %.preheader295
  %348 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %.sroa.044.0.copyload = load i32, ptr %348, align 8
  tail call void @nk_draw_list_path_fill(ptr noundef nonnull %25, i32 %.sroa.044.0.copyload)
  br label %418

349:                                              ; preds = %.lr.ph, %349
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %349 ]
  %350 = getelementptr inbounds [1 x %struct.nk_vec2i], ptr %38, i64 0, i64 %indvars.iv
  %351 = load i16, ptr %350, align 4, !tbaa !45
  %352 = sitofp i16 %351 to float
  %353 = getelementptr inbounds i8, ptr %350, i64 2
  %354 = load i16, ptr %353, align 2, !tbaa !46
  %355 = sitofp i16 %354 to float
  %356 = tail call <2 x float> @nk_vec2(float noundef %352, float noundef %355)
  tail call void @nk_draw_list_path_line_to(ptr noundef nonnull %25, <2 x float> %356)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %357 = load i16, ptr %36, align 2, !tbaa !22
  %358 = zext i16 %357 to i64
  %359 = icmp ult i64 %indvars.iv.next, %358
  br i1 %359, label %349, label %._crit_edge, !llvm.loop !111

._crit_edge:                                      ; preds = %349, %.preheader296
  %360 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %.sroa.033.0.copyload = load i32, ptr %360, align 8
  %361 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %362 = load i16, ptr %361, align 4, !tbaa !112
  %363 = uitofp i16 %362 to float
  tail call void @nk_draw_list_path_stroke(ptr noundef nonnull %25, i32 %.sroa.033.0.copyload, i32 noundef 0, float noundef %363)
  br label %418

364:                                              ; preds = %34
  %365 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %366 = load ptr, ptr %365, align 8, !tbaa !113
  %367 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %368 = load i16, ptr %367, align 8, !tbaa !115
  %369 = sitofp i16 %368 to float
  %370 = getelementptr inbounds i8, ptr %.0279305, i64 34
  %371 = load i16, ptr %370, align 2, !tbaa !116
  %372 = sitofp i16 %371 to float
  %373 = getelementptr inbounds i8, ptr %.0279305, i64 36
  %374 = load i16, ptr %373, align 4, !tbaa !117
  %375 = uitofp i16 %374 to float
  %376 = getelementptr inbounds i8, ptr %.0279305, i64 38
  %377 = load i16, ptr %376, align 2, !tbaa !118
  %378 = uitofp i16 %377 to float
  %379 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %369, float noundef %372, float noundef %375, float noundef %378)
  %380 = extractvalue { <2 x float>, <2 x float> } %379, 0
  %381 = extractvalue { <2 x float>, <2 x float> } %379, 1
  %382 = getelementptr inbounds i8, ptr %.0279305, i64 48
  %383 = getelementptr inbounds i8, ptr %.0279305, i64 44
  %384 = load i32, ptr %383, align 4, !tbaa !119
  %385 = getelementptr inbounds i8, ptr %.0279305, i64 40
  %386 = load float, ptr %385, align 8, !tbaa !120
  %387 = getelementptr inbounds i8, ptr %.0279305, i64 28
  %.sroa.021.0.copyload = load i32, ptr %387, align 4
  tail call void @nk_draw_list_add_text(ptr noundef nonnull %25, ptr noundef %366, <2 x float> %380, <2 x float> %381, ptr noundef nonnull %382, i32 noundef %384, float noundef %386, i32 %.sroa.021.0.copyload)
  br label %418

388:                                              ; preds = %34
  %389 = getelementptr inbounds i8, ptr %.0279305, i64 24
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %389, i64 24, i1 false), !tbaa.struct !121
  %390 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %391 = load i16, ptr %390, align 8, !tbaa !124
  %392 = sitofp i16 %391 to float
  %393 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %394 = load i16, ptr %393, align 2, !tbaa !127
  %395 = sitofp i16 %394 to float
  %396 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %397 = load i16, ptr %396, align 4, !tbaa !128
  %398 = uitofp i16 %397 to float
  %399 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %400 = load i16, ptr %399, align 2, !tbaa !129
  %401 = uitofp i16 %400 to float
  %402 = tail call { <2 x float>, <2 x float> } @nk_rect(float noundef %392, float noundef %395, float noundef %398, float noundef %401)
  %403 = extractvalue { <2 x float>, <2 x float> } %402, 0
  %404 = extractvalue { <2 x float>, <2 x float> } %402, 1
  %405 = getelementptr inbounds i8, ptr %.0279305, i64 48
  %.sroa.013.0.copyload = load i32, ptr %405, align 8
  tail call void @nk_draw_list_add_image(ptr noundef nonnull %25, ptr noundef nonnull byval(%struct.nk_image) align 8 %6, <2 x float> %403, <2 x float> %404, i32 %.sroa.013.0.copyload)
  br label %418

406:                                              ; preds = %34
  %407 = getelementptr inbounds i8, ptr %.0279305, i64 32
  %408 = load ptr, ptr %407, align 8, !tbaa !130
  %409 = getelementptr inbounds i8, ptr %.0279305, i64 16
  %410 = load i16, ptr %409, align 8, !tbaa !132
  %411 = getelementptr inbounds i8, ptr %.0279305, i64 18
  %412 = load i16, ptr %411, align 2, !tbaa !133
  %413 = getelementptr inbounds i8, ptr %.0279305, i64 20
  %414 = load i16, ptr %413, align 4, !tbaa !134
  %415 = getelementptr inbounds i8, ptr %.0279305, i64 22
  %416 = load i16, ptr %415, align 2, !tbaa !135
  %417 = getelementptr inbounds i8, ptr %.0279305, i64 24
  %.sroa.0.0.copyload = load ptr, ptr %417, align 8, !tbaa !122
  tail call void %408(ptr noundef nonnull %25, i16 noundef signext %410, i16 noundef signext %412, i16 noundef zeroext %414, i16 noundef zeroext %416, ptr %.sroa.0.0.copyload)
  br label %418

418:                                              ; preds = %45, %61, %80, %114, %137, %157, %177, %203, %226, %251, %273, %299, %._crit_edge303, %._crit_edge300, %._crit_edge, %364, %388, %406, %34
  %419 = tail call ptr @nk__next(ptr noundef nonnull %0, ptr noundef nonnull %.0279305)
  %.not294 = icmp eq ptr %419, null
  br i1 %.not294, label %._crit_edge308, label %34, !llvm.loop !136

._crit_edge308:                                   ; preds = %418, %24
  %420 = getelementptr inbounds i8, ptr %1, i64 96
  %421 = load i64, ptr %420, align 8, !tbaa !137
  %422 = getelementptr inbounds i8, ptr %1, i64 88
  %423 = load i64, ptr %422, align 8, !tbaa !142
  %424 = getelementptr inbounds i8, ptr %1, i64 72
  %425 = load i64, ptr %424, align 8, !tbaa !143
  %426 = getelementptr inbounds i8, ptr %1, i64 112
  %427 = load i64, ptr %426, align 8, !tbaa !144
  %428 = add i64 %425, %423
  %429 = sub i64 %428, %427
  %430 = icmp ugt i64 %421, %429
  %431 = select i1 %430, i32 2, i32 0
  %432 = getelementptr inbounds i8, ptr %2, i64 96
  %433 = load i64, ptr %432, align 8, !tbaa !137
  %434 = getelementptr inbounds i8, ptr %2, i64 88
  %435 = load i64, ptr %434, align 8, !tbaa !142
  %436 = icmp ugt i64 %433, %435
  %437 = select i1 %436, i32 4, i32 0
  %438 = or disjoint i32 %431, %437
  %439 = getelementptr inbounds i8, ptr %3, i64 96
  %440 = load i64, ptr %439, align 8, !tbaa !137
  %441 = getelementptr inbounds i8, ptr %3, i64 88
  %442 = load i64, ptr %441, align 8, !tbaa !142
  %443 = icmp ugt i64 %440, %442
  %444 = select i1 %443, i32 8, i32 0
  %445 = or disjoint i32 %438, %444
  ret i32 %445
}

; Function Attrs: mustprogress uwtable
declare dso_local ptr @nk__begin(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @nk__next(ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 #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 = { 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 #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 = { 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, !14, i64 40}
!6 = !{!"_ZTS17nk_convert_config", !7, i64 0, !10, i64 4, !10, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !12, i64 24, !14, i64 40, !15, i64 48, !15, i64 56}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS16nk_anti_aliasing", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTS20nk_draw_null_texture", !8, i64 0, !13, i64 8}
!13 = !{!"_ZTS7nk_vec2", !7, i64 0, !7, i64 4}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"long", !8, i64 0}
!16 = !{!6, !15, i64 48}
!17 = !{!6, !10, i64 4}
!18 = !{!6, !10, i64 8}
!19 = !{!20, !21, i64 0}
!20 = !{!"_ZTS10nk_command", !21, i64 0, !15, i64 8}
!21 = !{!"_ZTS15nk_command_type", !8, i64 0}
!22 = !{!23, !25, i64 22}
!23 = !{!"_ZTS19nk_command_polyline", !20, i64 0, !24, i64 16, !25, i64 20, !25, i64 22, !8, i64 24}
!24 = !{!"_ZTS8nk_color", !8, i64 0, !8, i64 1, !8, i64 2, !8, i64 3}
!25 = !{!"short", !8, i64 0}
!26 = !{!27, !25, i64 20}
!27 = !{!"_ZTS25nk_command_polygon_filled", !20, i64 0, !24, i64 16, !25, i64 20, !8, i64 22}
!28 = !{!29, !25, i64 22}
!29 = !{!"_ZTS18nk_command_polygon", !20, i64 0, !24, i64 16, !25, i64 20, !25, i64 22, !8, i64 24}
!30 = !{!31, !25, i64 16}
!31 = !{!"_ZTS18nk_command_scissor", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22}
!32 = !{!31, !25, i64 18}
!33 = !{!31, !25, i64 20}
!34 = !{!31, !25, i64 22}
!35 = !{!36, !25, i64 18}
!36 = !{!"_ZTS15nk_command_line", !20, i64 0, !25, i64 16, !37, i64 18, !37, i64 22, !24, i64 26}
!37 = !{!"_ZTS8nk_vec2i", !25, i64 0, !25, i64 2}
!38 = !{!36, !25, i64 20}
!39 = !{!36, !25, i64 22}
!40 = !{!36, !25, i64 24}
!41 = !{!36, !25, i64 16}
!42 = !{!43, !25, i64 18}
!43 = !{!"_ZTS16nk_command_curve", !20, i64 0, !25, i64 16, !37, i64 18, !37, i64 22, !8, i64 26, !24, i64 34}
!44 = !{!43, !25, i64 20}
!45 = !{!37, !25, i64 0}
!46 = !{!37, !25, i64 2}
!47 = !{!43, !25, i64 22}
!48 = !{!43, !25, i64 24}
!49 = !{!6, !11, i64 20}
!50 = !{!43, !25, i64 16}
!51 = !{!52, !25, i64 20}
!52 = !{!"_ZTS15nk_command_rect", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !25, i64 24, !25, i64 26, !24, i64 28}
!53 = !{!52, !25, i64 22}
!54 = !{!52, !25, i64 24}
!55 = !{!52, !25, i64 26}
!56 = !{!52, !25, i64 16}
!57 = !{!52, !25, i64 18}
!58 = !{!59, !25, i64 18}
!59 = !{!"_ZTS22nk_command_rect_filled", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !25, i64 24, !24, i64 26}
!60 = !{!59, !25, i64 20}
!61 = !{!59, !25, i64 22}
!62 = !{!59, !25, i64 24}
!63 = !{!59, !25, i64 16}
!64 = !{!65, !25, i64 16}
!65 = !{!"_ZTS27nk_command_rect_multi_color", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !24, i64 24, !24, i64 28, !24, i64 32, !24, i64 36}
!66 = !{!65, !25, i64 18}
!67 = !{!65, !25, i64 20}
!68 = !{!65, !25, i64 22}
!69 = !{!70, !25, i64 16}
!70 = !{!"_ZTS17nk_command_circle", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !25, i64 24, !24, i64 26}
!71 = !{!70, !25, i64 22}
!72 = !{!70, !25, i64 18}
!73 = !{!70, !25, i64 24}
!74 = !{!6, !11, i64 12}
!75 = !{!70, !25, i64 20}
!76 = !{!77, !25, i64 16}
!77 = !{!"_ZTS24nk_command_circle_filled", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !24, i64 24}
!78 = !{!77, !25, i64 20}
!79 = !{!77, !25, i64 18}
!80 = !{!77, !25, i64 22}
!81 = !{!82, !25, i64 16}
!82 = !{!"_ZTS14nk_command_arc", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !8, i64 24, !24, i64 32}
!83 = !{!82, !25, i64 18}
!84 = !{!82, !25, i64 20}
!85 = !{!7, !7, i64 0}
!86 = !{!6, !11, i64 16}
!87 = !{!82, !25, i64 22}
!88 = !{!89, !25, i64 16}
!89 = !{!"_ZTS21nk_command_arc_filled", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !8, i64 24, !24, i64 32}
!90 = !{!89, !25, i64 18}
!91 = !{!89, !25, i64 20}
!92 = !{!93, !25, i64 18}
!93 = !{!"_ZTS19nk_command_triangle", !20, i64 0, !25, i64 16, !37, i64 18, !37, i64 22, !37, i64 26, !24, i64 30}
!94 = !{!93, !25, i64 20}
!95 = !{!93, !25, i64 22}
!96 = !{!93, !25, i64 24}
!97 = !{!93, !25, i64 26}
!98 = !{!93, !25, i64 28}
!99 = !{!93, !25, i64 16}
!100 = !{!101, !25, i64 16}
!101 = !{!"_ZTS26nk_command_triangle_filled", !20, i64 0, !37, i64 16, !37, i64 20, !37, i64 24, !24, i64 28}
!102 = !{!101, !25, i64 18}
!103 = !{!101, !25, i64 20}
!104 = !{!101, !25, i64 22}
!105 = !{!101, !25, i64 24}
!106 = !{!101, !25, i64 26}
!107 = distinct !{!107, !108}
!108 = !{!"llvm.loop.mustprogress"}
!109 = !{!29, !25, i64 20}
!110 = distinct !{!110, !108}
!111 = distinct !{!111, !108}
!112 = !{!23, !25, i64 20}
!113 = !{!114, !14, i64 16}
!114 = !{!"_ZTS15nk_command_text", !20, i64 0, !14, i64 16, !24, i64 24, !24, i64 28, !25, i64 32, !25, i64 34, !25, i64 36, !25, i64 38, !7, i64 40, !11, i64 44, !8, i64 48}
!115 = !{!114, !25, i64 32}
!116 = !{!114, !25, i64 34}
!117 = !{!114, !25, i64 36}
!118 = !{!114, !25, i64 38}
!119 = !{!114, !11, i64 44}
!120 = !{!114, !7, i64 40}
!121 = !{i64 0, i64 8, !122, i64 8, i64 2, !123, i64 10, i64 2, !123, i64 12, i64 8, !122}
!122 = !{!8, !8, i64 0}
!123 = !{!25, !25, i64 0}
!124 = !{!125, !25, i64 16}
!125 = !{!"_ZTS16nk_command_image", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !126, i64 24, !24, i64 48}
!126 = !{!"_ZTS8nk_image", !8, i64 0, !25, i64 8, !25, i64 10, !8, i64 12}
!127 = !{!125, !25, i64 18}
!128 = !{!125, !25, i64 20}
!129 = !{!125, !25, i64 22}
!130 = !{!131, !14, i64 32}
!131 = !{!"_ZTS17nk_command_custom", !20, i64 0, !25, i64 16, !25, i64 18, !25, i64 20, !25, i64 22, !8, i64 24, !14, i64 32}
!132 = !{!131, !25, i64 16}
!133 = !{!131, !25, i64 18}
!134 = !{!131, !25, i64 20}
!135 = !{!131, !25, i64 22}
!136 = distinct !{!136, !108}
!137 = !{!138, !15, i64 96}
!138 = !{!"_ZTS9nk_buffer", !8, i64 0, !139, i64 32, !140, i64 56, !141, i64 64, !7, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112}
!139 = !{!"_ZTS12nk_allocator", !8, i64 0, !14, i64 8, !14, i64 16}
!140 = !{!"_ZTS18nk_allocation_type", !8, i64 0}
!141 = !{!"_ZTS9nk_memory", !14, i64 0, !15, i64 8}
!142 = !{!138, !15, i64 88}
!143 = !{!138, !15, i64 72}
!144 = !{!138, !15, i64 112}


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