LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xd19f
cmpb $0x5, %bpl
ja 0xd1b0
movzbl %bpl, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x21ccf
leaq 0x31f8e(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xd1ae
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r15
movl %esi, %ebp
movq %rdi, %r14
callq *0x52da4(%rip)          # 0x602f0
movl %eax, %ebx
cmpb $0x1, %al
jne 0xd592
cmpb $0x6, %bpl
je 0xd57a
movzbl %bpl, %eax
cmpl $0x7, %eax
jne 0xd592
leaq 0x31f44(%rip), %rsi     # 0x3f4ac
movq %r15, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x6bf5
movq %r14, %rdi
callq 0x6697
movzwl 0x3e(%rax), %eax
cmpw %ax, 0x5c(%r14)
jge 0xd592
movw %ax, 0x5c(%r14)
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xd5e8
movq %rbx, %rdi
callq 0x6ad8
movb 0xa(%rax), %cl
movl %ecx, %edx
andb $0x1, %dl
cmpb %bpl, %dl
je 0xd5f9
andb $-0x2, %cl
orb %bpl, %cl
movb %cl, 0xa(%rax)
testb %bpl, %bpl
je 0xd5f9
movq (%rax), %rsi
movzwl 0x8(%rax), %edx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xd6b5
leaq 0x31b45(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xd5f7
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xd65b
movq %rbx, %rdi
callq 0x6ad8
movb 0xa(%rax), %cl
testb $0x2, %cl
sete %dl
xorb %bpl, %dl
je 0xd66c
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x31ad2(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xd66a
addb %bpl, %bpl
andb $-0x3, %cl
orb %bpl, %cl
movb %cl, 0xa(%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4c36
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xd751
movq %rbx, %rdi
callq 0x6ad8
movq %r14, (%rax)
movw %bp, 0x8(%rax)
testw %bp, %bp
je 0xd73f
testb $0x1, 0xa(%rax)
je 0xd73f
movzwl %bp, %eax
movw $0x83e8, %bp            # imm = 0x83E8
xorl %ecx, %ecx
movw $0x83e8, %r15w          # imm = 0x83E8
movzwl (%r14,%rcx,4), %edx
cmpw %r15w, %dx
cmovlel %r15d, %edx
movzwl 0x2(%r14,%rcx,4), %esi
cmpw %bp, %si
cmovlel %ebp, %esi
movl %edx, %r15d
movl %esi, %ebp
incq %rcx
cmpq %rcx, %rax
jne 0xd6f9
movq %rbx, %rdi
callq 0x6697
movzwl 0x3e(%rax), %eax
addl %eax, %r15d
addl %eax, %ebp
movswl %r15w, %esi
movswl %bp, %edx
movq %rbx, %rdi
callq 0x553f
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x4c36
leaq 0x319dc(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xd760
nop
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
cmpl $0xe, %esi
jne 0xda9c
movq %rdi, %rbx
callq 0xdfcb
cmpw $-0x1, %ax
je 0xda9c
movq %rbx, %rdi
xorl %esi, %esi
popq %rbx
jmp 0xddc1
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xdae2
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x6, %bpl
ja 0xdb38
movzbl %bpl, %ecx
leaq 0x319e8(%rip), %rdx     # 0x3f4b4
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5d83
jmp 0xdb38
leaq 0x3164b(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xdaf1
movq 0x10(%rax), %rdi
movl $0x3, %esi
jmp 0xdb30
movq 0x10(%rax), %rdi
movl $0x1, %esi
jmp 0xdb30
movq 0x10(%rax), %rdi
movl $0x2, %esi
jmp 0xdb30
movq 0x10(%rax), %rdi
xorl %esi, %esi
jmp 0xdb30
movq 0x10(%rax), %rdi
movl $0x4, %esi
jmp 0xdb30
movq 0x10(%rax), %rdi
movl $0x5, %esi
movq %r14, %rdx
callq 0x21c20
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0xdc88
// File: /workspace/github_c_makefile_star2_O1/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 %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xdbe0
movq %r14, %rdi
callq 0x80d4
testb %al, %al
je 0xdbf1
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r15
cmpq $0x0, 0x10(%rax)
jne 0xdc14
movq %rbx, %rdi
xorl %esi, %esi
callq 0x20cb8
movq %rax, 0x10(%r15)
callq 0x2e244
testq %rax, %rax
je 0xdc02
movq %rax, %r12
movq 0x1f0(%rax), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0xda9e
movq 0x1f8(%r12), %rdx
movq %rbx, %rdi
movl $0x2, %esi
callq 0xda9e
movq 0x200(%r12), %rdx
movq %rbx, %rdi
movl $0x3, %esi
callq 0xda9e
jmp 0xdc14
leaq 0x3154d(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xdbef
leaq 0x3153c(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xdc00
movq 0x10(%r15), %rdi
leaq 0x52473(%rip), %rdx     # 0x60080
xorl %esi, %esi
callq 0x21c20
movq 0x10(%r15), %rdi
movq %r14, %rsi
callq 0x21710
movq 0x10(%r15), %rdi
movl $0x110, %esi            # imm = 0x110
callq 0x21f4f
movq 0x10(%r15), %rdi
leaq 0x15(%rip), %rsi        # 0xdc4e
callq 0x6344
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xdc88
// File: /workspace/github_c_makefile_star2_O1/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 %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
callq 0x4abf
movq %rax, %r14
cmpl $0x8, %ebx
jae 0xdc7b
callq 0x6454
movzbl %bl, %esi
movq %r14, %rdi
movq %rax, %rdx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4fea
cmpl $0xe, %ebx
je 0xdc61
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x6ad8
movq %rax, %rbx
movq %r14, %rdi
xorl %esi, %esi
callq 0xe03f
movq %rax, %r15
movq %r14, %rdi
callq 0x5651
movzwl 0x1a(%r15), %ecx
addw 0x1c(%r15), %cx
subl %ecx, %eax
movq 0x8(%rbx), %rdi
movswl %ax, %ebp
testq %rdi, %rdi
je 0xdcce
movl %ebp, %esi
callq 0x56f1
cmpq $0x0, 0x10(%rbx)
je 0xdd24
movq %r14, %rdi
movl $0x1, %esi
callq 0xe03f
movq %rax, %r15
movq %r14, %rdi
movl $0x2, %esi
callq 0xe03f
movq 0x28(%rax), %rcx
movzbl 0x10(%rcx), %ecx
movq 0x10(%rbx), %rdi
addw 0x16(%rax), %cx
addw 0x18(%rax), %cx
addw 0x16(%r15), %cx
addw 0x18(%r15), %cx
movswl %cx, %edx
movl %ebp, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x553f
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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 %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xdd71
movq %r14, %rdi
callq 0x80d4
testb %al, %al
je 0xdd82
movq %rbx, %rdi
callq 0x6ad8
movq 0x8(%rax), %rdi
movq %r14, %rsi
callq 0x19f13
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xdc88
leaq 0x313bc(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xdd80
leaq 0x313ab(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xdd91
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xddb0
movq %rbx, %rdi
callq 0x6ad8
movw $0x0, 0x18(%rax)
popq %rbx
retq
leaq 0x3137d(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xddbf
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_mbox.c
// Function: lv_mbox_get_anim_time
uint16_t lv_mbox_get_anim_time(const lv_obj_t * mbox)
{
    LV_ASSERT_OBJ(mbox, LV_OBJX_NAME);

#if LV_USE_ANIMATION
    lv_mbox_ext_t * ext = lv_obj_get_ext_attr(mbox);
    return ext->anim_time;
#else
    (void)mbox;
    return 0;
#endif
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xdf0e
movq %rbx, %rdi
callq 0x6ad8
movzwl 0x18(%rax), %eax
popq %rbx
retq
leaq 0x3121f(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xdf1d
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xdfef
movq %rbx, %rdi
callq 0x6ad8
movq 0x10(%rax), %rdi
testq %rdi, %rdi
je 0xe000
popq %rbx
jmp 0x22131
leaq 0x3113e(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xdffe
movw $0xffff, %ax            # imm = 0xFFFF
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe02a
movq %rbx, %rdi
callq 0x6ad8
movq 0x10(%rax), %rdi
testq %rdi, %rdi
je 0xe03b
popq %rbx
jmp 0x2215d
leaq 0x31103(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe039
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe080
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x6, %bpl
ja 0xe0b2
movzbl %bpl, %ecx
leaq 0x31467(%rip), %rdx     # 0x3f4d0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6697
leaq 0x310ad(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe08f
movq 0x10(%rax), %rdi
movl $0x3, %esi
jmp 0xe0d7
movq 0x10(%rax), %rdi
movl $0x1, %esi
jmp 0xe0d7
movq 0x10(%rax), %rdi
movl $0x2, %esi
jmp 0xe0d7
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x10(%rax), %rdi
xorl %esi, %esi
jmp 0xe0d7
movq 0x10(%rax), %rdi
movl $0x4, %esi
jmp 0xe0d7
movq 0x10(%rax), %rdi
movl $0x5, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x21ccf
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe106
movq %rbx, %rdi
callq 0x6ad8
movq 0x10(%rax), %rdi
testq %rdi, %rdi
je 0xe117
popq %rbx
jmp 0x22104
leaq 0x31027(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe115
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe6a9
movq %rbx, %rdi
callq 0x6ad8
movw %bp, 0x6(%rax)
movzbl 0x8(%rax), %esi
andl $0x3, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xe498
leaq 0x30a84(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe6b8
// File: /workspace/github_c_makefile_star2_O1/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 %r14
pushq %rbx
pushq %rax
movl %esi, %r14d
movq %rdi, %rbx
callq 0x6ad8
movzwl 0x4(%rax), %eax
movl %eax, %ecx
shrl $0xf, %ecx
addl %eax, %ecx
movswl %cx, %ecx
sarl %ecx
subl %ecx, %r14d
leal 0xb4(%r14), %ecx
movswl %cx, %esi
addl %r14d, %eax
addl $0xb4, %eax
movswq %cx, %rcx
imulq $-0x49f49f49, %rcx, %rcx # imm = 0xB60B60B7
shrq $0x20, %rcx
addl %esi, %ecx
movl %ecx, %edx
shrl $0x1f, %edx
shrl $0x8, %ecx
addl %edx, %ecx
imull $0x168, %ecx, %ecx      # imm = 0x168
subl %ecx, %esi
movswl %ax, %edx
movswq %ax, %rax
imulq $-0x49f49f49, %rax, %rax # imm = 0xB60B60B7
shrq $0x20, %rax
addl %edx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
shrl $0x8, %eax
addl %ecx, %eax
imull $0x168, %eax, %eax      # imm = 0x168
subl %eax, %edx
movl $0xffff, %eax           # imm = 0xFFFF
andl %eax, %edx
andl %eax, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x8c60
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe790
movq %rbx, %rdi
callq 0x6ad8
movzbl 0x8(%rax), %esi
shlb $0x2, %bpl
andb $0x4, %bpl
movl %esi, %ecx
andb $-0x5, %cl
orb %bpl, %cl
movb %cl, 0x8(%rax)
andl $0x3, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xe498
leaq 0x3099d(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe79f
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xe818
testb %bpl, %bpl
je 0xe829
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x30915(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xe827
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x8d10
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf075
movq %rbx, %rdi
callq 0x6ad8
movq 0x50(%rax), %rdi
callq 0x6697
movzbl %bpl, %ecx
leal -0x1(%rcx), %edx
cmpb $0x2, %cl
movzbl %dl, %edx
movl $0x1, %esi
cmovael %edx, %esi
movq 0x28(%rax), %rdx
movzbl 0x10(%rdx), %edx
imull %ecx, %edx
movzbl %sil, %ecx
imulw 0x32(%rax), %cx
addl %edx, %ecx
movswl %cx, %esi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xc2ce
leaq 0x300b8(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf084
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
movq %rdx, %rbx
movl %esi, %ebp
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xf226
cmpb $0x1, %bpl
je 0xf237
movzbl %bpl, %eax
testl %eax, %eax
jne 0xf24b
movq %r14, %rdi
movq %rbx, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x5d83
leaq 0x2ff07(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xf235
movq %r14, %rdi
movl $0x1, %esi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %rbp
jmp 0xbe8d
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x6ad8
movq %rax, %r14
movq 0x50(%rax), %rdi
testq %rdi, %rdi
je 0xf3cb
callq 0x1a1ff
cmpb $0x2, %al
sete %cl
addb $0x7, %cl
xorl %edx, %edx
cmpb $0x1, %al
movzbl %cl, %r12d
cmovel %edx, %r12d
jmp 0xf3ce
movb $0x7, %r12b
movq %rbx, %rdi
callq 0x26288
movq %rax, %r15
movq 0x50(%r14), %rdi
callq 0x567b
movl %eax, %ebp
movq %rbx, %rdi
callq 0x567b
addl %ebp, %eax
movswl %ax, %esi
movq %r15, %rdi
callq 0x572f
movq 0x50(%r14), %rdi
movzbl %r12b, %edx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x576d
movq %rbx, %rdi
callq 0x26288
leaq -0x9f1b(%rip), %rsi     # 0x5501
movq %rax, %rdi
callq 0x295b1
movzwl 0x62(%r14), %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xc1d9
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf461
movq %rbx, %rdi
callq 0xf504
cmpw %r14w, %ax
jne 0xf472
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x2fccc(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf470
movzwl %r14w, %esi
movq %rbx, %rdi
callq 0xc1d9
movzbl %bpl, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0xf56f
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf4ec
movq %rbx, %rdi
callq 0x6ad8
movq 0x50(%rax), %rbx
testq %rbx, %rbx
je 0xf4fd
movzbl %bpl, %esi
movq %rbx, %rdi
callq 0x1a196
movq %rbx, %rdi
callq 0x1a1ff
cmpb $0x2, %al
ja 0xf4fd
shlb $0x3, %al
movl $0x80007, %edx          # imm = 0x80007
movl %eax, %ecx
shrl %cl, %edx
movzbl %dl, %edx
movq %rbx, %rdi
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x576d
leaq 0x2fc41(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf4fb
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf52f
movq %rbx, %rdi
callq 0x6ad8
testb $0x1, 0x70(%rax)
jne 0xf540
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xc4db
leaq 0x2fbfe(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf53e
movzwl 0x60(%rax), %eax
imull $0x2493, %eax, %ecx     # imm = 0x2493
shrl $0x10, %ecx
subl %ecx, %eax
movzwl %ax, %ebp
shrl %ebp
addl %ecx, %ebp
shrl $0x2, %ebp
movq %rbx, %rdi
callq 0xc4db
xorl %edx, %edx
divw %bp
movl %edx, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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 %rbx
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf6e0
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %rbx
movq %rax, %rdi
callq 0x80d4
testb %al, %al
je 0xf6f1
movq 0x50(%rbx), %rdi
callq 0x80d4
movq 0x50(%rbx), %rsi
testb %al, %al
je 0xf702
movq %rsi, %rdi
popq %rbx
jmp 0x1a1ff
leaq 0x2fa4d(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf6ef
leaq 0x2f948(%rip), %rdi     # 0x3f040
movq %rbx, %rsi
callq 0x829e
jmp 0xf700
leaq 0x2f937(%rip), %rdi     # 0x3f040
callq 0x829e
jmp 0xf70e
// File: /workspace/github_c_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xf772
cmpb $0x1, %bpl
je 0xf783
movzbl %bpl, %eax
testl %eax, %eax
jne 0xf796
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6697
leaq 0x2f9bb(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xf781
movq %rbx, %rdi
movl $0x1, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xbf18
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x4abf
movq %rax, %r15
movq %rax, %rdi
callq 0x6ad8
testb $0x1, 0x70(%rax)
jne 0xf7c9
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movzwl 0x60(%rax), %eax
imull $0x2493, %eax, %ecx     # imm = 0x2493
shrl $0x10, %ecx
subl %ecx, %eax
movzwl %ax, %esi
shrl %esi
addl %ecx, %esi
shrl $0x2, %esi
movzwl 0x62(%r14), %eax
xorl %edx, %edx
divw %si
leal (%rsi,%rsi,2), %eax
addl %edx, %eax
movw %ax, 0x62(%r14)
movq 0x50(%r14), %rdi
callq 0x6697
movq %rax, %r12
movq 0x28(%rax), %rax
movzbl 0x10(%rax), %ebp
movq %r15, %rdi
callq 0x567b
movzwl %bp, %ecx
movzwl 0x32(%r12), %edx
addw %cx, %dx
imulw 0x62(%r14), %dx
movq 0x50(%r14), %rsi
cwtl
subl %ecx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
addw 0x22(%rsi), %dx
shrl %ecx
subl %edx, %ecx
addw 0x22(%rbx), %cx
movswl %cx, %esi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x5501
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %r15
callq *0x508c9(%rip)          # 0x60320
movl %eax, %ebx
cmpb $0x1, %al
jne 0xfaf5
testb %bpl, %bpl
je 0xfa8c
movzbl %bpl, %eax
cmpl $0x7, %eax
jne 0xfaf5
leaq 0x2fad2(%rip), %rsi     # 0x3f54c
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x6bf5
movq %r15, %rdi
callq 0x6ad8
movq %rax, %r14
cmpw $0x0, (%rax)
sete %al
cmpw $0x0, 0x2(%r14)
sete %cl
orb %al, %cl
jne 0xfae7
xorl %r15d, %r15d
movq 0x8(%r14), %rax
movzwl %r15w, %r15d
movq (%rax,%r15,8), %rdi
testq %rdi, %rdi
je 0xfad0
callq 0x29984
movq 0x8(%r14), %rax
movq $0x0, (%rax,%r15,8)
incl %r15d
movzwl %r15w, %eax
movzwl (%r14), %ecx
movzwl 0x2(%r14), %edx
imull %ecx, %edx
cmpl %eax, %edx
ja 0xfaae
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0xfaf5
callq 0x29984
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xffb4
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x4, %bpl
ja 0xffe7
movzbl %bpl, %ecx
leaq 0x2f586(%rip), %rdx     # 0x3f524
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5d83
jmp 0xffdb
leaq 0x2f179(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xffc3
movq %r14, 0x28(%rax)
jmp 0xffdb
movq %r14, 0x18(%rax)
jmp 0xffdb
movq %r14, 0x20(%rax)
jmp 0xffdb
movq %r14, 0x10(%rax)
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1024c
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0x10068
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r14
movzwl 0x2(%rax), %r15d
movw %bp, 0x2(%rax)
testw %bp, %bp
je 0x10079
movzwl (%r14), %eax
testq %rax, %rax
je 0x10079
movzwl %bp, %esi
movq 0x8(%r14), %rdi
imulq %rax, %rsi
shlq $0x3, %rsi
callq 0x299f8
movq %rax, 0x8(%r14)
cmpw %bp, %r15w
jae 0x1008a
movzwl (%r14), %ecx
imull %ecx, %r15d
movzwl 0x2(%r14), %edx
imull %ecx, %edx
movzwl %r15w, %ecx
leaq (%rax,%rcx,8), %rdi
subl %ecx, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x20a0
jmp 0x1008a
leaq 0x2f0c5(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0x10077
movq 0x8(%r14), %rdi
callq 0x29984
movq $0x0, 0x8(%r14)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1024c
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %r14d
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0x100c4
cmpw $0xb, %r14w
jbe 0x100d5
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2f069(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0x100d3
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r15
movzwl (%rax), %ebp
movw %r14w, (%rax)
movzwl 0x2(%rax), %eax
testq %rax, %rax
sete %cl
testw %r14w, %r14w
sete %dl
orb %cl, %dl
je 0x1010f
movq 0x8(%r15), %rdi
callq 0x29984
movq $0x0, 0x8(%r15)
jmp 0x10154
movq 0x8(%r15), %rdi
leal (,%r14,8), %ecx
movzwl %cx, %esi
imulq %rax, %rsi
callq 0x299f8
movq %rax, 0x8(%r15)
cmpw %r14w, %bp
jae 0x10154
movzwl 0x2(%r15), %ecx
imull %ecx, %ebp
movzwl (%r15), %edx
imull %ecx, %edx
movzwl %bp, %ecx
leaq (%rax,%rcx,8), %rdi
subl %ecx, %edx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x20a0
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1024c
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_set_cell_value
void lv_table_set_cell_value(lv_obj_t * table, uint16_t row, uint16_t col, const char * txt)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);
    LV_ASSERT_NULL(txt);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_value: invalid row or column");
        return;
    }
    uint32_t cell = row * ext->col_cnt + col;
    lv_table_cell_format_t format;

    /*Save the format byte*/
    if(ext->cell_data[cell]) {
        format.format_byte = ext->cell_data[cell][0];
    }
    /*Initialize the format byte*/
    else {
#if LV_USE_BIDI
        lv_bidi_dir_t base_dir = lv_obj_get_base_dir(table);
        if(base_dir == LV_BIDI_DIR_LTR) format.s.align = LV_LABEL_ALIGN_LEFT;
        else if(base_dir == LV_BIDI_DIR_RTL) format.s.align = LV_LABEL_ALIGN_RIGHT;
        else if(base_dir == LV_BIDI_DIR_AUTO) format.s.align = lv_bidi_detect_base_dir(txt);
#else
        format.s.align = LV_LABEL_ALIGN_LEFT;
#endif

        format.s.right_merge = 0;
        format.s.type        = 0;
        format.s.crop        = 0;
    }

    ext->cell_data[cell] = lv_mem_realloc(ext->cell_data[cell], strlen(txt) + 2); /*+1: trailing '\0; +1: format byte*/
    strcpy(ext->cell_data[cell] + 1, txt);  /*+1 to skip the format byte*/

    ext->cell_data[cell][0] = format.format_byte;
    refr_size(table);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movl %edx, %ebp
movl %esi, %r12d
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0x101cc
movq %r14, %rdi
callq 0x80d4
testb %al, %al
je 0x101dd
movq %rbx, %rdi
callq 0x6ad8
cmpw %r12w, 0x2(%rax)
jbe 0x101ee
movq %rax, %r15
movzwl (%rax), %eax
cmpw %bp, %ax
jbe 0x101ee
movzwl %r12w, %ecx
imull %ecx, %eax
movzwl %bp, %r13d
addl %eax, %r13d
movq 0x8(%r15), %rax
movq (%rax,%r13,8), %r12
testq %r12, %r12
je 0x101fd
movb (%r12), %bpl
jmp 0x101ff
leaq 0x2ef61(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0x101db
leaq 0x2ef50(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0x101ec
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
movq %r14, %rdi
callq 0x2070
leaq 0x2(%rax), %rsi
movq %r12, %rdi
callq 0x299f8
movq 0x8(%r15), %rcx
movq %rax, (%rcx,%r13,8)
movq 0x8(%r15), %rax
movq (%rax,%r13,8), %rdi
incq %rdi
movq %r14, %rsi
callq 0x2040
movq 0x8(%r15), %rax
movq (%rax,%r13,8), %rax
movb %bpl, (%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1024c
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x6ad8
movq %rax, %r14
movzwl (%rax), %eax
movw $0x1, %bp
movw $0x1, %r15w
testq %rax, %rax
je 0x10286
xorl %ecx, %ecx
xorl %r15d, %r15d
addw 0x30(%r14,%rcx,2), %r15w
incq %rcx
cmpq %rcx, %rax
jne 0x10275
incl %r15d
cmpw $0x0, 0x2(%r14)
je 0x102ad
xorl %ebp, %ebp
xorl %r12d, %r12d
movzwl %r12w, %esi
movq %rbx, %rdi
callq 0x1090c
addl %eax, %ebp
incl %r12d
cmpw 0x2(%r14), %r12w
jb 0x10293
incl %ebp
movq %rbx, %rdi
callq 0x6697
addw 0x1a(%rax), %r15w
addw 0x1c(%rax), %r15w
addw 0x16(%rax), %bp
addw 0x18(%rax), %bp
movswl %r15w, %esi
movswl %bp, %edx
movq %rbx, %rdi
callq 0x553f
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4c36
// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
movl %edx, %ebp
movl %esi, %r14d
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0x10307
cmpw $0xb, %r14w
jbe 0x10318
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x2ee26(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0x10316
movq %rbx, %rdi
callq 0x6ad8
movzwl %r14w, %ecx
movw %bp, 0x30(%rax,%rcx,2)
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1024c