LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_add_btns
void lv_mbox_add_btns(lv_obj_t * mbox, const char * btn_map[])
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);
    LV_ASSERT_NULL(btn_map);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);

    /*Create a button matrix if not exists yet*/
    if(ext->btnm == NULL) {
        ext->btnm = lv_btnm_create(mbox, NULL);

        /*Set the default styles*/
        lv_theme_t * th = lv_theme_get_current();
        if(th) {
            lv_mbox_set_style(mbox, LV_MBOX_STYLE_BTN_BG, th->style.mbox.btn.bg);
            lv_mbox_set_style(mbox, LV_MBOX_STYLE_BTN_REL, th->style.mbox.btn.rel);
            lv_mbox_set_style(mbox, LV_MBOX_STYLE_BTN_PR, th->style.mbox.btn.pr);
        } else {
            lv_btnm_set_style(ext->btnm, LV_BTNM_STYLE_BG, &lv_style_transp_fit);
        }
    }

    lv_btnm_set_map(ext->btnm, btn_map);
    lv_btnm_set_btn_ctrl_all(ext->btnm, LV_BTNM_CTRL_CLICK_TRIG | LV_BTNM_CTRL_NO_REPEAT);
    lv_obj_set_event_cb(ext->btnm, lv_mbox_btnm_event_cb);

    mbox_realign(mbox);
}

// 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 0x16dcf
movq -0x8(%rbp), %rsi
leaq 0x51334(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16dcd
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x16dee
movq -0x10(%rbp), %rsi
leaq 0x51315(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x16dec
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x16e97
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x35980
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
callq 0x4cfc0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x16e7f
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x1f0(%rax), %rdx
movl $0x1, %esi
callq 0x16c80
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x1f8(%rax), %rdx
movl $0x2, %esi
callq 0x16c80
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x200(%rax), %rdx
movl $0x3, %esi
callq 0x16c80
jmp 0x16e95
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
leaq 0x722c0(%rip), %rdx     # 0x89150
callq 0x37160
jmp 0x16e97
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x36c80
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x110, %esi            # imm = 0x110
callq 0x37980
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x17(%rip), %rsi        # 0x16ee0
callq 0x9b00
movq -0x8(%rbp), %rdi
callq 0x16f80
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_btnm_event_cb
static void lv_mbox_btnm_event_cb(lv_obj_t * btnm, lv_event_t event)
{
    lv_obj_t * mbox = lv_obj_get_parent(btnm);

    /*clang-format off*/
    if(event == LV_EVENT_PRESSED || event == LV_EVENT_PRESSING || event == LV_EVENT_PRESS_LOST ||
       event == LV_EVENT_RELEASED || event == LV_EVENT_SHORT_CLICKED || event == LV_EVENT_CLICKED ||
       event == LV_EVENT_LONG_PRESSED || event == LV_EVENT_LONG_PRESSED_REPEAT ||
       event == LV_EVENT_VALUE_CHANGED) {
        lv_event_send(mbox, event, lv_event_get_data());
    }
    /*clang-format on*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x6, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
je 0x16f50
movzbl -0x9(%rbp), %eax
cmpl $0xe, %eax
jne 0x16f75
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movb -0x9(%rbp), %al
movb %al, -0x19(%rbp)
callq 0x9cb0
movq -0x28(%rbp), %rdi
movq %rax, %rdx
movb -0x19(%rbp), %al
movzbl %al, %esi
callq 0x7990
addq $0x30, %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: mbox_realign
static void mbox_realign(lv_obj_t * mbox)
{
    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);

    const lv_style_t * style = lv_mbox_get_style(mbox, LV_MBOX_STYLE_BG);
    lv_coord_t w             = lv_obj_get_width(mbox) - style->body.padding.left - style->body.padding.right;

    if(ext->text) {
        lv_obj_set_width(ext->text, w);
    }

    if(ext->btnm) {
        const lv_style_t * btn_bg_style  = lv_mbox_get_style(mbox, LV_MBOX_STYLE_BTN_BG);
        const lv_style_t * btn_rel_style = lv_mbox_get_style(mbox, LV_MBOX_STYLE_BTN_REL);
        lv_coord_t font_h                = lv_font_get_line_height(btn_rel_style->text.font);
        lv_obj_set_size(ext->btnm, w,
                        font_h + btn_rel_style->body.padding.top + btn_rel_style->body.padding.bottom +
                            btn_bg_style->body.padding.top + btn_bg_style->body.padding.bottom);
    }
}

// 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
xorl %esi, %esi
callq 0x17570
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8310
cwtl
movq -0x18(%rbp), %rcx
movswl 0x1a(%rcx), %ecx
subl %ecx, %eax
movq -0x18(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16fe6
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movswl -0x1a(%rbp), %esi
callq 0x8430
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x1706c
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x17570
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x17570
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x17770
movzbl %al, %eax
movw %ax, -0x32(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movw -0x1a(%rbp), %cx
movswl -0x32(%rbp), %eax
movq -0x30(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %eax
movq -0x30(%rbp), %rdx
movswl 0x18(%rdx), %edx
addl %edx, %eax
movq -0x28(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %eax
movq -0x28(%rbp), %rdx
movswl 0x18(%rdx), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x8180
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_mbox.c
// Function: lv_mbox_set_text
void lv_mbox_set_text(lv_obj_t * mbox, const char * txt)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);
    LV_ASSERT_STR(txt);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
    lv_label_set_text(ext->text, txt);

    mbox_realign(mbox);
}

// 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 0x170af
movq -0x8(%rbp), %rsi
leaq 0x51054(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x170ad
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x170ce
movq -0x10(%rbp), %rsi
leaq 0x51035(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x170cc
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2a630
movq -0x8(%rbp), %rdi
callq 0x16f80
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_mbox.c
// Function: lv_mbox_set_anim_time
void lv_mbox_set_anim_time(lv_obj_t * mbox, uint16_t anim_time)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

#if LV_USE_ANIMATION
    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
    anim_time           = 0;
    ext->anim_time      = anim_time;
#else
    (void)mbox;
    (void)anim_time;
#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 0x17132
movq -0x8(%rbp), %rsi
leaq 0x50fd1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x17130
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw $0x0, -0xa(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x18(%rax)
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_mbox.c
// Function: lv_mbox_get_active_btn
uint16_t lv_mbox_get_active_btn(lv_obj_t * mbox)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
    if(ext->btnm)
        return lv_btnm_get_active_btn(ext->btnm);
    else
        return LV_BTNM_BTN_NONE;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x174bb
movq -0x10(%rbp), %rsi
leaq 0x50c48(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x174b9
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x174e6
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x37c40
movw %ax, -0x2(%rbp)
jmp 0x174ec
movw $0xffff, -0x2(%rbp)     # imm = 0xFFFF
movw -0x2(%rbp), %ax
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_mbox.c
// Function: lv_mbox_get_active_btn_text
const char * lv_mbox_get_active_btn_text(lv_obj_t * mbox)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
    if(ext->btnm)
        return lv_btnm_get_active_btn_text(ext->btnm);
    else
        return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1752b
movq -0x10(%rbp), %rsi
leaq 0x50bd8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x17529
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x17556
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x37c90
movq %rax, -0x8(%rbp)
jmp 0x1755e
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %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_mbox.c
// Function: lv_mbox_get_style
const lv_style_t * lv_mbox_get_style(const lv_obj_t * mbox, lv_mbox_style_t type)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_mbox_ext_t * ext      = lv_obj_get_ext_attr(mbox);

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

    return style;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x175a1
movq -0x8(%rbp), %rsi
leaq 0x50b62(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1759f
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x6, %rax
ja 0x1767e
movq -0x28(%rbp), %rax
leaq 0x50e09(%rip), %rcx     # 0x683dc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x2, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x3, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x4, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movl $0x5, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x17686
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_get_recolor
bool lv_mbox_get_recolor(const lv_obj_t * mbox)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);

    if(!ext->btnm) return false;

    return lv_btnm_get_recolor(ext->btnm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x176bb
movq -0x10(%rbp), %rsi
leaq 0x50a48(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x176b9
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x176d9
movb $0x0, -0x1(%rbp)
jmp 0x176eb
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x37bf0
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %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_preload.c
// Function: lv_preload_signal
static lv_res_t lv_preload_signal(lv_obj_t * preload, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(preload, 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 0x71a23(%rip), %rax     # 0x893d0
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 0x179d1
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x17a00
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x179ef
movq -0x20(%rbp), %rdi
leaq 0x50a23(%rip), %rsi     # 0x68408
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x17a00
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x179fa
jmp 0x179fa
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_preload.c
// Function: lv_preload_set_spin_time
void lv_preload_set_spin_time(lv_obj_t * preload, uint16_t time)
{
    LV_ASSERT_OBJ(preload, LV_OBJX_NAME);

    lv_preload_ext_t * ext = lv_obj_get_ext_attr(preload);

    ext->time = time;
    lv_preload_set_type(preload, ext->anim_type);
}

// 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 0x18002
movq -0x8(%rbp), %rsi
leaq 0x50101(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x18000
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movb 0x8(%rax), %al
andb $0x3, %al
movzbl %al, %esi
callq 0x17c90
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_preload.c
// Function: lv_preload_spinner_anim
void lv_preload_spinner_anim(void * ptr, lv_anim_value_t val)
{
    lv_obj_t * preload     = ptr;
    lv_preload_ext_t * ext = lv_obj_get_ext_attr(preload);

    int16_t angle_start = val - ext->arc_length / 2 + 180;
    int16_t angle_end   = angle_start + ext->arc_length;

    angle_start = angle_start % 360;
    angle_end   = angle_end % 360;

    lv_arc_set_angles(preload, angle_start, angle_end);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movswl -0xa(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movswl 0x4(%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x28(%rbp), %eax
subl %ecx, %eax
addl $0xb4, %eax
movw %ax, -0x22(%rbp)
movswl -0x22(%rbp), %eax
movq -0x20(%rbp), %rcx
movswl 0x4(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x24(%rbp)
movswl -0x22(%rbp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x22(%rbp)
movswl -0x24(%rbp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x24(%rbp)
movq -0x18(%rbp), %rdi
movw -0x22(%rbp), %ax
movzwl %ax, %esi
movzwl -0x24(%rbp), %edx
callq 0xe680
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_preload.c
// Function: lv_preload_set_dir
void lv_preload_set_dir(lv_obj_t * preload, lv_preload_dir_t dir)
{
    LV_ASSERT_OBJ(preload, LV_OBJX_NAME);

    lv_preload_ext_t * ext = lv_obj_get_ext_attr(preload);

    ext->anim_dir = dir;
    lv_preload_set_type(preload, ext->anim_type);
}

// 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 0x18121
movq -0x8(%rbp), %rsi
leaq 0x4ffe2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1811f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x8(%rax), %cl
andb $0x1, %dl
shlb $0x2, %dl
andb $-0x5, %cl
orb %dl, %cl
movb %cl, 0x8(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movb 0x8(%rax), %al
andb $0x3, %al
movzbl %al, %esi
callq 0x17c90
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_preload.c
// Function: lv_preload_get_style
const lv_style_t * lv_preload_get_style(const lv_obj_t * preload, lv_preload_style_t type)
{
    LV_ASSERT_OBJ(preload, LV_OBJX_NAME);

    const lv_style_t * style = NULL;

    switch(type) {
        case LV_PRELOAD_STYLE_MAIN: style = lv_arc_get_style(preload, LV_ARC_STYLE_MAIN); 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 0x18241
movq -0x8(%rbp), %rsi
leaq 0x4fec2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1823f
movq $0x0, -0x18(%rbp)
movb -0x9(%rbp), %al
testb %al, %al
jne 0x18263
jmp 0x18252
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0xe7b0
movq %rax, -0x18(%rbp)
jmp 0x1826b
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_roller.c
// Function: lv_roller_set_visible_row_count
void lv_roller_set_visible_row_count(lv_obj_t * roller, uint8_t row_cnt)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    lv_roller_ext_t * ext          = lv_obj_get_ext_attr(roller);
    const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label);
    uint8_t n_line_space           = (row_cnt > 1) ? row_cnt - 1 : 1;
    lv_ddlist_set_fix_height(roller, lv_font_get_line_height(style_label->text.font) * row_cnt +
                                         style_label->text.line_space * n_line_space);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x18d41
movq -0x8(%rbp), %rsi
leaq 0x4f3c2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x18d3f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jle 0x18d74
movzbl -0x9(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x18d7e
movl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x18d7e
movl -0x28(%rbp), %eax
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x19680
movq -0x30(%rbp), %rdi
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
imull %ecx, %eax
movq -0x20(%rbp), %rcx
movswl 0x32(%rcx), %ecx
movzbl -0x21(%rbp), %edx
imull %edx, %ecx
addl %ecx, %eax
movswl %ax, %esi
callq 0x14450
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_roller.c
// Function: lv_roller_set_style
void lv_roller_set_style(lv_obj_t * roller, lv_roller_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    switch(type) {
        case LV_ROLLER_STYLE_BG: lv_obj_set_style(roller, style); break;
        case LV_ROLLER_STYLE_SEL: lv_ddlist_set_style(roller, LV_DDLIST_STYLE_SEL, 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 0x19045
movq -0x8(%rbp), %rsi
leaq 0x4f0be(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x19043
movzbl -0x9(%rbp), %eax
movl %eax, -0x1c(%rbp)
testl %eax, %eax
je 0x1905c
jmp 0x19052
movl -0x1c(%rbp), %eax
subl $0x1, %eax
je 0x1906b
jmp 0x1907d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x1907d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0x13dc0
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_roller.c
// Function: refr_height
static void refr_height(lv_obj_t * roller)
{
    lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller);
    lv_align_t obj_align  = LV_ALIGN_IN_LEFT_MID;
    if(ext->ddlist.label) {
        lv_label_align_t label_align = lv_label_get_align(ext->ddlist.label);
        if(LV_LABEL_ALIGN_CENTER == label_align)
            obj_align = LV_ALIGN_CENTER;
        else if(LV_LABEL_ALIGN_RIGHT == label_align)
            obj_align = LV_ALIGN_IN_RIGHT_MID;
    }

    lv_obj_set_height(lv_page_get_scrl(roller), lv_obj_get_height(ext->ddlist.label) + lv_obj_get_height(roller));
    lv_obj_align(ext->ddlist.label, NULL, obj_align, 0, 0);
#if LV_USE_ANIMATION
    lv_anim_del(lv_page_get_scrl(roller), (lv_anim_exec_xcb_t)lv_obj_set_y);
#endif
    lv_ddlist_set_selected(roller, ext->ddlist.sel_opt_id);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movb $0x7, -0x11(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0x19270
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
movb %al, -0x12(%rbp)
movzbl -0x12(%rbp), %ecx
movl $0x1, %eax
cmpl %ecx, %eax
jne 0x1925b
movb $0x0, -0x11(%rbp)
jmp 0x1926e
movzbl -0x12(%rbp), %ecx
movl $0x2, %eax
cmpl %ecx, %eax
jne 0x1926c
movb $0x8, -0x11(%rbp)
jmp 0x1926e
jmp 0x19270
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x8350
cwtl
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8350
movq -0x20(%rbp), %rdi
movw %ax, %cx
movl -0x18(%rbp), %eax
movswl %cx, %ecx
addl %ecx, %eax
movswl %ax, %esi
callq 0x84a0
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %r8d, %r8d
movzbl -0x11(%rbp), %edx
movl %r8d, %ecx
callq 0x8500
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, %rdi
leaq -0x111bc(%rip), %rsi    # 0x8120
callq 0x44560
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movzwl 0x62(%rax), %esi
callq 0x14290
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_roller.c
// Function: lv_roller_set_selected
void lv_roller_set_selected(lv_obj_t * roller, uint16_t sel_opt, lv_anim_enable_t anim)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

#if LV_USE_ANIMATION == 0
    anim = LV_ANIM_OFF;
#endif

    if(lv_roller_get_selected(roller) == sel_opt) return;

    lv_ddlist_set_selected(roller, sel_opt);
    refr_position(roller, anim);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %dl, %al
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movb %al, -0xb(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x19337
movq -0x8(%rbp), %rsi
leaq 0x4edcc(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x19335
movq -0x8(%rbp), %rdi
callq 0x19450
movzwl %ax, %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x1934d
jmp 0x19367
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x14290
movq -0x8(%rbp), %rdi
movzbl -0xb(%rbp), %esi
callq 0x194e0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_roller.c
// Function: lv_roller_set_align
void lv_roller_set_align(lv_obj_t * roller, lv_label_align_t align)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller);

    lv_obj_t * label = ext->ddlist.label;

    if(label == NULL) return; /*Probably the roller is being deleted if the label is NULL.*/
    lv_label_set_align(label, align);

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x193a1
movq -0x8(%rbp), %rsi
leaq 0x4ed62(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1939f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x193c6
jmp 0x19446
movq -0x20(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movq -0x20(%rbp), %rdi
callq 0x2ab50
movzbl %al, %ecx
movl %ecx, -0x24(%rbp)
testb %al, %al
je 0x193fc
jmp 0x193e8
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x19416
jmp 0x193f2
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x1942e
jmp 0x19446
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x7, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
jmp 0x19446
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %r8d, %r8d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x8500
jmp 0x19446
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x8, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x8500
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_roller.c
// Function: lv_roller_get_selected
uint16_t lv_roller_get_selected(const lv_obj_t * roller)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller);
    if(ext->mode == LV_ROLLER_MODE_INIFINITE) {
        uint16_t real_id_cnt = ext->ddlist.option_cnt / LV_ROLLER_INF_PAGES;
        return lv_ddlist_get_selected(roller) % real_id_cnt;
    } else {
        return lv_ddlist_get_selected(roller);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1947b
movq -0x10(%rbp), %rsi
leaq 0x4ec88(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x19479
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x70(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x194c9
movq -0x18(%rbp), %rax
movzwl 0x60(%rax), %eax
movl $0x7, %ecx
cltd
idivl %ecx
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rdi
callq 0x147f0
movzwl %ax, %eax
movzwl -0x1a(%rbp), %ecx
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x2(%rbp)
jmp 0x194d6
movq -0x10(%rbp), %rdi
callq 0x147f0
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_roller.c
// Function: lv_roller_get_align
lv_label_align_t lv_roller_get_align(const lv_obj_t * roller)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    lv_roller_ext_t * ext = lv_obj_get_ext_attr(roller);
    LV_ASSERT_MEM(ext);
    LV_ASSERT_MEM(ext->ddlist.label);
    return lv_label_get_align(ext->ddlist.label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x196cb
movq -0x8(%rbp), %rsi
leaq 0x4ea38(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x196c9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x196f7
movq -0x10(%rbp), %rsi
leaq 0x4e954(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x196f5
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1971e
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq 0x4e92d(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x1971c
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
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_roller.c
// Function: lv_roller_get_style
const lv_style_t * lv_roller_get_style(const lv_obj_t * roller, lv_roller_style_t type)
{
    LV_ASSERT_OBJ(roller, LV_OBJX_NAME);

    switch(type) {
        case LV_ROLLER_STYLE_BG: return lv_obj_get_style(roller);
        case LV_ROLLER_STYLE_SEL: return lv_ddlist_get_style(roller, LV_DDLIST_STYLE_SEL);
        default: return NULL;
    }

    /*To avoid warning*/
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x197f1
movq -0x10(%rbp), %rsi
leaq 0x4e912(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x197ef
movzbl -0x11(%rbp), %eax
movl %eax, -0x18(%rbp)
testl %eax, %eax
je 0x19808
jmp 0x197fe
movl -0x18(%rbp), %eax
subl $0x1, %eax
je 0x19817
jmp 0x1982b
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x8(%rbp)
jmp 0x19833
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x13e80
movq %rax, -0x8(%rbp)
jmp 0x19833
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %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_roller.c
// Function: inf_normalize
static void inf_normalize(void * scrl)
{
    lv_obj_t * roller_scrl = (lv_obj_t *)scrl;
    lv_obj_t * roller      = lv_obj_get_parent(roller_scrl);
    lv_roller_ext_t * ext  = lv_obj_get_ext_attr(roller);

    if(ext->mode == LV_ROLLER_MODE_INIFINITE) {
        uint16_t real_id_cnt = ext->ddlist.option_cnt / LV_ROLLER_INF_PAGES;

        ext->ddlist.sel_opt_id = ext->ddlist.sel_opt_id % real_id_cnt;

        ext->ddlist.sel_opt_id += (LV_ROLLER_INF_PAGES / 2) * real_id_cnt; /*Select the middle page*/

        /*Move to the new id*/
        const lv_style_t * style_label = lv_obj_get_style(ext->ddlist.label);
        const lv_font_t * font         = style_label->text.font;
        lv_coord_t font_h              = lv_font_get_line_height(font);
        lv_coord_t h                   = lv_obj_get_height(roller);

        lv_coord_t line_y1 = ext->ddlist.sel_opt_id * (font_h + style_label->text.line_space) +
                             ext->ddlist.label->coords.y1 - roller_scrl->coords.y1;
        lv_coord_t new_y = -line_y1 + (h - font_h) / 2;
        lv_obj_set_y(roller_scrl, new_y);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movb 0x70(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x19c8a
movq -0x20(%rbp), %rax
movzwl 0x60(%rax), %eax
movl $0x7, %ecx
cltd
idivl %ecx
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x62(%rax), %eax
movzwl -0x22(%rbp), %ecx
cltd
idivl %ecx
movw %dx, %cx
movq -0x20(%rbp), %rax
movw %cx, 0x62(%rax)
movzwl -0x22(%rbp), %eax
imull $0x3, %eax, %edx
movq -0x20(%rbp), %rax
movzwl 0x62(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x62(%rax)
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x19680
movzbl %al, %eax
movw %ax, -0x3a(%rbp)
movq -0x18(%rbp), %rdi
callq 0x8350
movw %ax, -0x3c(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x62(%rax), %eax
movswl -0x3a(%rbp), %ecx
movq -0x30(%rbp), %rdx
movswl 0x32(%rdx), %edx
addl %edx, %ecx
imull %ecx, %eax
movq -0x20(%rbp), %rcx
movq 0x50(%rcx), %rcx
movswl 0x22(%rcx), %ecx
addl %ecx, %eax
movq -0x10(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x3e(%rbp)
movswl -0x3e(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x44(%rbp)
movswl -0x3c(%rbp), %eax
movswl -0x3a(%rbp), %ecx
subl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x44(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
movswl -0x40(%rbp), %esi
callq 0x8120
addq $0x50, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_signal
static lv_res_t lv_table_signal(lv_obj_t * table, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(table, 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) {
        /*Free the cell texts*/
        lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
        uint16_t cell;
        for(cell = 0; cell < ext->col_cnt * ext->row_cnt; cell++) {
            if(ext->cell_data[cell]) {
                lv_mem_free(ext->cell_data[cell]);
                ext->cell_data[cell] = NULL;
            }
        }
        if(ext->cell_data != NULL)
            lv_mem_free(ext->cell_data);
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x6f443(%rip), %rax     # 0x893f0
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 0x19fd4
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1a09b
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x19ff5
movq -0x20(%rbp), %rdi
leaq 0x4e460(%rip), %rsi     # 0x68448
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x1a09b
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x1a095
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movw $0x0, -0x32(%rbp)
movzwl -0x32(%rbp), %eax
movq -0x30(%rbp), %rcx
movzwl (%rcx), %ecx
movq -0x30(%rbp), %rdx
movzwl 0x2(%rdx), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x1a07b
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movzwl -0x32(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
je 0x1a06b
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movzwl -0x32(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x44ec0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movzwl -0x32(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
jmp 0x1a06d
movw -0x32(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x32(%rbp)
jmp 0x1a015
movq -0x30(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1a093
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x44ec0
jmp 0x1a095
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
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_table.c
// Function: lv_table_set_style
void lv_table_set_style(lv_obj_t * table, lv_table_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);

    switch(type) {
        case LV_TABLE_STYLE_BG:
            lv_obj_set_style(table, style);
            refr_size(table);
            break;
        case LV_TABLE_STYLE_CELL1:
            ext->cell_style[0] = style;
            refr_size(table);
            break;
        case LV_TABLE_STYLE_CELL2:
            ext->cell_style[1] = style;
            refr_size(table);
            break;
        case LV_TABLE_STYLE_CELL3:
            ext->cell_style[2] = style;
            refr_size(table);
            break;
        case LV_TABLE_STYLE_CELL4:
            ext->cell_style[3] = style;
            refr_size(table);
            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 0x1a805
movq -0x8(%rbp), %rsi
leaq 0x4d8fe(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1a803
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0x1a8aa
movq -0x28(%rbp), %rax
leaq 0x4dbf1(%rip), %rcx     # 0x68420
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
movq -0x8(%rbp), %rdi
callq 0x1acb0
jmp 0x1a8aa
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
jmp 0x1a8aa
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
jmp 0x1a8aa
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
jmp 0x1a8aa
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_set_row_cnt
void lv_table_set_row_cnt(lv_obj_t * table, uint16_t row_cnt)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    uint16_t old_row_cnt = ext->row_cnt;
    ext->row_cnt         = row_cnt;

    if(ext->row_cnt > 0 && ext->col_cnt > 0) {
        ext->cell_data = lv_mem_realloc(ext->cell_data, ext->row_cnt * ext->col_cnt * sizeof(char *));

        /*Initilize the new fields*/
        if(old_row_cnt < row_cnt) {
            uint16_t old_cell_cnt = old_row_cnt * ext->col_cnt;
            uint32_t new_cell_cnt = ext->col_cnt * ext->row_cnt;
            memset(&ext->cell_data[old_cell_cnt], 0, (new_cell_cnt - old_cell_cnt) * sizeof(ext->cell_data[0]));
        }
    } else {
        lv_mem_free(ext->cell_data);
        ext->cell_data = NULL;
    }

    refr_size(table);
}

// 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 0x1a8e2
movq -0x8(%rbp), %rsi
leaq 0x4d821(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1a8e0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x1a(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0x0, %eax
jle 0x1a9b9
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
cmpl $0x0, %eax
jle 0x1a9b9
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x44f70
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movzwl -0x1a(%rbp), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jge 0x1a9b7
movzwl -0x1a(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movw %ax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movzwl -0x1c(%rbp), %eax
shlq $0x3, %rax
addq %rax, %rdi
movl -0x20(%rbp), %eax
movzwl -0x1c(%rbp), %ecx
subl %ecx, %eax
movl %eax, %eax
movl %eax, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x2090
jmp 0x1a9d2
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x44ec0
movq -0x18(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
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_table.c
// Function: lv_table_set_col_cnt
void lv_table_set_col_cnt(lv_obj_t * table, uint16_t col_cnt)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    if(col_cnt >= LV_TABLE_COL_MAX) {
        LV_LOG_WARN("lv_table_set_col_cnt: too many columns. Must be < LV_TABLE_COL_MAX.");
        return;
    }

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    uint16_t old_col_cnt = ext->col_cnt;
    ext->col_cnt         = col_cnt;

    if(ext->row_cnt > 0 && ext->col_cnt > 0) {
        ext->cell_data = lv_mem_realloc(ext->cell_data, ext->row_cnt * ext->col_cnt * sizeof(char *));
        /*Initilize the new fields*/
        if(old_col_cnt < col_cnt) {
            uint16_t old_cell_cnt = old_col_cnt * ext->row_cnt;
            uint32_t new_cell_cnt = ext->col_cnt * ext->row_cnt;
            memset(&ext->cell_data[old_cell_cnt], 0, (new_cell_cnt - old_cell_cnt) * sizeof(ext->cell_data[0]));
        }

    } else {
        lv_mem_free(ext->cell_data);
        ext->cell_data = NULL;
    }
    refr_size(table);
}

// 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 0x1aa22
movq -0x8(%rbp), %rsi
leaq 0x4d6e1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1aa20
movzwl -0xa(%rbp), %eax
cmpl $0xc, %eax
jl 0x1aa30
jmp 0x1ab28
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x1a(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %eax
cmpl $0x0, %eax
jle 0x1ab06
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
cmpl $0x0, %eax
jle 0x1ab06
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x44f70
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movzwl -0x1a(%rbp), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jge 0x1ab04
movzwl -0x1a(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
imull %ecx, %eax
movw %ax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
imull %ecx, %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movzwl -0x1c(%rbp), %eax
shlq $0x3, %rax
addq %rax, %rdi
movl -0x20(%rbp), %eax
movzwl -0x1c(%rbp), %ecx
subl %ecx, %eax
movl %eax, %eax
movl %eax, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x2090
jmp 0x1ab1f
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x44ec0
movq -0x18(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: refr_size
static void refr_size(lv_obj_t * table)
{
    lv_coord_t h = 0;
    lv_coord_t w = 0;

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);

    uint16_t i;
    for(i = 0; i < ext->col_cnt; i++) {
        w += ext->col_w[i];
    }
    for(i = 0; i < ext->row_cnt; i++) {
        h += get_row_height(table, i);
    }

    const lv_style_t * bg_style = lv_obj_get_style(table);

    w += bg_style->body.padding.left + bg_style->body.padding.right;
    h += bg_style->body.padding.top + bg_style->body.padding.bottom;

    lv_obj_set_size(table, w + 1, h + 1);
    lv_obj_invalidate(table);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movw $0x0, -0xa(%rbp)
movw $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw $0x0, -0x1a(%rbp)
movzwl -0x1a(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x1ad0f
movq -0x18(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movswl 0x30(%rax,%rcx,2), %ecx
movswl -0xc(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xc(%rbp)
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x1acdb
movw $0x0, -0x1a(%rbp)
movzwl -0x1a(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1ad4d
movq -0x8(%rbp), %rdi
movzwl -0x1a(%rbp), %esi
callq 0x1b900
movswl %ax, %ecx
movswl -0xa(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xa(%rbp)
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x1ad15
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movswl 0x1a(%rax), %ecx
movq -0x28(%rbp), %rax
movswl 0x1c(%rax), %eax
addl %eax, %ecx
movswl -0xc(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xc(%rbp)
movq -0x28(%rbp), %rax
movswl 0x16(%rax), %ecx
movq -0x28(%rbp), %rax
movswl 0x18(%rax), %eax
addl %eax, %ecx
movswl -0xa(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
movswl -0xc(%rbp), %eax
addl $0x1, %eax
movw %ax, %cx
movswl -0xa(%rbp), %eax
addl $0x1, %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x8180
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_table.c
// Function: lv_table_set_col_width
void lv_table_set_col_width(lv_obj_t * table, uint16_t col_id, lv_coord_t w)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    if(col_id >= LV_TABLE_COL_MAX) {
        LV_LOG_WARN("lv_table_set_col_width: too big 'col_id'. Must be < LV_TABLE_COL_MAX.");
        return;
    }

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    ext->col_w[col_id]   = w;
    refr_size(table);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1ae09
movq -0x8(%rbp), %rsi
leaq 0x4d2fa(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1ae07
movzwl -0xa(%rbp), %eax
cmpl $0xc, %eax
jl 0x1ae14
jmp 0x1ae3b
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw -0xc(%rbp), %dx
movq -0x18(%rbp), %rax
movzwl -0xa(%rbp), %ecx
movw %dx, 0x30(%rax,%rcx,2)
movq -0x8(%rbp), %rdi
callq 0x1acb0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)