LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_scrl_signal
static lv_res_t lv_ddlist_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_scrl_signal(scrl, sign, param);
    if(res != LV_RES_OK) return res;

    lv_obj_t * ddlist = lv_obj_get_parent(scrl);

    if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
        /*TODO review this*/
        /* Because of the wider selected rectangle ext. size
         * In this way by dragging the scrollable part the wider rectangle area can be redrawn too*/
        const lv_style_t * style = lv_ddlist_get_style(ddlist, LV_DDLIST_STYLE_BG);
        lv_coord_t hpad          = LV_MATH_MAX(style->body.padding.left, style->body.padding.right);
        if(scrl->ext_draw_pad < hpad) scrl->ext_draw_pad = hpad;
    } else if(sign == LV_SIGNAL_RELEASED) {
        if(lv_indev_is_dragging(lv_indev_get_act()) == false) {
            release_handler(ddlist);
        }
    } else if(sign == LV_SIGNAL_CLEANUP) {
        lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
        ext->label            = NULL; /*The label is already deleted*/
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x75ebb(%rip), %rax     # 0x893a8
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 0x13514
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x135e1
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x30(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0x1358a
movq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0x13e80
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movswl 0x1a(%rax), %eax
movq -0x38(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
cmpl %ecx, %eax
jle 0x1355a
movq -0x38(%rbp), %rax
movswl 0x1a(%rax), %eax
movl %eax, -0x4c(%rbp)
jmp 0x13565
movq -0x38(%rbp), %rax
movswl 0x1c(%rax), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movw %ax, -0x3a(%rbp)
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movswl -0x3a(%rbp), %ecx
cmpl %ecx, %eax
jge 0x13588
movw -0x3a(%rbp), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0x135db
movzbl -0x11(%rbp), %eax
cmpl $0xb, %eax
jne 0x135b5
callq 0x4b70
movq %rax, %rdi
callq 0x4dc0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x135b3
movq -0x30(%rbp), %rdi
callq 0x14c60
jmp 0x135d9
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x135d7
movq -0x30(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq $0x0, 0x50(%rax)
jmp 0x135d9
jmp 0x135db
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_options
void lv_ddlist_set_options(lv_obj_t * ddlist, const char * options)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);
    LV_ASSERT_STR(options);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    /*Count the '\n'-s to determine the number of options*/
    ext->option_cnt = 0;
    uint16_t i;
    for(i = 0; options[i] != '\0'; i++) {
        if(options[i] == '\n') ext->option_cnt++;
    }
    ext->option_cnt++; /*Last option has no `\n`*/
    ext->sel_opt_id     = 0;
    ext->sel_opt_id_ori = 0;

    lv_label_set_text(ext->label, options);

    lv_ddlist_refr_width(ddlist);

    lv_label_align_t align = lv_label_get_align(ext->label);
    switch(align) {
        case LV_LABEL_ALIGN_LEFT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_LEFT_MID, 0, 0); break;
        case LV_LABEL_ALIGN_CENTER: lv_obj_align(ext->label, NULL, LV_ALIGN_CENTER, 0, 0); break;
        case LV_LABEL_ALIGN_RIGHT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0); break;
    }

    lv_ddlist_refr_size(ddlist, false);
}

// 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 0x13c5f
movq -0x8(%rbp), %rsi
leaq 0x544a4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x13c5d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x13c7e
movq -0x10(%rbp), %rsi
leaq 0x54485(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x13c7c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw $0x0, 0x60(%rax)
movw $0x0, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x13cdd
movq -0x10(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x13ccd
movq -0x18(%rbp), %rax
movw 0x60(%rax), %cx
addw $0x1, %cx
movw %cx, 0x60(%rax)
jmp 0x13ccf
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x13c9b
movq -0x18(%rbp), %rax
movw 0x60(%rax), %cx
incw %cx
movw %cx, 0x60(%rax)
movq -0x18(%rbp), %rax
movw $0x0, 0x62(%rax)
movq -0x18(%rbp), %rax
movw $0x0, 0x64(%rax)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2a630
movq -0x8(%rbp), %rdi
callq 0x13f30
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
movb %al, -0x1b(%rbp)
movzbl -0x1b(%rbp), %eax
movl %eax, -0x20(%rbp)
testl %eax, %eax
je 0x13d4b
jmp 0x13d37
movl -0x20(%rbp), %eax
subl $0x1, %eax
je 0x13d69
jmp 0x13d41
movl -0x20(%rbp), %eax
subl $0x2, %eax
je 0x13d85
jmp 0x13da1
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x7, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
jmp 0x13da1
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %r8d, %r8d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x8500
jmp 0x13da1
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x8, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x140b0
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_ddlist.c
// Function: lv_ddlist_set_style
void lv_ddlist_set_style(lv_obj_t * ddlist, lv_ddlist_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    switch(type) {
        case LV_DDLIST_STYLE_BG:
            lv_page_set_style(ddlist, LV_PAGE_STYLE_BG, style);
            lv_ddlist_refr_width(ddlist);
            break;
        case LV_DDLIST_STYLE_SB: lv_page_set_style(ddlist, LV_PAGE_STYLE_SB, style); break;
        case LV_DDLIST_STYLE_SEL:
            ext->sel_style  = style;
            lv_obj_t * scrl = lv_page_get_scrl(ddlist);
            lv_obj_refresh_ext_draw_pad(scrl); /*Because of the wider selected rectangle*/
            break;
    }
}

// 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 0x13df5
movq -0x8(%rbp), %rsi
leaq 0x5430e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x13df3
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movl %eax, -0x2c(%rbp)
testl %eax, %eax
je 0x13e23
jmp 0x13e0f
movl -0x2c(%rbp), %eax
subl $0x1, %eax
je 0x13e51
jmp 0x13e19
movl -0x2c(%rbp), %eax
subl $0x2, %eax
je 0x13e3d
jmp 0x13e73
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x3dff0
movq -0x8(%rbp), %rdi
callq 0x13f30
jmp 0x13e73
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x3dff0
jmp 0x13e73
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x9dc0
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_get_style
const lv_style_t * lv_ddlist_get_style(const lv_obj_t * ddlist, lv_ddlist_style_t type)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    switch(type) {
        case LV_DDLIST_STYLE_BG: return lv_page_get_style(ddlist, LV_PAGE_STYLE_BG);
        case LV_DDLIST_STYLE_SB: return lv_page_get_style(ddlist, LV_PAGE_STYLE_SB);
        case LV_DDLIST_STYLE_SEL: return ext->sel_style;
        default: return NULL;
    }

    /*To avoid warning*/
    return NULL;
}

// 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 0x13eb1
movq -0x10(%rbp), %rsi
leaq 0x54252(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x13eaf
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x11(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x13edf
jmp 0x13ecb
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x13f04
jmp 0x13ed5
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x13ef0
jmp 0x13f12
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x3e100
movq %rax, -0x8(%rbp)
jmp 0x13f1a
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x3e100
movq %rax, -0x8(%rbp)
jmp 0x13f1a
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x13f1a
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
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_ddlist.c
// Function: lv_ddlist_set_selected
void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    if(ext->sel_opt_id == sel_opt) return;

    ext->sel_opt_id     = sel_opt < ext->option_cnt ? sel_opt : ext->option_cnt - 1;
    ext->sel_opt_id_ori = ext->sel_opt_id;
    /*Move the list to show the current option*/
    if(ext->opened == 0) {
        lv_ddlist_pos_current_option(ddlist);
    } else {
        lv_obj_invalidate(ddlist);
    }
}

// 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 0x142c2
movq -0x8(%rbp), %rsi
leaq 0x53e41(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x142c0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x62(%rax), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x142e1
jmp 0x1434b
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x60(%rcx), %ecx
cmpl %ecx, %eax
jge 0x142fa
movzwl -0xa(%rbp), %eax
movl %eax, -0x1c(%rbp)
jmp 0x14308
movq -0x18(%rbp), %rax
movzwl 0x60(%rax), %eax
subl $0x1, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x62(%rax)
movq -0x18(%rbp), %rax
movw 0x62(%rax), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x64(%rax)
movq -0x18(%rbp), %rax
movb 0x66(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x14342
movq -0x8(%rbp), %rdi
callq 0x14360
jmp 0x1434b
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_ddlist.c
// Function: lv_ddlist_pos_current_option
static void lv_ddlist_pos_current_option(lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext          = lv_obj_get_ext_attr(ddlist);
    const lv_style_t * style       = lv_obj_get_style(ddlist);
    const lv_font_t * font         = style->text.font;
    lv_coord_t font_h              = lv_font_get_line_height(font);
    const lv_style_t * label_style = lv_obj_get_style(ext->label);
    lv_obj_t * scrl                = lv_page_get_scrl(ddlist);

    lv_coord_t h = lv_obj_get_height(ddlist);
    lv_coord_t line_y1 =
        ext->sel_opt_id * (font_h + label_style->text.line_space) + ext->label->coords.y1 - scrl->coords.y1;

    lv_obj_set_y(scrl, -line_y1 + (h - font_h) / 2);
    lv_obj_invalidate(ddlist);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x14bc0
movzbl %al, %eax
movw %ax, -0x22(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8350
movw %ax, -0x3a(%rbp)
movq -0x10(%rbp), %rax
movzwl 0x62(%rax), %eax
movswl -0x22(%rbp), %ecx
movq -0x30(%rbp), %rdx
movswl 0x32(%rdx), %edx
addl %edx, %ecx
imull %ecx, %eax
movq -0x10(%rbp), %rcx
movq 0x50(%rcx), %rcx
movswl 0x22(%rcx), %ecx
addl %ecx, %eax
movq -0x38(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x3c(%rbp)
movq -0x38(%rbp), %rdi
movswl -0x3c(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movswl -0x3a(%rbp), %eax
movswl -0x22(%rbp), %ecx
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x40(%rbp), %eax
addl %ecx, %eax
movswl %ax, %esi
callq 0x8120
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_fix_height
void lv_ddlist_set_fix_height(lv_obj_t * ddlist, lv_coord_t h)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    if(ext->fix_height == h) return;

    ext->fix_height = h;

    lv_ddlist_refr_size(ddlist, false);
}

// 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 0x14482
movq -0x8(%rbp), %rsi
leaq 0x53c81(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x14480
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x68(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x144a1
jmp 0x144b8
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x68(%rax)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x140b0
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_fix_width
void lv_ddlist_set_fix_width(lv_obj_t * ddlist, lv_coord_t w)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    if(w == 0) {
        lv_cont_set_fit2(ddlist, LV_FIT_TIGHT, lv_cont_get_fit_bottom(ddlist));
    } else {
        lv_cont_set_fit2(ddlist, LV_FIT_NONE, lv_cont_get_fit_bottom(ddlist));
        lv_obj_set_width(ddlist, w);
    }

    switch(lv_label_get_align(ext->label)) {
        case LV_LABEL_ALIGN_LEFT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_LEFT_MID, 0, 0); break;
        case LV_LABEL_ALIGN_CENTER: lv_obj_align(ext->label, NULL, LV_ALIGN_CENTER, 0, 0); break;
        case LV_LABEL_ALIGN_RIGHT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0); break;
    }

    lv_ddlist_refr_size(ddlist, false);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x144f2
movq -0x8(%rbp), %rsi
leaq 0x53c11(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x144f0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movswl -0xa(%rbp), %eax
cmpl $0x0, %eax
jne 0x1452c
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x388f0
movq -0x20(%rbp), %rdi
movl $0x1, %esi
movzbl %al, %edx
callq 0x13bf0
jmp 0x14558
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x388f0
movq -0x28(%rbp), %rdi
xorl %esi, %esi
movzbl %al, %edx
callq 0x13bf0
movq -0x8(%rbp), %rdi
movswl -0xa(%rbp), %esi
callq 0x8430
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
movzbl %al, %ecx
movl %ecx, -0x2c(%rbp)
testb %al, %al
je 0x14585
jmp 0x14571
movl -0x2c(%rbp), %eax
subl $0x1, %eax
je 0x145a3
jmp 0x1457b
movl -0x2c(%rbp), %eax
subl $0x2, %eax
je 0x145bf
jmp 0x145db
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x7, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
jmp 0x145db
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %r8d, %r8d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x8500
jmp 0x145db
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x8, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x140b0
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_align
void lv_ddlist_set_align(lv_obj_t * ddlist, lv_label_align_t align)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    lv_label_set_align(ext->label, align);
    switch(align) {
        case LV_LABEL_ALIGN_LEFT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_LEFT_MID, 0, 0); break;
        case LV_LABEL_ALIGN_CENTER: lv_obj_align(ext->label, NULL, LV_ALIGN_CENTER, 0, 0); break;
        case LV_LABEL_ALIGN_RIGHT: lv_obj_align(ext->label, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0); break;
    }
}

// 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 0x14701
movq -0x8(%rbp), %rsi
leaq 0x53a02(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x146ff
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movzbl -0x9(%rbp), %eax
movl %eax, -0x1c(%rbp)
testl %eax, %eax
je 0x14740
jmp 0x1472c
movl -0x1c(%rbp), %eax
subl $0x1, %eax
je 0x1475e
jmp 0x14736
movl -0x1c(%rbp), %eax
subl $0x2, %eax
je 0x1477a
jmp 0x14796
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x7, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
jmp 0x14796
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %r8d, %r8d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x8500
jmp 0x14796
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x8, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_get_selected_str
void lv_ddlist_get_selected_str(const lv_obj_t * ddlist, char * buf, uint16_t buf_size)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    uint16_t i;
    uint16_t line        = 0;
    const char * opt_txt = lv_label_get_text(ext->label);
    size_t txt_len     = strlen(opt_txt);

    for(i = 0; i < txt_len && line != ext->sel_opt_id; i++) {
        if(opt_txt[i] == '\n') line++;
    }

    uint16_t c;
    for(c = 0; opt_txt[i] != '\n' && i < txt_len; c++, i++) {
        if(buf_size && c >= buf_size - 1) {
            LV_LOG_WARN("lv_ddlist_get_selected_str: the buffer was too small")
            break;
        }
        buf[c] = opt_txt[i];
    }

    buf[c] = '\0';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %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 0x14876
movq -0x8(%rbp), %rsi
leaq 0x5388d(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x14874
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movw $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2abc0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2060
movq %rax, -0x38(%rbp)
movw $0x0, -0x22(%rbp)
movzwl -0x22(%rbp), %eax
movl %eax, %ecx
xorl %eax, %eax
cmpq -0x38(%rbp), %rcx
movb %al, -0x3b(%rbp)
jae 0x148d2
movzwl -0x24(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x62(%rcx), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x3b(%rbp)
movb -0x3b(%rbp), %al
testb $0x1, %al
jne 0x148db
jmp 0x14908
movq -0x30(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x148f8
movw -0x24(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x24(%rbp)
jmp 0x148fa
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x148ad
movw $0x0, -0x3a(%rbp)
movq -0x30(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, -0x3c(%rbp)
je 0x14932
movzwl -0x22(%rbp), %eax
cmpq -0x38(%rbp), %rax
setb %al
movb %al, -0x3c(%rbp)
movb -0x3c(%rbp), %al
testb $0x1, %al
jne 0x1493b
jmp 0x14985
movzwl -0x12(%rbp), %eax
cmpl $0x0, %eax
je 0x14955
movzwl -0x3a(%rbp), %eax
movzwl -0x12(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jl 0x14955
jmp 0x14985
movq -0x30(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movb (%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movzwl -0x3a(%rbp), %ecx
movb %dl, (%rax,%rcx)
movw -0x3a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x3a(%rbp)
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x1490e
movq -0x10(%rbp), %rax
movzwl -0x3a(%rbp), %ecx
movb $0x0, (%rax,%rcx)
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_open
void lv_ddlist_open(lv_obj_t * ddlist, lv_anim_enable_t anim)
{
#if LV_USE_ANIMATION == 0
    anim = false;
#endif
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    ext->opened           = 1;
    lv_obj_set_drag(lv_page_get_scrl(ddlist), true);
    lv_ddlist_refr_size(ddlist, anim);
}

// 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 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x66(%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, 0x66(%rax)
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, %rdi
movl $0x1, %esi
callq 0x95a0
movq -0x8(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x140b0
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_ddlist.c
// Function: lv_ddlist_close
void lv_ddlist_close(lv_obj_t * ddlist, lv_anim_enable_t anim)
{
#if LV_USE_ANIMATION == 0
    anim = false;
#endif
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    ext->opened           = 0;
    lv_obj_set_drag(lv_page_get_scrl(ddlist), false);
    lv_ddlist_refr_size(ddlist, anim);
}

// 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 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x66(%rax), %cl
andb $-0x2, %cl
orb $0x0, %cl
movb %cl, 0x66(%rax)
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, %rdi
xorl %esi, %esi
callq 0x95a0
movq -0x8(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x140b0
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_ddlist.c
// Function: lv_ddlist_get_txt_flag
static lv_txt_flag_t lv_ddlist_get_txt_flag(const lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    /*The label might be already deleted so just return with some value*/
    if(!ext->label) return LV_TXT_FLAG_CENTER;

    lv_label_align_t align = lv_label_get_align(ext->label);

    switch(align) {
        default:
        case LV_LABEL_ALIGN_LEFT: return LV_TXT_FLAG_NONE;
        case LV_LABEL_ALIGN_CENTER: return LV_TXT_FLAG_CENTER;
        case LV_LABEL_ALIGN_RIGHT: return LV_TXT_FLAG_RIGHT;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x50(%rax)
jne 0x14c0a
movb $0x4, -0x1(%rbp)
jmp 0x14c4d
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
movl %eax, -0x20(%rbp)
testl %eax, %eax
je 0x14c3d
jmp 0x14c27
movl -0x20(%rbp), %eax
subl $0x1, %eax
je 0x14c43
jmp 0x14c31
movl -0x20(%rbp), %eax
subl $0x2, %eax
je 0x14c49
jmp 0x14c3b
jmp 0x14c3d
movb $0x0, -0x1(%rbp)
jmp 0x14c4d
movb $0x4, -0x1(%rbp)
jmp 0x14c4d
movb $0x8, -0x1(%rbp)
movb -0x1(%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_ddlist.c
// Function: lv_ddlist_anim_finish
static void lv_ddlist_anim_finish(lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    lv_ddlist_pos_current_option(ddlist);
    ext->force_sel = 0; /*Turn off drawing of selection*/
    if(ext->opened) lv_page_set_sb_mode(ddlist, LV_SB_MODE_UNHIDE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x14360
movq -0x10(%rbp), %rax
movb 0x66(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x66(%rax)
movq -0x10(%rbp), %rax
movb 0x66(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x14f3d
movq -0x8(%rbp), %rdi
movl $0x5, %esi
callq 0x3dec0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_signal
static lv_res_t lv_kb_signal(lv_obj_t * kb, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(kb, 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')*/
    } else if(sign == LV_SIGNAL_FOCUS) {
        lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
        /*Show the cursor of the new Text area if cursor management is enabled*/
        if(ext->ta && ext->cursor_mng) {
            lv_cursor_type_t cur_type = lv_ta_get_cursor_type(ext->ta);
            lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN));
        }
    } else if(sign == LV_SIGNAL_DEFOCUS) {
        lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
        /*Show the cursor of the new Text area if cursor management is enabled*/
        if(ext->ta && ext->cursor_mng) {
            lv_cursor_type_t cur_type = lv_ta_get_cursor_type(ext->ta);
            lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN);
        }
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x7411b(%rip), %rax     # 0x893b8
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 0x152c4
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x153b3
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x152e5
movq -0x20(%rbp), %rdi
leaq 0x530d9(%rip), %rsi     # 0x683b1
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x153b3
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x152f3
jmp 0x153ad
movzbl -0x11(%rbp), %eax
cmpl $0x10, %eax
jne 0x1534e
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x1534c
movq -0x30(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x1534c
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34100
movb %al, -0x31(%rbp)
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x31(%rbp), %eax
andl $-0x9, %eax
movzbl %al, %esi
callq 0x339f0
jmp 0x153ab
movzbl -0x11(%rbp), %eax
cmpl $0x11, %eax
jne 0x153a9
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x153a7
movq -0x40(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x153a7
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34100
movb %al, -0x41(%rbp)
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x41(%rbp), %eax
orl $0x8, %eax
movzbl %al, %esi
callq 0x339f0
jmp 0x153a9
jmp 0x153ab
jmp 0x153ad
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_set_style
void lv_kb_set_style(lv_obj_t * kb, lv_kb_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

    switch(type) {
        case LV_KB_STYLE_BG: lv_btnm_set_style(kb, LV_BTNM_STYLE_BG, style); break;
        case LV_KB_STYLE_BTN_REL: lv_btnm_set_style(kb, LV_BTNM_STYLE_BTN_REL, style); break;
        case LV_KB_STYLE_BTN_PR: lv_btnm_set_style(kb, LV_BTNM_STYLE_BTN_PR, style); break;
        case LV_KB_STYLE_BTN_TGL_REL: lv_btnm_set_style(kb, LV_BTNM_STYLE_BTN_TGL_REL, style); break;
        case LV_KB_STYLE_BTN_TGL_PR: lv_btnm_set_style(kb, LV_BTNM_STYLE_BTN_TGL_PR, style); break;
        case LV_KB_STYLE_BTN_INA: lv_btnm_set_style(kb, LV_BTNM_STYLE_BTN_INA, style); break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %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 0x15845
movq -0x8(%rbp), %rsi
leaq 0x528be(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x15843
movzbl -0x9(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0x5, %rax
ja 0x158de
movq -0x20(%rbp), %rax
leaq 0x5295e(%rip), %rcx     # 0x681c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x37160
jmp 0x158de
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0x37160
jmp 0x158de
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x37160
jmp 0x158de
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x3, %esi
callq 0x37160
jmp 0x158de
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x4, %esi
callq 0x37160
jmp 0x158de
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x5, %esi
callq 0x37160
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_kb.c
// Function: lv_kb_set_ta
void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);
    if(ta) LV_ASSERT_OBJ(ta, "lv_ta");

    lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
    lv_cursor_type_t cur_type;

    /*Hide the cursor of the old Text area if cursor management is enabled*/
    if(ext->ta && ext->cursor_mng) {
        cur_type = lv_ta_get_cursor_type(ext->ta);
        lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN);
    }

    ext->ta = ta;

    /*Show the cursor of the new Text area if cursor management is enabled*/
    if(ext->ta && ext->cursor_mng) {
        cur_type = lv_ta_get_cursor_type(ext->ta);
        lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN));
    }
}

// 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 0x1591f
movq -0x8(%rbp), %rsi
leaq 0x527e4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1591d
cmpq $0x0, -0x10(%rbp)
je 0x15947
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x15945
movq -0x10(%rbp), %rsi
leaq 0x527be(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x15943
jmp 0x15947
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x15997
movq -0x18(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x15997
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34100
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x19(%rbp), %eax
orl $0x8, %eax
movzbl %al, %esi
callq 0x339f0
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x159e6
movq -0x18(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x159e6
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34100
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x19(%rbp), %eax
andl $-0x9, %eax
movzbl %al, %esi
callq 0x339f0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_set_mode
void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

    lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
    if(ext->mode == mode) return;

    ext->mode = mode;
    if(mode == LV_KB_MODE_TEXT) {
        lv_btnm_set_map(kb, kb_map_lc);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_lc_map);
    } else if(mode == LV_KB_MODE_NUM) {
        lv_btnm_set_map(kb, kb_map_num);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_num_map);
    } else if(mode == LV_KB_MODE_TEXT_UPPER) {
        lv_btnm_set_map(kb, kb_map_uc);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_uc_map);
    }
}

// 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 0x15a21
movq -0x8(%rbp), %rsi
leaq 0x526e2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x15a1f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzbl 0x50(%rax), %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x15a43
jmp 0x15ad0
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x50(%rax)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x15a78
movq -0x8(%rbp), %rdi
leaq 0x6663f(%rip), %rsi     # 0x7c0a0
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x5277f(%rip), %rsi     # 0x681f0
callq 0x37640
jmp 0x15ad0
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jne 0x15aa3
movq -0x8(%rbp), %rdi
leaq 0x66774(%rip), %rsi     # 0x7c200
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x527a4(%rip), %rsi     # 0x68240
callq 0x37640
jmp 0x15ace
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
jne 0x15acc
movq -0x8(%rbp), %rdi
leaq 0x667f9(%rip), %rsi     # 0x7c2b0
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x527a9(%rip), %rsi     # 0x68270
callq 0x37640
jmp 0x15ace
jmp 0x15ad0
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_kb.c
// Function: lv_kb_set_cursor_manage
void lv_kb_set_cursor_manage(lv_obj_t * kb, bool en)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

    lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
    if(ext->cursor_mng == en) return;

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

    if(ext->ta) {
        lv_cursor_type_t cur_type;
        cur_type = lv_ta_get_cursor_type(ext->ta);

        if(ext->cursor_mng) {
            lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN));
        } else {
            lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN);
        }
    }
}

// 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 0x15b13
movq -0x8(%rbp), %rsi
leaq 0x525f0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x15b11
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x15b3e
jmp 0x15bc1
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0x51(%rax), %cl
andb $0x1, %dl
andb $-0x2, %cl
orb %dl, %cl
movb %cl, 0x51(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x15bc1
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34100
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
movb 0x51(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x15ba8
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x19(%rbp), %eax
andl $-0x9, %eax
movzbl %al, %esi
callq 0x339f0
jmp 0x15bbf
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movzbl -0x19(%rbp), %eax
orl $0x8, %eax
movzbl %al, %esi
callq 0x339f0
jmp 0x15bc1
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_kb.c
// Function: lv_kb_get_style
const lv_style_t * lv_kb_get_style(const lv_obj_t * kb, lv_kb_style_t type)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

    const lv_style_t * style = NULL;

    switch(type) {
        case LV_KB_STYLE_BG: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BG); break;
        case LV_KB_STYLE_BTN_REL: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BTN_REL); break;
        case LV_KB_STYLE_BTN_PR: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BTN_PR); break;
        case LV_KB_STYLE_BTN_TGL_REL: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BTN_TGL_REL); break;
        case LV_KB_STYLE_BTN_TGL_PR: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BTN_TGL_PR); break;
        case LV_KB_STYLE_BTN_INA: style = lv_btnm_get_style(kb, LV_BTNM_STYLE_BTN_INA); break;
        default: style = NULL; break;
    }

    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 0x15d01
movq -0x8(%rbp), %rsi
leaq 0x52402(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x15cff
movq $0x0, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0x5, %rax
ja 0x15da4
movq -0x20(%rbp), %rax
leaq 0x524b2(%rip), %rcx     # 0x681d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
movq -0x8(%rbp), %rdi
movl $0x4, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
movq -0x8(%rbp), %rdi
movl $0x5, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x15dac
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_line.c
// Function: lv_line_signal
static lv_res_t lv_line_signal(lv_obj_t * line, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(line, 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_REFR_EXT_DRAW_PAD) {
        const lv_style_t * style = lv_line_get_style(line, LV_LINE_STYLE_MAIN);
        if(line->ext_draw_pad < style->line.width) line->ext_draw_pad = style->line.width;
    }

    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 0x73073(%rip), %rax     # 0x893c0
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 0x16371
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x163d3
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x1638f
movq -0x20(%rbp), %rdi
leaq 0x52032(%rip), %rsi     # 0x683b7
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x163d3
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0x163cd
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x16760
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movq -0x30(%rbp), %rcx
movswl 0x3e(%rcx), %ecx
cmpl %ecx, %eax
jge 0x163cb
movq -0x30(%rbp), %rax
movw 0x3e(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0x163cd
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_line.c
// Function: lv_line_set_auto_size
void lv_line_set_auto_size(lv_obj_t * line, bool en)
{
    LV_ASSERT_OBJ(line, LV_OBJX_NAME);

    lv_line_ext_t * ext = lv_obj_get_ext_attr(line);
    if(ext->auto_size == en) return;

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

    /*Refresh the object*/
    if(en) lv_line_set_points(line, ext->point_array, ext->point_num);
}

// 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 0x16413
movq -0x8(%rbp), %rsi
leaq 0x51cf0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16411
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0xa(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1643b
jmp 0x16482
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0xa(%rax), %cl
andb $0x1, %dl
andb $-0x2, %cl
orb %dl, %cl
movb %cl, 0xa(%rax)
testb $0x1, -0x9(%rbp)
je 0x16482
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
movq -0x18(%rbp), %rax
movzwl 0x8(%rax), %edx
callq 0x16600
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_line.c
// Function: lv_line_set_y_invert
void lv_line_set_y_invert(lv_obj_t * line, bool en)
{
    LV_ASSERT_OBJ(line, LV_OBJX_NAME);

    lv_line_ext_t * ext = lv_obj_get_ext_attr(line);
    if(ext->y_inv == en) return;

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

    lv_obj_invalidate(line);
}

// 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 0x16523
movq -0x8(%rbp), %rsi
leaq 0x51be0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16521
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0xa(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x1654d
jmp 0x16581
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0xa(%rax), %cl
andb $0x1, %dl
shlb %dl
andb $-0x3, %cl
orb %dl, %cl
movb %cl, 0xa(%rax)
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_line.c
// Function: lv_line_set_points
void lv_line_set_points(lv_obj_t * line, const lv_point_t point_a[], uint16_t point_num)
{
    LV_ASSERT_OBJ(line, LV_OBJX_NAME);

    lv_line_ext_t * ext = lv_obj_get_ext_attr(line);
    ext->point_array    = point_a;
    ext->point_num      = point_num;

    if(point_num > 0 && ext->auto_size != 0) {
        uint16_t i;
        lv_coord_t xmax = LV_COORD_MIN;
        lv_coord_t ymax = LV_COORD_MIN;
        for(i = 0; i < point_num; i++) {
            xmax = LV_MATH_MAX(point_a[i].x, xmax);
            ymax = LV_MATH_MAX(point_a[i].y, ymax);
        }

        const lv_style_t * style = lv_line_get_style(line, LV_LINE_STYLE_MAIN);
        lv_obj_set_size(line, xmax + style->line.width, ymax + style->line.width);
    }

    lv_obj_invalidate(line);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %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 0x16636
movq -0x8(%rbp), %rsi
leaq 0x51acd(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16634
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movw -0x12(%rbp), %cx
movq -0x20(%rbp), %rax
movw %cx, 0x8(%rax)
movzwl -0x12(%rbp), %eax
cmpl $0x0, %eax
jle 0x16750
movq -0x20(%rbp), %rax
movb 0xa(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x16750
movw $0x83e8, -0x24(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x26(%rbp)    # imm = 0x83E8
movw $0x0, -0x22(%rbp)
movzwl -0x22(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jge 0x16713
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl (%rax,%rcx,4), %eax
movswl -0x24(%rbp), %ecx
cmpl %ecx, %eax
jle 0x166bf
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl (%rax,%rcx,4), %eax
movl %eax, -0x34(%rbp)
jmp 0x166c6
movswl -0x24(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movw %ax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl 0x2(%rax,%rcx,4), %eax
movswl -0x26(%rbp), %ecx
cmpl %ecx, %eax
jle 0x166f4
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl 0x2(%rax,%rcx,4), %eax
movl %eax, -0x38(%rbp)
jmp 0x166fb
movswl -0x26(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movw %ax, -0x26(%rbp)
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x1668e
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x16760
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movswl -0x24(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl 0x3e(%rcx), %ecx
addl %ecx, %eax
movw %ax, %cx
movswl -0x26(%rbp), %eax
movq -0x30(%rbp), %rdx
movswl 0x3e(%rdx), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x8180
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_default_event_cb
static void lv_mbox_default_event_cb(lv_obj_t * mbox, lv_event_t event)
{
    if(event != LV_EVENT_VALUE_CHANGED) return;

    uint32_t btn_id = lv_mbox_get_active_btn(mbox);
    if(btn_id == LV_BTNM_BTN_NONE) return;

    lv_mbox_start_auto_close(mbox, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0xe, %eax
je 0x16c4d
jmp 0x16c72
movq -0x8(%rbp), %rdi
callq 0x17490
movzwl %ax, %eax
movl %eax, -0x10(%rbp)
cmpl $0xffff, -0x10(%rbp)    # imm = 0xFFFF
jne 0x16c67
jmp 0x16c72
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x17160
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_set_style
void lv_mbox_set_style(lv_obj_t * mbox, lv_mbox_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);

    switch(type) {
        case LV_MBOX_STYLE_BG: lv_obj_set_style(mbox, style); break;
        case LV_MBOX_STYLE_BTN_BG: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BG, style); break;
        case LV_MBOX_STYLE_BTN_REL: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BTN_REL, style); break;
        case LV_MBOX_STYLE_BTN_PR: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BTN_PR, style); break;
        case LV_MBOX_STYLE_BTN_TGL_REL: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BTN_TGL_REL, style); break;
        case LV_MBOX_STYLE_BTN_TGL_PR: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BTN_TGL_PR, style); break;
        case LV_MBOX_STYLE_BTN_INA: lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BTN_INA, style); break;
    }

    mbox_realign(mbox);
}

// 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 0x16cb5
movq -0x8(%rbp), %rsi
leaq 0x5144e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16cb3
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x6, %rax
ja 0x16d85
movq -0x28(%rbp), %rax
leaq 0x516e1(%rip), %rcx     # 0x683c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x37160
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0x37160
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x37160
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x3, %esi
callq 0x37160
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x4, %esi
callq 0x37160
jmp 0x16d85
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x5, %esi
callq 0x37160
movq -0x8(%rbp), %rdi
callq 0x16f80
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)