LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_set_secondary_y_tick_length
void lv_chart_set_secondary_y_tick_length(lv_obj_t * chart, uint8_t major_tick_len, uint8_t minor_tick_len)
{
    LV_ASSERT_OBJ(chart, LV_OBJX_NAME);

    lv_chart_ext_t * ext       = lv_obj_get_ext_attr(chart);
    ext->secondary_y_axis.major_tick_len = major_tick_len;
    ext->secondary_y_axis.minor_tick_len = minor_tick_len;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movb %sil, %cl
movq %rdi, -0x8(%rbp)
movb %cl, -0x9(%rbp)
movb %al, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24516
movq -0x8(%rbp), %rsi
leaq 0x43bed(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24514
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x52(%rax)
movb -0xa(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x53(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_set_x_tick_texts
void lv_chart_set_x_tick_texts(lv_obj_t * chart, const char * list_of_values, uint8_t num_tick_marks,
                               lv_chart_axis_options_t options)
{
    LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
    LV_ASSERT_NULL(list_of_values);

    lv_chart_ext_t * ext       = lv_obj_get_ext_attr(chart);
    ext->x_axis.num_tick_marks = num_tick_marks;
    ext->x_axis.list_of_values = list_of_values;
    ext->x_axis.options        = options;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24579
movq -0x8(%rbp), %rsi
leaq 0x43b8a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24577
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24598
movq -0x10(%rbp), %rsi
leaq 0x43b6b(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24596
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x41(%rax)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movb -0x12(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x40(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_set_y_tick_texts
void lv_chart_set_y_tick_texts(lv_obj_t * chart, const char * list_of_values, uint8_t num_tick_marks,
                               lv_chart_axis_options_t options)
{
    LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
    LV_ASSERT_NULL(list_of_values);

    lv_chart_ext_t * ext       = lv_obj_get_ext_attr(chart);
    ext->y_axis.num_tick_marks = num_tick_marks;
    ext->y_axis.list_of_values = list_of_values;
    ext->y_axis.options        = options;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24609
movq -0x8(%rbp), %rsi
leaq 0x43afa(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24607
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24628
movq -0x10(%rbp), %rsi
leaq 0x43adb(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24626
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x31(%rax)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movb -0x12(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x30(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_set_secondary_y_tick_texts
void lv_chart_set_secondary_y_tick_texts(lv_obj_t * chart, const char * list_of_values, uint8_t num_tick_marks,
                                        lv_chart_axis_options_t options)
{
    LV_ASSERT_OBJ(chart, LV_OBJX_NAME);
    LV_ASSERT_NULL(list_of_values);

    lv_chart_ext_t * ext       = lv_obj_get_ext_attr(chart);
    ext->secondary_y_axis.num_tick_marks = num_tick_marks;
    ext->secondary_y_axis.list_of_values = list_of_values;
    ext->secondary_y_axis.options        = options;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24699
movq -0x8(%rbp), %rsi
leaq 0x43a6a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24697
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x246b8
movq -0x10(%rbp), %rsi
leaq 0x43a4b(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x246b6
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x51(%rax)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x48(%rax)
movb -0x12(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x50(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_set_margin
void lv_chart_set_margin(lv_obj_t * chart, uint16_t margin)
{
    LV_ASSERT_OBJ(chart, LV_OBJX_NAME);

    lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
    ext->margin          = margin;
    lv_obj_refresh_ext_draw_pad(chart);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x24722
movq -0x8(%rbp), %rsi
leaq 0x439e1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x24720
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x58(%rax)
movq -0x8(%rbp), %rdi
callq 0x9dc0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_chart.c
// Function: lv_chart_create_label_iter
static lv_chart_label_iterator_t lv_chart_create_label_iter(const char * list, uint8_t iterator_dir)
{
    lv_chart_label_iterator_t iterator = {0};
    uint8_t j;

    iterator.list_start = list;

    /* count number of list items */
    for(j = 0; list[j] != '\0'; j++) {
            if(list[j] == '\n')
               iterator.items_left++;
    }

    if(iterator_dir == LV_CHART_LABEL_ITERATOR_FORWARD) {
        iterator.is_reverse_iter = 0;
        iterator.current_pos = list;
    } else {
        iterator.is_reverse_iter = 1;
        // -1 to skip '\0' at the end of the string
        iterator.current_pos = list + j - 1;
    }
    iterator.items_left++;
    return iterator;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x18(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x20(%rbp)
movq %rsi, -0x8(%rbp)
movb %al, -0x9(%rbp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x2090
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq %rax, (%rdi)
movb $0x0, -0xa(%rbp)
movq -0x8(%rbp), %rax
movzbl -0xa(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x264b2
movq -0x8(%rbp), %rax
movzbl -0xa(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x264a6
movq -0x18(%rbp), %rax
movb 0x10(%rax), %cl
addb $0x1, %cl
movb %cl, 0x10(%rax)
jmp 0x264a8
movb -0xa(%rbp), %al
addb $0x1, %al
movb %al, -0xa(%rbp)
jmp 0x26477
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jne 0x264cd
movq -0x18(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0x8(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x264eb
movq -0x18(%rbp), %rax
movb $0x1, 0x11(%rax)
movq -0x8(%rbp), %rcx
movzbl -0xa(%rbp), %edx
movslq %edx, %rdx
addq %rdx, %rcx
addq $-0x1, %rcx
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
movb 0x10(%rcx), %dl
addb $0x1, %dl
movb %dl, 0x10(%rcx)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_signal
static lv_res_t lv_canvas_signal(lv_obj_t * canvas, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(canvas, sign, param);
    if(res != LV_RES_OK) return res;
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);

    if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x62bc3(%rip), %rax     # 0x89460
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x268c1
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x268f0
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x268df
movq -0x20(%rbp), %rdi
leaq 0x41cef(%rip), %rsi     # 0x685c4
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x268f0
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x268ea
jmp 0x268ea
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_set_buffer
void lv_canvas_set_buffer(lv_obj_t * canvas, void * buf, lv_coord_t w, lv_coord_t h, lv_img_cf_t cf)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);
    LV_ASSERT_NULL(buf);

    lv_canvas_ext_t * ext = lv_obj_get_ext_attr(canvas);

    ext->dsc.header.cf = cf;
    ext->dsc.header.w  = w;
    ext->dsc.header.h  = h;
    ext->dsc.data      = buf;
    ext->dsc.data_size = (lv_img_color_format_get_px_size(cf) * w * h) / 8;

    lv_img_set_src(canvas, &ext->dsc);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %dx, -0x12(%rbp)
movw %cx, -0x14(%rbp)
movb %al, -0x15(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2693d
movq -0x8(%rbp), %rsi
leaq 0x417c6(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2693b
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2695c
movq -0x10(%rbp), %rsi
leaq 0x417a7(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2695a
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x15(%rbp), %edx
movq -0x20(%rbp), %rax
movl 0x18(%rax), %ecx
andl $0x1f, %edx
andl $-0x20, %ecx
orl %edx, %ecx
movl %ecx, 0x18(%rax)
movswl -0x12(%rbp), %edx
movq -0x20(%rbp), %rax
movl 0x18(%rax), %ecx
andl $0x7ff, %edx            # imm = 0x7FF
shll $0xa, %edx
andl $0xffe003ff, %ecx       # imm = 0xFFE003FF
orl %edx, %ecx
movl %ecx, 0x18(%rax)
movswl -0x14(%rbp), %edx
movq -0x20(%rbp), %rax
movl 0x18(%rax), %ecx
andl $0x7ff, %edx            # imm = 0x7FF
shll $0x15, %edx
andl $0x1fffff, %ecx         # imm = 0x1FFFFF
orl %edx, %ecx
movl %ecx, 0x18(%rax)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movzbl -0x15(%rbp), %edi
callq 0x62530
movzbl %al, %eax
movswl -0x12(%rbp), %ecx
imull %ecx, %eax
movswl -0x14(%rbp), %ecx
imull %ecx, %eax
movl $0x8, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x18, %rsi
callq 0x3a2c0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_set_px
void lv_canvas_set_px(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_color_t c)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);

    lv_canvas_ext_t * ext = lv_obj_get_ext_attr(canvas);

    lv_img_buf_set_px_color(&ext->dsc, x, y, c);
    lv_obj_invalidate(canvas);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edx, %eax
movw %cx, %dx
movw %si, %cx
movw %dx, -0x2(%rbp)
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26a4f
movq -0x10(%rbp), %rsi
leaq 0x416b4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26a4d
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
movw -0x12(%rbp), %cx
movw -0x14(%rbp), %ax
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x2(%rbp), %ecx
callq 0x628a0
movq -0x10(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_set_palette
void lv_canvas_set_palette(lv_obj_t * canvas, uint8_t id, lv_color_t c)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);

    lv_canvas_ext_t * ext = lv_obj_get_ext_attr(canvas);

    lv_img_buf_set_palette(&ext->dsc, id, c);
    lv_obj_invalidate(canvas);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %cx
movb %sil, %al
movw %cx, -0x2(%rbp)
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26ac8
movq -0x10(%rbp), %rsi
leaq 0x4163b(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26ac6
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
movb -0x11(%rbp), %al
movzbl %al, %esi
movzwl -0x2(%rbp), %edx
callq 0x62f60
movq -0x10(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_get_px
lv_color_t lv_canvas_get_px(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);

    lv_canvas_ext_t * ext    = lv_obj_get_ext_attr(canvas);
    const lv_style_t * style = lv_canvas_get_style(canvas, LV_CANVAS_STYLE_MAIN);

    return lv_img_buf_get_px_color(&ext->dsc, x, y, style);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26bc9
movq -0x10(%rbp), %rsi
leaq 0x4153a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26bc7
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x26c20
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
movw -0x12(%rbp), %dx
movw -0x14(%rbp), %ax
movq -0x28(%rbp), %rcx
movswl %dx, %esi
movswl %ax, %edx
callq 0x62160
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_get_style
const lv_style_t * lv_canvas_get_style(const lv_obj_t * canvas, lv_canvas_style_t type)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);

    const lv_style_t * style = NULL;

    switch(type) {
        case LV_CANVAS_STYLE_MAIN: style = lv_img_get_style(canvas, LV_IMG_STYLE_MAIN); break;
        default: style = NULL;
    }

    return style;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26c51
movq -0x8(%rbp), %rsi
leaq 0x414b2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26c4f
movq $0x0, -0x18(%rbp)
movb -0x9(%rbp), %al
testb %al, %al
jne 0x26c73
jmp 0x26c62
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x26ce0
movq %rax, -0x18(%rbp)
jmp 0x26c7b
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_fill_bg
void lv_canvas_fill_bg(lv_obj_t * canvas, lv_color_t color)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);

    lv_img_dsc_t * dsc = lv_canvas_get_img(canvas);

    uint32_t x = dsc->header.w * dsc->header.h;
    uint32_t y;
    for(y = 0; y < dsc->header.h; y++) {
        for(x = 0; x < dsc->header.w; x++) {
            lv_img_buf_set_px_color(dsc, x, y, color);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movw %ax, -0x2(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x27872
movq -0x10(%rbp), %rsi
leaq 0x40891(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x27870
movq -0x10(%rbp), %rdi
callq 0x26c90
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
shrl $0xa, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movq -0x18(%rbp), %rcx
movl (%rcx), %ecx
shrl $0x15, %ecx
imull %ecx, %eax
movl %eax, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x18(%rbp), %rcx
movl (%rcx), %ecx
shrl $0x15, %ecx
cmpl %ecx, %eax
jae 0x27904
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
movl (%rcx), %ecx
shrl $0xa, %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
cmpl %ecx, %eax
jae 0x278f7
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %eax
movw %ax, %cx
movl -0x20(%rbp), %eax
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x2(%rbp), %ecx
callq 0x628a0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x278ba
jmp 0x278f9
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x278a3
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_gauge.c
// Function: lv_gauge_signal
static lv_res_t lv_gauge_signal(lv_obj_t * gauge, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(gauge, sign, param);
    if(res != LV_RES_OK) return res;
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);

    lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
    if(sign == LV_SIGNAL_CLEANUP) {
        lv_mem_free(ext->values);
        ext->values = NULL;
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x60a63(%rip), %rax     # 0x89470
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x28a31
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x28a84
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x28a4f
movq -0x20(%rbp), %rdi
leaq 0x3fb93(%rip), %rsi     # 0x685d8
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x28a84
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x28a7e
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x44ec0
movq -0x30(%rbp), %rax
movq $0x0, 0x10(%rax)
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_gauge.c
// Function: lv_gauge_set_scale
void lv_gauge_set_scale(lv_obj_t * gauge, uint16_t angle, uint8_t line_cnt, uint8_t label_cnt)
{
    LV_ASSERT_OBJ(gauge, LV_OBJX_NAME);

    lv_lmeter_set_scale(gauge, angle, line_cnt);

    lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
    ext->label_count     = label_cnt;
    lv_obj_invalidate(gauge);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movw %si, %dx
movq %rdi, -0x8(%rbp)
movw %dx, -0xa(%rbp)
movb %cl, -0xb(%rbp)
movb %al, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x28c1c
movq -0x8(%rbp), %rsi
leaq 0x3f4e7(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x28c1a
movq -0x8(%rbp), %rdi
movw -0xa(%rbp), %cx
movzbl -0xb(%rbp), %eax
movzwl %cx, %esi
movzwl %ax, %edx
callq 0x3bfc0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0xc(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x21(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_gauge.c
// Function: lv_gauge_set_needle_count
void lv_gauge_set_needle_count(lv_obj_t * gauge, uint8_t needle_cnt, const lv_color_t colors[])
{
    LV_ASSERT_OBJ(gauge, LV_OBJX_NAME);

    lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);

    if(ext->needle_count != needle_cnt) {
        if(ext->values != NULL) {
            lv_mem_free(ext->values);
            ext->values = NULL;
        }

        ext->values = lv_mem_realloc(ext->values, needle_cnt * sizeof(int16_t));
        LV_ASSERT_MEM(ext->values);
        if(ext->values == NULL) return;

        int16_t min = lv_gauge_get_min_value(gauge);
        uint8_t n;
        for(n = ext->needle_count; n < needle_cnt; n++) {
            ext->values[n] = min;
        }

        ext->needle_count = needle_cnt;
    }

    ext->needle_colors = colors;
    lv_obj_invalidate(gauge);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x28c95
movq -0x8(%rbp), %rsi
leaq 0x3f46e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x28c93
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movzbl 0x20(%rax), %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
je 0x28d7a
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x28cda
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x44ec0
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movzbl -0x9(%rbp), %eax
movl %eax, %esi
shlq %rsi
callq 0x44f70
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x28d22
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x3f329(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x28d20
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x28d2f
jmp 0x28d8f
movq -0x8(%rbp), %rdi
callq 0x28e00
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rax
movb 0x20(%rax), %al
movb %al, -0x23(%rbp)
movzbl -0x23(%rbp), %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jge 0x28d70
movw -0x22(%rbp), %dx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movzbl -0x23(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movb -0x23(%rbp), %al
addb $0x1, %al
movb %al, -0x23(%rbp)
jmp 0x28d46
movb -0x9(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x20(%rax)
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_gauge.c
// Function: lv_gauge_set_value
void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle_id, int16_t value)
{
    LV_ASSERT_OBJ(gauge, LV_OBJX_NAME);

    lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);

    if(needle_id >= ext->needle_count) return;
    if(ext->values[needle_id] == value) return;

    int16_t min = lv_gauge_get_min_value(gauge);
    int16_t max = lv_gauge_get_max_value(gauge);

    if(value > max)
        value = max;
    else if(value < min)
        value = min;

    ext->values[needle_id] = value;

    lv_obj_invalidate(gauge);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movb %sil, %cl
movq %rdi, -0x8(%rbp)
movb %cl, -0x9(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x28e58
movq -0x8(%rbp), %rsi
leaq 0x3f2ab(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x28e56
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
movq -0x18(%rbp), %rcx
movzbl 0x20(%rcx), %ecx
cmpl %ecx, %eax
jl 0x28e77
jmp 0x28ef4
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movzbl -0x9(%rbp), %ecx
movswl (%rax,%rcx,2), %eax
movswl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x28e91
jmp 0x28ef4
movq -0x8(%rbp), %rdi
callq 0x28e00
movw %ax, -0x1a(%rbp)
movq -0x8(%rbp), %rdi
callq 0x28f00
movw %ax, -0x1c(%rbp)
movswl -0xc(%rbp), %eax
movswl -0x1c(%rbp), %ecx
cmpl %ecx, %eax
jle 0x28ec1
movw -0x1c(%rbp), %ax
movw %ax, -0xc(%rbp)
jmp 0x28ed7
movswl -0xc(%rbp), %eax
movswl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jge 0x28ed5
movw -0x1a(%rbp), %ax
movw %ax, -0xc(%rbp)
jmp 0x28ed7
movw -0xc(%rbp), %dx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movzbl -0x9(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_gauge.c
// Function: lv_gauge_get_value
int16_t lv_gauge_get_value(const lv_obj_t * gauge, uint8_t needle)
{
    LV_ASSERT_OBJ(gauge, LV_OBJX_NAME);

    lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
    int16_t min          = lv_gauge_get_min_value(gauge);

    if(needle >= ext->needle_count) return min;

    return ext->values[needle];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x28f51
movq -0x10(%rbp), %rsi
leaq 0x3f1b2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x28f4f
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x28e00
movw %ax, -0x22(%rbp)
movzbl -0x11(%rbp), %eax
movq -0x20(%rbp), %rcx
movzbl 0x20(%rcx), %ecx
cmpl %ecx, %eax
jl 0x28f85
movw -0x22(%rbp), %ax
movw %ax, -0x2(%rbp)
jmp 0x28f99
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movzbl -0x11(%rbp), %ecx
movw (%rax,%rcx,2), %ax
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_long_mode
void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);

#if LV_USE_ANIMATION
    /*Delete the old animation (if exists)*/
    lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x);
    lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y);
    lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x);
    lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y);
#endif
    ext->offset.x = 0;
    ext->offset.y = 0;

    if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP)
        ext->expand = 1;
    else
        ext->expand = 0;

    /*Restore the character under the dots*/
    if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) {
        lv_label_revert_dots(label);
    }

    ext->long_mode = long_mode;
    lv_label_refr_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2a521
movq -0x8(%rbp), %rsi
leaq 0x3dbe2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2a51f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x22489(%rip), %rsi    # 0x80b0
callq 0x44560
movq -0x8(%rbp), %rdi
leaq -0x22429(%rip), %rsi    # 0x8120
callq 0x44560
movq -0x8(%rbp), %rdi
leaq 0x1457(%rip), %rsi      # 0x2b9b0
callq 0x44560
movq -0x8(%rbp), %rdi
leaq 0x1487(%rip), %rsi      # 0x2b9f0
callq 0x44560
movq -0x18(%rbp), %rax
movw $0x0, 0x12(%rax)
movq -0x18(%rbp), %rax
movw $0x0, 0x14(%rax)
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x2a59d
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
je 0x2a59d
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
jne 0x2a5b5
movq -0x18(%rbp), %rax
movw 0x18(%rax), %cx
andw $0xff7f, %cx            # imm = 0xFF7F
orw $0x80, %cx
movw %cx, 0x18(%rax)
jmp 0x2a5ca
movq -0x18(%rbp), %rax
movw 0x18(%rax), %cx
andw $0xff7f, %cx            # imm = 0xFF7F
orw $0x0, %cx
movw %cx, 0x18(%rax)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
andw $0x7, %ax
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x2a5f6
movq -0x18(%rbp), %rax
movzwl 0x10(%rax), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x2a5f6
movq -0x8(%rbp), %rdi
callq 0x2ba30
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x18(%rax), %cx
andw $0x7, %dx
andw $-0x8, %cx
orw %dx, %cx
movw %cx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_recolor
void lv_label_set_recolor(lv_obj_t * label, bool en)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->recolor == en) return;

    ext->recolor = en == false ? 0 : 1;

    lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to
                                  be hided or revealed*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2a8a3
movq -0x8(%rbp), %rsi
leaq 0x3d860(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2a8a1
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x6, %ax
andw $0x1, %ax
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x2a8d2
jmp 0x2a913
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x18(%rax), %cx
andw $0x1, %dx
shlw $0x6, %dx
andw $-0x41, %cx
orw %dx, %cx
movw %cx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_body_draw
void lv_label_set_body_draw(lv_obj_t * label, bool en)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->body_draw == en) return;

    ext->body_draw = en == false ? 0 : 1;

    lv_obj_refresh_ext_draw_pad(label);

    lv_obj_invalidate(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2a9c3
movq -0x8(%rbp), %rsi
leaq 0x3d740(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2a9c1
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x8, %ax
andw $0x1, %ax
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x2a9f2
jmp 0x2aa3d
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x18(%rax), %cx
andw $0x1, %dx
shlw $0x8, %dx
andw $0xfeff, %cx            # imm = 0xFEFF
orw %dx, %cx
movw %cx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x9dc0
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_align
void lv_label_set_align(lv_obj_t * label, lv_label_align_t align)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->align == align) return;

    ext->align = align;

    lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related
                                 (lv_refr_label_text() not required)*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2aaf1
movq -0x8(%rbp), %rsi
leaq 0x3d612(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2aaef
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x4, %ax
andw $0x3, %ax
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x2ab1b
jmp 0x2ab48
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x18(%rax), %cx
andw $0x3, %dx
shlw $0x4, %dx
andw $-0x31, %cx
orw %dx, %cx
movw %cx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_get_align
lv_label_align_t lv_label_get_align(const lv_obj_t * label)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);

    lv_label_align_t align = ext->align;

    if(align == LV_LABEL_ALIGN_AUTO) {
#if LV_USE_BIDI
        lv_bidi_dir_t base_dir = lv_obj_get_base_dir(label);
        if(base_dir == LV_BIDI_DIR_AUTO) base_dir = lv_bidi_detect_base_dir(ext->text);

        if(base_dir == LV_BIDI_DIR_LTR) align = LV_LABEL_ALIGN_LEFT;
        else if (base_dir == LV_BIDI_DIR_RTL) align = LV_LABEL_ALIGN_RIGHT;
#else
        align = LV_LABEL_ALIGN_LEFT;
#endif
    }

    return align;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2ab7b
movq -0x8(%rbp), %rsi
leaq 0x3d588(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ab79
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x4, %ax
andw $0x3, %ax
movb %al, -0x11(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x3, %eax
jne 0x2aba8
movb $0x0, -0x11(%rbp)
movb -0x11(%rbp), %al
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_static_text
void lv_label_set_static_text(lv_obj_t * label, const char * text)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);
    LV_ASSERT_STR(text);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->static_txt == 0 && ext->text != NULL) {
        lv_mem_free(ext->text);
        ext->text = NULL;
    }

    if(text != NULL) {
        ext->static_txt = 1;
        ext->text       = (char *)text;
    }

    lv_label_refr_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2ac3f
movq -0x8(%rbp), %rsi
leaq 0x3d4c4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ac3d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2ac5e
movq -0x10(%rbp), %rsi
leaq 0x3d4a5(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ac5c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x3, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2aca4
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2aca4
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0x44ec0
movq -0x18(%rbp), %rax
movq $0x0, (%rax)
cmpq $0x0, -0x10(%rbp)
je 0x2acca
movq -0x18(%rbp), %rax
movw 0x18(%rax), %cx
andw $-0x9, %cx
orw $0x8, %cx
movw %cx, 0x18(%rax)
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_dot_tmp
static bool lv_label_set_dot_tmp(lv_obj_t * label, char * data, uint16_t len)
{
    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    lv_label_dot_tmp_free(label); /* Deallocate any existing space */
    if(len > sizeof(char *)) {
        /* Memory needs to be allocated. Allocates an additional byte
         * for a NULL-terminator so it can be copied. */
        ext->dot.tmp_ptr = lv_mem_alloc(len + 1);
        if(ext->dot.tmp_ptr == NULL) {
            LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr");
            return false;
        }
        memcpy(ext->dot.tmp_ptr, data, len);
        ext->dot.tmp_ptr[len] = '\0';
        ext->dot_tmp_alloc    = true;
    } else {
        /* Characters can be directly stored in object */
        ext->dot_tmp_alloc = false;
        memcpy(ext->dot.tmp, data, len);
    }
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2ca70
movzwl -0x1a(%rbp), %eax
cmpq $0x8, %rax
jbe 0x2ad81
movzwl -0x1a(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x44d20
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x2ad42
movb $0x0, -0x1(%rbp)
jmp 0x2adb1
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
movzwl -0x1a(%rbp), %eax
movl %eax, %edx
callq 0x20e0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movzwl -0x1a(%rbp), %ecx
movb $0x0, (%rax,%rcx)
movq -0x28(%rbp), %rax
movw 0x18(%rax), %cx
andw $0xfdff, %cx            # imm = 0xFDFF
orw $0x200, %cx             # imm = 0x200
movw %cx, 0x18(%rax)
jmp 0x2adad
movq -0x28(%rbp), %rax
movw 0x18(%rax), %cx
andw $0xfdff, %cx            # imm = 0xFDFF
orw $0x0, %cx
movw %cx, 0x18(%rax)
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
movzwl -0x1a(%rbp), %eax
movl %eax, %edx
callq 0x20e0
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_array_text
void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_obj_invalidate(label);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);

    /*If trying to set its own text or the array is NULL then refresh */
    if(array == ext->text || array == NULL) {
        lv_label_refr_text(label);
        return;
    }

    /*Allocate space for the new text*/
    if(ext->text != NULL && ext->static_txt == 0) {
        lv_mem_free(ext->text);
        ext->text = NULL;
    }
    ext->text = lv_mem_alloc(size + 1);
    LV_ASSERT_MEM(ext->text);
    if(ext->text == NULL) return;

    memcpy(ext->text, array, size);
    ext->text[size] = '\0';
    ext->static_txt = 0; /*Now the text is dynamically allocated*/

    lv_label_refr_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2b8a6
movq -0x8(%rbp), %rsi
leaq 0x3c85d(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2b8a4
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq (%rcx), %rax
je 0x2b8d0
cmpq $0x0, -0x10(%rbp)
jne 0x2b8de
movq -0x8(%rbp), %rdi
callq 0x2adc0
jmp 0x2b9a3
movq -0x20(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2b917
movq -0x20(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x3, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2b917
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x44ec0
movq -0x20(%rbp), %rax
movq $0x0, (%rax)
movzwl -0x12(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x44d20
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2b955
movq -0x20(%rbp), %rax
movq (%rax), %rsi
leaq 0x3c6f6(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x2b953
movq -0x20(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2b961
jmp 0x2b9a3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movzwl -0x12(%rbp), %eax
movl %eax, %edx
callq 0x20e0
movq -0x20(%rbp), %rax
movq (%rax), %rax
movzwl -0x12(%rbp), %ecx
movb $0x0, (%rax,%rcx)
movq -0x20(%rbp), %rax
movw 0x18(%rax), %cx
andw $-0x9, %cx
orw $0x0, %cx
movw %cx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_revert_dots
static void lv_label_revert_dots(lv_obj_t * label)
{
    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->long_mode != LV_LABEL_LONG_DOT) return;
    if(ext->dot_end == LV_LABEL_DOT_END_INV) return;
    uint32_t letter_i = ext->dot_end - LV_LABEL_DOT_NUM;
    uint32_t byte_i   = lv_txt_encoded_get_byte_id(ext->text, letter_i);

    /*Restore the characters*/
    uint8_t i      = 0;
    char * dot_tmp = lv_label_get_dot_tmp(label);
    while(ext->text[byte_i + i] != '\0') {
        ext->text[byte_i + i] = dot_tmp[i];
        i++;
    }
    ext->text[byte_i + i] = dot_tmp[i];
    lv_label_dot_tmp_free(label);

    ext->dot_end = LV_LABEL_DOT_END_INV;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movw 0x18(%rax), %ax
andw $0x7, %ax
movzbl %al, %eax
cmpl $0x2, %eax
je 0x2ba62
jmp 0x2bb26
movq -0x10(%rbp), %rax
movzwl 0x10(%rax), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x2ba76
jmp 0x2bb26
movq -0x10(%rbp), %rax
movzwl 0x10(%rax), %eax
subl $0x3, %eax
movl %eax, -0x14(%rbp)
leaq 0x50c45(%rip), %rax     # 0x7c6d0
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
movl -0x14(%rbp), %esi
callq *%rax
movl %eax, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2cb50
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl -0x18(%rbp), %ecx
movzbl -0x19(%rbp), %edx
addl %edx, %ecx
movl %ecx, %ecx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x2baf3
movq -0x28(%rbp), %rax
movzbl -0x19(%rbp), %ecx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl -0x18(%rbp), %ecx
movzbl -0x19(%rbp), %esi
addl %esi, %ecx
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movb -0x19(%rbp), %al
addb $0x1, %al
movb %al, -0x19(%rbp)
jmp 0x2baae
movq -0x28(%rbp), %rax
movzbl -0x19(%rbp), %ecx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl -0x18(%rbp), %ecx
movzbl -0x19(%rbp), %esi
addl %esi, %ecx
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rdi
callq 0x2ca70
movq -0x10(%rbp), %rax
movw $0xffff, 0x10(%rax)     # imm = 0xFFFF
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_set_anim_speed
void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

#if LV_USE_ANIMATION
    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->anim_speed == anim_speed) return;

    ext->anim_speed = anim_speed;

    if(ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) {
        lv_label_refr_text(label);
    }
#else
    (void)label;      /*Unused*/
    (void)anim_speed; /*Unused*/
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2bb62
movq -0x8(%rbp), %rsi
leaq 0x3c5a1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2bb60
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x16(%rax), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x2bb81
jmp 0x2bbbe
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x16(%rax)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
andw $0x7, %ax
movzbl %al, %eax
cmpl $0x3, %eax
je 0x2bbb5
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
andw $0x7, %ax
movzbl %al, %eax
cmpl $0x4, %eax
jne 0x2bbbe
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_ins_text
void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);
    LV_ASSERT_STR(txt);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);

    /*Can not append to static text*/
    if(ext->static_txt != 0) return;

    lv_obj_invalidate(label);

    /*Allocate space for the new text*/
    size_t old_len = strlen(ext->text);
    size_t ins_len = strlen(txt);
    size_t new_len = ins_len + old_len;
    ext->text        = lv_mem_realloc(ext->text, new_len + 1);
    LV_ASSERT_MEM(ext->text);
    if(ext->text == NULL) return;

    if(pos == LV_LABEL_POS_LAST) {
        pos = lv_txt_get_encoded_length(ext->text);
    }

    lv_txt_ins(ext->text, pos, txt);
    lv_label_refr_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2c8d2
movq -0x8(%rbp), %rsi
leaq 0x3b831(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2c8d0
movq -0x18(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2c8f1
movq -0x18(%rbp), %rsi
leaq 0x3b812(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2c8ef
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x3, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2c91b
jmp 0x2c9d7
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x2060
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x2060
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x38(%rbp), %rsi
addq $0x1, %rsi
callq 0x44f70
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2c990
movq -0x20(%rbp), %rax
movq (%rax), %rsi
leaq 0x3b6bb(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x2c98e
movq -0x20(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2c99c
jmp 0x2c9d7
cmpl $0xffff, -0xc(%rbp)     # imm = 0xFFFF
jne 0x2c9bb
leaq 0x4fd34(%rip), %rax     # 0x7c6e0
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
movl %eax, -0xc(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl -0xc(%rbp), %esi
movq -0x18(%rbp), %rdx
callq 0x47080
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_cut_text
void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt)
{
    LV_ASSERT_OBJ(label, LV_OBJX_NAME);

    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);

    /*Can not append to static text*/
    if(ext->static_txt != 0) return;

    lv_obj_invalidate(label);

    char * label_txt = lv_label_get_text(label);
    /*Delete the characters*/
    lv_txt_cut(label_txt, pos, cnt);

    /*Refresh the label*/
    lv_label_refr_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2ca11
movq -0x8(%rbp), %rsi
leaq 0x3b6f2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ca0f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x3, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2ca38
jmp 0x2ca66
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
callq 0x2abc0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
callq 0x47130
movq -0x8(%rbp), %rdi
callq 0x2adc0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_dot_tmp_free
static void lv_label_dot_tmp_free(lv_obj_t * label)
{
    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) {
        lv_mem_free(ext->dot.tmp_ptr);
    }
    ext->dot_tmp_alloc = false;
    ext->dot.tmp_ptr   = NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x9, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2cab9
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2cab9
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x44ec0
movq -0x10(%rbp), %rax
movw 0x18(%rax), %cx
andw $0xfdff, %cx            # imm = 0xFDFF
orw $0x0, %cx
movw %cx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x8(%rax)
addq $0x10, %rsp
popq %rbp
retq