LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cb.c
// Function: lv_cb_design
static bool lv_cb_design(lv_obj_t * cb, const lv_area_t * mask, lv_design_mode_t mode)
{
    bool result = true;

    if(mode == LV_DESIGN_COVER_CHK) {
        /*Return false if the object is not covers the mask_p area*/
        result = ancestor_bg_design(cb, mask, mode);
    } else if(mode == LV_DESIGN_DRAW_MAIN || mode == LV_DESIGN_DRAW_POST) {
        lv_cb_ext_t * cb_ext      = lv_obj_get_ext_attr(cb);
        lv_btn_ext_t * bullet_ext = lv_obj_get_ext_attr(cb_ext->bullet);

        /*Be sure the state of the bullet is the same as the parent button*/
        bullet_ext->state = cb_ext->bg_btn.state;

        result = ancestor_bg_design(cb, mask, mode);

    } else {
        result = ancestor_bg_design(cb, mask, mode);
    }

    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
cmpb $0x1, %bpl
ja 0x99bf
movq %r14, %rdi
callq 0x6ad8
movq %rax, %r15
movq 0x38(%rax), %rdi
callq 0x6ad8
movb 0x30(%r15), %cl
andb $0x7, %cl
movb 0x30(%rax), %dl
andb $-0x8, %dl
orb %cl, %dl
movb %dl, 0x30(%rax)
movq 0x568ea(%rip), %rax     # 0x602b0
movzbl %bpl, %edx
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmpq *%rax
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cb.c
// Function: lv_cb_set_style
void lv_cb_set_style(lv_obj_t * cb, lv_cb_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(cb, LV_OBJX_NAME);

    lv_cb_ext_t * ext = lv_obj_get_ext_attr(cb);

    switch(type) {
        case LV_CB_STYLE_BG:
            lv_btn_set_style(cb, LV_BTN_STYLE_REL, style);
            lv_btn_set_style(cb, LV_BTN_STYLE_PR, style);
            lv_btn_set_style(cb, LV_BTN_STYLE_TGL_REL, style);
            lv_btn_set_style(cb, LV_BTN_STYLE_TGL_PR, style);
            lv_btn_set_style(cb, LV_BTN_STYLE_INA, style);
            break;
        case LV_CB_STYLE_BOX_REL: lv_btn_set_style(ext->bullet, LV_BTN_STYLE_REL, style); break;
        case LV_CB_STYLE_BOX_PR: lv_btn_set_style(ext->bullet, LV_BTN_STYLE_PR, style); break;
        case LV_CB_STYLE_BOX_TGL_REL: lv_btn_set_style(ext->bullet, LV_BTN_STYLE_TGL_REL, style); break;
        case LV_CB_STYLE_BOX_TGL_PR: lv_btn_set_style(ext->bullet, LV_BTN_STYLE_TGL_PR, style); break;
        case LV_CB_STYLE_BOX_INA: lv_btn_set_style(ext->bullet, LV_BTN_STYLE_INA, style); break;
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %rbx
movl %esi, %ebp
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0x9a98
movq %r14, %rdi
callq 0x6ad8
cmpb $0x5, %bpl
ja 0x9ae7
movzbl %bpl, %ecx
leaq 0x35733(%rip), %rdx     # 0x3f180
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %r14, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x1353c
movq %r14, %rdi
movl $0x1, %esi
movq %rbx, %rdx
callq 0x1353c
movq %r14, %rdi
movl $0x2, %esi
movq %rbx, %rdx
callq 0x1353c
movq %r14, %rdi
movl $0x3, %esi
movq %rbx, %rdx
callq 0x1353c
movq %r14, %rdi
jmp 0x9ad6
leaq 0x35695(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0x9aa7
movq 0x38(%rax), %rdi
movl $0x3, %esi
jmp 0x9adb
movq 0x38(%rax), %rdi
movl $0x1, %esi
jmp 0x9adb
movq 0x38(%rax), %rdi
movl $0x2, %esi
jmp 0x9adb
movq 0x38(%rax), %rdi
xorl %esi, %esi
jmp 0x9adb
movq 0x38(%rax), %rdi
movl $0x4, %esi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %rbp
jmp 0x1353c
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cb.c
// Function: lv_bullet_design
static bool lv_bullet_design(lv_obj_t * bullet, const lv_area_t * mask, lv_design_mode_t mode)
{
    if(mode == LV_DESIGN_COVER_CHK) {
        return ancestor_bullet_design(bullet, mask, mode);
    } else if(mode == LV_DESIGN_DRAW_MAIN) {
#if LV_USE_GROUP
        /* If the check box is the active in a group and
         * the background is not visible (transparent)
         * then activate the style of the bullet*/
        const lv_style_t * style_ori  = lv_obj_get_style(bullet);
        lv_obj_t * bg                 = lv_obj_get_parent(bullet);
        const lv_style_t * style_page = lv_obj_get_style(bg);
        lv_group_t * g                = lv_obj_get_group(bg);
        if(style_page->body.opa == LV_OPA_TRANSP) { /*Is the Background visible?*/
            if(lv_group_get_focused(g) == bg) {
                lv_style_t * style_mod;
                style_mod       = lv_group_mod_style(g, style_ori);
                bullet->style_p = style_mod; /*Temporally change the style to the activated */
            }
        }
#endif
        ancestor_bullet_design(bullet, mask, mode);

#if LV_USE_GROUP
        bullet->style_p = style_ori; /*Revert the style*/
#endif
    } else if(mode == LV_DESIGN_DRAW_POST) {
        ancestor_bullet_design(bullet, mask, mode);
    }

    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
testl %edx, %edx
je 0x9b44
cmpl $0x1, %ebp
je 0x9b32
cmpl $0x2, %ebp
jne 0x9baa
movq 0x567a0(%rip), %rax     # 0x602b8
movzbl %bpl, %edx
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmpq *%rax
movzbl %bpl, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq *0x56776(%rip)          # 0x602b8
jmp 0x9baa
movq %rbx, %rdi
callq 0x6697
movq %rax, %r13
movq %rbx, %rdi
callq 0x4abf
movq %rax, %r12
movq %rax, %rdi
callq 0x6697
movq %rax, %r15
movq %r12, %rdi
callq 0x4ea3
cmpb $0x0, 0x8(%r15)
movq %r13, %r15
jne 0x9b96
movq %rax, %rdi
movq %rax, %r13
callq 0x2a39
cmpq %r12, %rax
jne 0x9b96
movq %r13, %rdi
movq %r15, %rsi
callq 0x2ac5
movq %rax, 0x48(%rbx)
movzbl %bpl, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq *0x56712(%rip)          # 0x602b8
movq %r15, 0x48(%rbx)
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cb.c
// Function: lv_cb_get_style
const lv_style_t * lv_cb_get_style(const lv_obj_t * cb, lv_cb_style_t type)
{
    LV_ASSERT_OBJ(cb, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_cb_ext_t * ext        = lv_obj_get_ext_attr(cb);

    switch(type) {
        case LV_CB_STYLE_BG: style = lv_btn_get_style(cb, LV_BTN_STYLE_REL); break;
        case LV_CB_STYLE_BOX_REL: style = lv_btn_get_style(ext->bullet, LV_BTN_STYLE_REL); break;
        case LV_CB_STYLE_BOX_PR: style = lv_btn_get_style(ext->bullet, LV_BTN_STYLE_PR); break;
        case LV_CB_STYLE_BOX_TGL_REL: style = lv_btn_get_style(ext->bullet, LV_BTN_STYLE_TGL_REL); break;
        case LV_CB_STYLE_BOX_TGL_PR: style = lv_btn_get_style(ext->bullet, LV_BTN_STYLE_TGL_PR); break;
        case LV_CB_STYLE_BOX_INA: style = lv_btn_get_style(ext->bullet, LV_BTN_STYLE_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 0x9c62
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x5, %bpl
ja 0x9cb0
movzbl %bpl, %ecx
leaq 0x35544(%rip), %rdx     # 0x3f198
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
jmp 0x9c98
leaq 0x354cb(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0x9c71
movq 0x38(%rax), %rdi
movl $0x3, %esi
jmp 0x9ca5
movq 0x38(%rax), %rdi
movl $0x1, %esi
jmp 0x9ca5
movq 0x38(%rax), %rdi
movl $0x2, %esi
jmp 0x9ca5
movq 0x38(%rax), %rdi
xorl %esi, %esi
jmp 0x9ca5
movq 0x38(%rax), %rdi
movl $0x4, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x137a1
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_cpicker.c
// Function: lv_cpicker_set_style
void lv_cpicker_set_style(lv_obj_t * cpicker, lv_cpicker_style_t type, lv_style_t * style)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    switch(type) {
    case LV_CPICKER_STYLE_MAIN:
        lv_obj_set_style(cpicker, style);
        break;
    case LV_CPICKER_STYLE_INDICATOR:
        ext->indic.style = style;
        lv_obj_invalidate(cpicker);
        break;
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xab83
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x1, %bpl
je 0xab94
movzbl %bpl, %eax
testl %eax, %eax
jne 0xaba4
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x5d83
leaq 0x345aa(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xab92
movq %r14, 0x8(%rax)
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x4c36
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_set_type
void lv_cpicker_set_type(lv_obj_t * cpicker, lv_cpicker_type_t type)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    if(ext->type == type) return;

    ext->type = type;
    lv_obj_refresh_ext_draw_pad(cpicker);
    refr_indic_pos(cpicker);

    lv_obj_invalidate(cpicker);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xad68
movq %rbx, %rdi
callq 0x6ad8
movb 0x24(%rax), %cl
movl %ecx, %edx
shrb $0x3, %dl
andb $0x1, %dl
cmpb %bpl, %dl
jne 0xad79
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x343c5(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xad77
shlb $0x3, %bpl
andb $0x8, %bpl
andb $-0x9, %cl
orb %bpl, %cl
movb %cl, 0x24(%rax)
movq %rbx, %rdi
callq 0x64f5
movq %rbx, %rdi
callq 0xaba9
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_cpicker.c
// Function: lv_cpicker_set_hsv
bool lv_cpicker_set_hsv(lv_obj_t * cpicker, lv_color_hsv_t hsv)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    if (hsv.h > 360) hsv.h %= 360;
    if (hsv.s > 100) hsv.s = 100;
    if (hsv.v > 100) hsv.v = 100;

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    if (ext->hsv.h == hsv.h && ext->hsv.s == hsv.s && ext->hsv.v == hsv.v) return false;

    ext->hsv = hsv;

    refr_indic_pos(cpicker);

    if (ext->preview && ext->type == LV_CPICKER_TYPE_DISC) {
        lv_obj_invalidate(cpicker);
    }

    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xae82
movl %ebp, %r15d
shrl $0x18, %r15d
movl %ebp, %r12d
shrl $0x10, %r12d
movzwl %bp, %eax
imulq $0xb60b61, %rax, %rcx   # imm = 0xB60B61
shrq $0x20, %rcx
imull $0x168, %ecx, %ecx      # imm = 0x168
movl %ebp, %r13d
subl %ecx, %r13d
cmpl $0x169, %eax            # imm = 0x169
cmovbl %ebp, %r13d
movl %ebp, %eax
andl $0xff0000, %eax         # imm = 0xFF0000
cmpl $0x640001, %eax         # imm = 0x640001
movl $0x64, %eax
cmovael %eax, %r12d
cmpl $0x65000000, %ebp       # imm = 0x65000000
cmovael %eax, %r15d
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r14
cmpw %r13w, (%rax)
jne 0xae93
cmpb %r12b, 0x2(%r14)
jne 0xae93
cmpb %r15b, 0x3(%r14)
jne 0xae93
xorl %ebp, %ebp
jmp 0xaebc
leaq 0x342ab(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xae91
movw %r13w, (%r14)
movb %r12b, 0x2(%r14)
movb %r15b, 0x3(%r14)
movq %rbx, %rdi
callq 0xaba9
movb 0x24(%r14), %al
notb %al
movb $0x1, %bpl
testb $0x18, %al
jne 0xaebc
movq %rbx, %rdi
callq 0x4c36
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_set_color
bool lv_cpicker_set_color(lv_obj_t * cpicker, lv_color_t color)
{
    lv_color32_t c32;
    c32.full = lv_color_to32(color);

    return lv_cpicker_set_hsv(cpicker,
            lv_color_rgb_to_hsv(c32.ch.red, c32.ch.green, c32.ch.blue));
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movzwl %si, %eax
shrl $0xb, %eax
imull $0x107, %eax, %edi      # imm = 0x107
addl $0x7, %edi
shrl $0x5, %edi
movl %esi, %eax
shrl $0x5, %eax
andl $0x3f, %eax
andl $0x1f, %esi
imull $0x107, %esi, %edx      # imm = 0x107
addl $0x7, %edx
shrl $0x5, %edx
imull $0x40c, %eax, %eax      # imm = 0x40C
addl $0xc, %eax
movzbl %ah, %esi
movl $0xff, %eax
andl %eax, %edx
andl %eax, %edi
callq 0x2a116
movq %rbx, %rdi
movl %eax, %esi
popq %rbx
jmp 0xadf8
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_set_color_mode
void lv_cpicker_set_color_mode(lv_obj_t * cpicker, lv_cpicker_color_mode_t mode)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    ext->color_mode = mode;
    refr_indic_pos(cpicker);
    lv_obj_invalidate(cpicker);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xafb0
movq %rbx, %rdi
callq 0x6ad8
movb 0x24(%rax), %cl
andb $0x3, %bpl
andb $-0x4, %cl
orb %bpl, %cl
movb %cl, 0x24(%rax)
movq %rbx, %rdi
callq 0xaba9
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4c36
leaq 0x3417d(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xafbf
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_set_indic_colored
void lv_cpicker_set_indic_colored(lv_obj_t * cpicker, bool en)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    ext->indic.colored = en ? 1 : 0;
    invalidate_indic(cpicker);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xb032
movq %rbx, %rdi
callq 0x6ad8
movb 0x14(%rax), %cl
andb $-0x2, %cl
orb %bpl, %cl
movb %cl, 0x14(%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xb043
leaq 0x340fb(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xb041
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_set_preview
void lv_cpicker_set_preview(lv_obj_t * cpicker, bool en)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    ext->preview = en ? 1 : 0;
    lv_obj_invalidate(cpicker);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xb0a7
movq %rbx, %rdi
callq 0x6ad8
movb 0x24(%rax), %cl
shlb $0x4, %bpl
andb $-0x11, %cl
orb %bpl, %cl
movb %cl, 0x24(%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4c36
leaq 0x34086(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xb0b6
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_get_style
const lv_style_t * lv_cpicker_get_style(const lv_obj_t * cpicker, lv_cpicker_style_t type)
{
    LV_ASSERT_OBJ(cpicker, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    switch(type) {
    case LV_CPICKER_STYLE_MAIN:
        return lv_obj_get_style(cpicker);
    case LV_CPICKER_STYLE_INDICATOR:
        return ext->indic.style;
    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 0xb14a
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x1, %bpl
je 0xb15b
movzbl %bpl, %eax
testl %eax, %eax
jne 0xb161
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6697
leaq 0x33fe3(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xb159
movq 0x8(%rax), %rax
jmp 0xb163
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_cpicker.c
// Function: angle_to_mode_color
static lv_color_t angle_to_mode_color(lv_obj_t * cpicker, uint16_t angle)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    lv_color_t color;
    switch(ext->color_mode)
    {
    default:
    case LV_CPICKER_COLOR_MODE_HUE:
        color = lv_color_hsv_to_rgb(angle % 360, ext->hsv.s, ext->hsv.v);
        break;
    case LV_CPICKER_COLOR_MODE_SATURATION:
        color = lv_color_hsv_to_rgb(ext->hsv.h, ((angle % 360) * 100) / 360, ext->hsv.v);
        break;
    case LV_CPICKER_COLOR_MODE_VALUE:
        color = lv_color_hsv_to_rgb(ext->hsv.h, ext->hsv.s, ((angle % 360) * 100) / 360);
        break;
    }
    return color;
}

// Assembly:
pushq %rbx
movl %esi, %ebx
callq 0x6ad8
movzbl 0x24(%rax), %ecx
andl $0x3, %ecx
leaq 0x33fab(%rip), %rdx     # 0x3f240
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movzwl %bx, %ecx
imull $0x2d83, %ecx, %ecx     # imm = 0x2D83
shrl $0x16, %ecx
imull $0x168, %ecx, %ecx      # imm = 0x168
subl %ecx, %ebx
movzbl 0x2(%rax), %esi
movzbl 0x3(%rax), %edx
movzwl %bx, %edi
jmp 0xb315
movzwl (%rax), %edi
movzwl %bx, %ecx
imull $0x2d83, %ecx, %ecx     # imm = 0x2D83
shrl $0x16, %ecx
imull $0x168, %ecx, %ecx      # imm = 0x168
subl %ecx, %ebx
imull $0x64, %ebx, %ecx
movzwl %cx, %ecx
imull $0x2d83, %ecx, %esi     # imm = 0x2D83
shrl $0x16, %esi
movzbl 0x3(%rax), %edx
jmp 0xb315
movzwl (%rax), %edi
movzbl 0x2(%rax), %esi
movzwl %bx, %eax
imull $0x2d83, %eax, %eax     # imm = 0x2D83
shrl $0x16, %eax
imull $0x168, %eax, %eax      # imm = 0x168
subl %eax, %ebx
imull $0x64, %ebx, %eax
movzwl %ax, %eax
imull $0x2d83, %eax, %edx     # imm = 0x2D83
shrl $0x16, %edx
popq %rbx
jmp 0x29fe4
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: get_indic_area
static lv_area_t get_indic_area(lv_obj_t * cpicker)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    const lv_style_t * style_main = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
    const lv_style_t * style_indic = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_INDICATOR);

    uint16_t r = 0;
    if(ext->type == LV_CPICKER_TYPE_DISC) r = style_main->line.width / 2;
    else if(ext->type == LV_CPICKER_TYPE_RECT) {
        lv_coord_t h = lv_obj_get_height(cpicker);
        r = h / 2;
    }

    lv_area_t indic_area;
    indic_area.x1 = cpicker->coords.x1 + ext->indic.pos.x - r - style_indic->body.padding.left;
    indic_area.y1 = cpicker->coords.y1 + ext->indic.pos.y - r - style_indic->body.padding.right;
    indic_area.x2 = cpicker->coords.x1 + ext->indic.pos.x + r + style_indic->body.padding.top;
    indic_area.y2 = cpicker->coords.y1 + ext->indic.pos.y + r + style_indic->body.padding.bottom;

    return indic_area;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x6ad8
movq %rax, %r15
movq %r14, %rdi
xorl %esi, %esi
callq 0xb115
movq %rax, %r12
movq %r14, %rdi
movl $0x1, %esi
callq 0xb115
movq %rax, %rbx
testb $0x8, 0x24(%r15)
jne 0xb35c
movq %r14, %rdi
callq 0x567b
jmp 0xb362
movzwl 0x3e(%r12), %eax
movzwl %ax, %ecx
shrl $0xf, %ecx
addl %eax, %ecx
movswl %cx, %esi
shrl %esi
movzwl 0x20(%r14), %ecx
movzwl 0x10(%r15), %eax
addl %ecx, %eax
movl $0xffff, %ecx           # imm = 0xFFFF
movl %esi, %edi
andl %ecx, %edi
movzwl 0x1a(%rbx), %r8d
addl %edi, %r8d
movzwl 0x22(%r14), %r9d
movzwl 0x12(%r15), %edx
addl %r9d, %edx
movzwl 0x1c(%rbx), %r9d
addl %edi, %r9d
leal (%rsi,%rax), %edi
subl %r8d, %eax
addw 0x16(%rbx), %di
addl %edx, %esi
subl %r9d, %edx
addw 0x18(%rbx), %si
movzwl %si, %esi
shlq $0x30, %rsi
movzwl %di, %edi
shlq $0x20, %rdi
orq %rsi, %rdi
shll $0x10, %edx
orq %rdi, %rdx
andl %ecx, %eax
orq %rdx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: next_color_mode
static void next_color_mode(lv_obj_t * cpicker)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    ext->color_mode = (ext->color_mode + 1) % 3;
    refr_indic_pos(cpicker);
    lv_obj_invalidate(cpicker);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x6ad8
movb 0x24(%rax), %cl
movl %ecx, %edx
andb $0x3, %dl
incb %dl
movzbl %dl, %edx
imull $0x56, %edx, %esi
shrl $0x8, %esi
leal (%rsi,%rsi,2), %esi
subb %sil, %dl
andb $-0x4, %cl
orb %dl, %cl
movb %cl, 0x24(%rax)
movq %rbx, %rdi
callq 0xaba9
movq %rbx, %rdi
popq %rbx
jmp 0x4c36
nop
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_scrl_signal
static lv_res_t lv_ddlist_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    lv_obj_t * ddlist = lv_obj_get_parent(scrl);

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

    return res;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %r14
callq *0x54955(%rip)          # 0x602d8
movl %eax, %ebx
cmpb $0x1, %al
jne 0xb9f8
movq %r14, %rdi
callq 0x4abf
movq %rax, %r15
testb %bpl, %bpl
je 0xb9e8
movzbl %bpl, %eax
cmpl $0xb, %eax
je 0xb9cd
cmpl $0x6, %eax
jne 0xb9f8
movq %r15, %rdi
xorl %esi, %esi
callq 0xbf18
movzwl 0x1a(%rax), %ecx
movzwl 0x1c(%rax), %eax
cmpw %ax, %cx
cmovgl %ecx, %eax
cmpw %ax, 0x5c(%r14)
jge 0xb9f8
movw %ax, 0x5c(%r14)
jmp 0xb9f8
callq 0x3784
movq %rax, %rdi
callq 0x3863
testb %al, %al
jne 0xb9f8
movq %r15, %rdi
callq 0xc6e5
jmp 0xb9f8
movq %r15, %rdi
callq 0x6ad8
movq $0x0, 0x50(%rax)
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_ddlist.c
// Function: lv_ddlist_set_options
void lv_ddlist_set_options(lv_obj_t * ddlist, const char * options)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);
    LV_ASSERT_STR(options);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

    lv_label_set_text(ext->label, options);

    lv_ddlist_refr_width(ddlist);

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

    lv_ddlist_refr_size(ddlist, false);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xbe0f
movq %r14, %rdi
callq 0x80d4
testb %al, %al
je 0xbe20
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r15
movw $0x0, 0x60(%rax)
xorl %eax, %eax
movzwl %ax, %ecx
movzbl (%r14,%rcx), %ecx
cmpl $0xa, %ecx
je 0xbe06
testl %ecx, %ecx
jne 0xbe0b
jmp 0xbe31
incw 0x60(%r15)
incl %eax
jmp 0xbdf3
leaq 0x3331e(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xbe1e
leaq 0x3330d(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xbe2f
incw 0x60(%r15)
movl $0x0, 0x62(%r15)
movq 0x50(%r15), %rdi
movq %r14, %rsi
callq 0x19f13
movq %rbx, %rdi
callq 0xbf7e
movq 0x50(%r15), %rdi
callq 0x1a1ff
cmpb $0x2, %al
ja 0xbe7e
shlb $0x3, %al
movl $0x80007, %edx          # imm = 0x80007
movl %eax, %ecx
shrl %cl, %edx
movq 0x50(%r15), %rdi
movzbl %dl, %edx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x576d
movq %rbx, %rdi
xorl %esi, %esi
popq %rbx
popq %r14
popq %r15
jmp 0xc07f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_style
void lv_ddlist_set_style(lv_obj_t * ddlist, lv_ddlist_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xbed6
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x2, %bpl
je 0xbeff
movzbl %bpl, %ecx
cmpl $0x1, %ecx
je 0xbee7
testl %ecx, %ecx
jne 0xbf13
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x25d1f
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0xbf7e
leaq 0x33257(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xbee5
movq %r14, 0x58(%rax)
movq %rbx, %rdi
callq 0x26288
movq %rax, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x64f5
movq %rbx, %rdi
movl $0x2, %esi
movq %r14, %rdx
popq %rbx
popq %r14
popq %rbp
jmp 0x25d1f
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_get_style
const lv_style_t * lv_ddlist_get_style(const lv_obj_t * ddlist, lv_ddlist_style_t type)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

    /*To avoid warning*/
    return NULL;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xbf4b
movq %rbx, %rdi
callq 0x6ad8
cmpb $0x2, %bpl
je 0xbf62
movzbl %bpl, %ecx
cmpl $0x1, %ecx
je 0xbf5c
testl %ecx, %ecx
jne 0xbf75
movq %rbx, %rdi
xorl %esi, %esi
jmp 0xbf6a
leaq 0x331e2(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xbf5a
movq 0x58(%rax), %rax
jmp 0xbf77
movq %rbx, %rdi
movl $0x2, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x25ddf
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_ddlist.c
// Function: lv_ddlist_refr_width
static void lv_ddlist_refr_width(lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext          = lv_obj_get_ext_attr(ddlist);

    /*Save the current x coordinate because it should be kept after the refrsh*/
    lv_coord_t x;
    if(lv_obj_get_base_dir(ddlist) == LV_BIDI_DIR_RTL) x = lv_obj_get_x(ddlist) + lv_obj_get_width(ddlist);
    else x = lv_obj_get_x(ddlist);

    /*Set the TIGHT fit horizontally the set the width to the content*/
    lv_page_set_scrl_fit2(ddlist, LV_FIT_TIGHT, lv_page_get_scrl_fit_bottom(ddlist));

    /*Revert FILL fit to fill the parent with the options area. It allows to RIGHT/CENTER align the text*/
    lv_page_set_scrl_fit2(ddlist, LV_FIT_FILL, lv_page_get_scrl_fit_bottom(ddlist));

    if(lv_obj_get_base_dir(ddlist) == LV_BIDI_DIR_RTL) lv_obj_set_x(ddlist, x - lv_obj_get_width(ddlist));
    else lv_obj_set_x(ddlist, x);

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x6ad8
movq %rax, %rbx
movq %r14, %rdi
callq 0x4abc
movl %eax, %r15d
movq %r14, %rdi
callq 0x4bc6
movl %eax, %ebp
cmpb $0x1, %r15b
jne 0xbfb5
movq %r14, %rdi
callq 0x5651
addl %eax, %ebp
movq %r14, %rdi
callq 0x26288
movq %rax, %rdi
callq 0x22797
movl %eax, %r15d
movq %r14, %rdi
callq 0x26288
movzbl %r15b, %ecx
movq %rax, %rdi
movl $0x1, %esi
movl $0x1, %edx
movl %ecx, %r8d
callq 0x22602
movq %r14, %rdi
callq 0x26288
movq %rax, %rdi
callq 0x22797
movl %eax, %r15d
movq %r14, %rdi
callq 0x26288
movzbl %r15b, %ecx
movq %rax, %rdi
movl $0x3, %esi
movl $0x3, %edx
movl %ecx, %r8d
callq 0x22602
movq %r14, %rdi
callq 0x4abc
cmpb $0x1, %al
jne 0xc033
movq %r14, %rdi
callq 0x5651
subl %eax, %ebp
movswl %bp, %esi
movq %r14, %rdi
callq 0x54c3
movq 0x50(%rbx), %rdi
callq 0x1a1ff
cmpb $0x2, %al
ja 0xc074
shlb $0x3, %al
movl $0x80007, %edx          # imm = 0x80007
movl %eax, %ecx
shrl %cl, %edx
movq 0x50(%rbx), %rdi
movzbl %dl, %edx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x576d
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_ddlist.c
// Function: lv_ddlist_set_selected
void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

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

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

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xc1ff
movq %rbx, %rdi
callq 0x6ad8
cmpw %bp, 0x62(%rax)
jne 0xc210
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x32f2e(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xc20e
movl 0x60(%rax), %ecx
movl %ecx, %edx
decl %edx
cmpw %bp, %cx
cmovbel %edx, %ebp
movw %bp, 0x62(%rax)
movw %bp, 0x64(%rax)
testb $0x1, 0x66(%rax)
jne 0xc236
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xc244
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_ddlist.c
// Function: lv_ddlist_pos_current_option
static void lv_ddlist_pos_current_option(lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext          = lv_obj_get_ext_attr(ddlist);
    const lv_style_t * style       = lv_obj_get_style(ddlist);
    const lv_font_t * font         = style->text.font;
    lv_coord_t font_h              = lv_font_get_line_height(font);
    const lv_style_t * label_style = lv_obj_get_style(ext->label);
    lv_obj_t * scrl                = lv_page_get_scrl(ddlist);

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

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x6ad8
movq %rax, %r15
movq %rbx, %rdi
callq 0x6697
movq 0x28(%rax), %rax
movzbl 0x10(%rax), %ebp
movq 0x50(%r15), %rdi
callq 0x6697
movq %rax, %r12
movq %rbx, %rdi
callq 0x26288
movq %rax, %r14
movq %rbx, %rdi
callq 0x567b
movzwl %bp, %ecx
movq 0x50(%r15), %rdx
movzwl 0x32(%r12), %esi
addw %cx, %si
imulw 0x62(%r15), %si
cwtl
subl %ecx, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
shrl %ecx
addw 0x22(%rdx), %si
subl %esi, %ecx
addw 0x22(%r14), %cx
movswl %cx, %esi
movq %r14, %rdi
callq 0x5501
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_ddlist.c
// Function: lv_ddlist_set_fix_height
void lv_ddlist_set_fix_height(lv_obj_t * ddlist, lv_coord_t h)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

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

    ext->fix_height = h;

    lv_ddlist_refr_size(ddlist, false);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xc2f4
movq %rbx, %rdi
callq 0x6ad8
cmpw %bp, 0x68(%rax)
jne 0xc305
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x32e39(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xc303
movw %bp, 0x68(%rax)
movq %rbx, %rdi
xorl %esi, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xc07f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_fix_width
void lv_ddlist_set_fix_width(lv_obj_t * ddlist, lv_coord_t w)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

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

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

    lv_ddlist_refr_size(ddlist, false);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xc362
movq %rbx, %rdi
callq 0x6ad8
movq %rax, %r14
movq %rbx, %rdi
callq 0x22797
movzbl %al, %ecx
movq %rbx, %rdi
testw %bp, %bp
je 0xc373
xorl %esi, %esi
xorl %edx, %edx
movl %ecx, %r8d
callq 0x22602
movswl %bp, %esi
movq %rbx, %rdi
callq 0x56f1
jmp 0xc385
leaq 0x32dcb(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xc371
movl $0x1, %esi
movl $0x1, %edx
movl %ecx, %r8d
callq 0x22602
movq 0x50(%r14), %rdi
callq 0x1a1ff
cmpb $0x2, %al
ja 0xc3b1
shlb $0x3, %al
movl $0x80007, %edx          # imm = 0x80007
movl %eax, %ecx
shrl %cl, %edx
movq 0x50(%r14), %rdi
movzbl %dl, %edx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x576d
movq %rbx, %rdi
xorl %esi, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0xc07f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_draw_arrow
void lv_ddlist_set_draw_arrow(lv_obj_t * ddlist, bool en)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    /*Set the flag*/
    ext->draw_arrow = en ? 1 : 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xc3ef
movq %r14, %rdi
callq 0x6ad8
movb 0x66(%rax), %cl
shlb $0x2, %bl
andb $-0x5, %cl
orb %bl, %cl
movb %cl, 0x66(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x32d3e(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xc3fe
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_stay_open
void lv_ddlist_set_stay_open(lv_obj_t * ddlist, bool en)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

    /*Set the flag*/
    ext->stay_open = en ? 1 : 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xc430
movq %r14, %rdi
callq 0x6ad8
movb 0x66(%rax), %cl
shlb $0x3, %bl
andb $-0x9, %cl
orb %bl, %cl
movb %cl, 0x66(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x32cfd(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xc43f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_set_align
void lv_ddlist_set_align(lv_obj_t * ddlist, lv_label_align_t align)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xc495
movq %r14, %rdi
callq 0x6ad8
movq %rax, %r14
movq 0x50(%rax), %rdi
movzbl %bl, %ebp
movl %ebp, %esi
callq 0x1a196
cmpb $0x2, %bpl
ja 0xc4a6
shlb $0x3, %bl
movl $0x80007, %eax          # imm = 0x80007
movl %ebx, %ecx
shrl %cl, %eax
movq 0x50(%r14), %rdi
movzbl %al, %edx
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
popq %rbx
popq %r14
popq %rbp
jmp 0x576d
leaq 0x32c98(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xc4a4
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_get_selected_str
void lv_ddlist_get_selected_str(const lv_obj_t * ddlist, char * buf, uint16_t buf_size)
{
    LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);

    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

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

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

    buf[c] = '\0';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xc56e
movq %r14, %rdi
callq 0x6ad8
movq %rax, %r15
movq 0x50(%rax), %rdi
callq 0x1a239
movq %rax, %r14
movq %rax, %rdi
callq 0x2070
testq %rax, %rax
je 0xc57f
movzwl 0x62(%r15), %edx
xorl %edi, %edi
xorl %ecx, %ecx
xorl %esi, %esi
cmpw %dx, %si
je 0xc581
xorl %r8d, %r8d
cmpb $0xa, (%r14,%rdi)
sete %r8b
addl %r8d, %esi
incl %ecx
movzwl %cx, %edi
cmpq %rdi, %rax
ja 0xc54e
jmp 0xc581
leaq 0x32bbf(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xc57d
xorl %ecx, %ecx
movzwl %cx, %esi
xorl %edx, %edx
cmpq %rsi, %rax
jbe 0xc5cd
movb (%r14,%rsi), %sil
cmpb $0xa, %sil
je 0xc5cd
movzwl %bp, %edx
decl %edx
incl %ecx
xorl %edi, %edi
movzwl %di, %r8d
testw %bp, %bp
je 0xc5ac
cmpl %r8d, %edx
jle 0xc5ca
movb %sil, (%rbx,%r8)
leal (%rcx,%r8), %esi
leal 0x1(%r8), %edi
movzwl %si, %esi
cmpq %rsi, %rax
jbe 0xc5ca
movb (%r14,%rsi), %sil
cmpb $0xa, %sil
jne 0xc59e
movzwl %di, %edx
movb $0x0, (%rbx,%rdx)
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_ddlist.c
// Function: lv_ddlist_open
void lv_ddlist_open(lv_obj_t * ddlist, lv_anim_enable_t anim)
{
#if LV_USE_ANIMATION == 0
    anim = false;
#endif
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    ext->opened           = 1;
    lv_obj_set_drag(lv_page_get_scrl(ddlist), true);
    lv_ddlist_refr_size(ddlist, anim);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x6ad8
orb $0x1, 0x66(%rax)
movq %r14, %rdi
callq 0x26288
movq %rax, %rdi
movl $0x1, %esi
callq 0x604d
movq %r14, %rdi
movl %ebx, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xc07f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_close
void lv_ddlist_close(lv_obj_t * ddlist, lv_anim_enable_t anim)
{
#if LV_USE_ANIMATION == 0
    anim = false;
#endif
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
    ext->opened           = 0;
    lv_obj_set_drag(lv_page_get_scrl(ddlist), false);
    lv_ddlist_refr_size(ddlist, anim);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x6ad8
andb $-0x2, 0x66(%rax)
movq %r14, %rdi
callq 0x26288
movq %rax, %rdi
xorl %esi, %esi
callq 0x604d
movq %r14, %rdi
movl %ebx, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xc07f
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ddlist.c
// Function: lv_ddlist_anim_finish
static void lv_ddlist_anim_finish(lv_obj_t * ddlist)
{
    lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);

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

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x6ad8
movq %rax, %r14
movq %rbx, %rdi
callq 0xc244
movb 0x66(%r14), %al
movl %eax, %ecx
andb $-0x3, %cl
movb %cl, 0x66(%r14)
testb $0x1, %al
jne 0xc8e4
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rbx, %rdi
movl $0x5, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x25c83
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_signal
static lv_res_t lv_kb_signal(lv_obj_t * kb, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    } else if(sign == LV_SIGNAL_FOCUS) {
        lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
        /*Show the cursor of the new Text area if cursor management is enabled*/
        if(ext->ta && ext->cursor_mng) {
            lv_cursor_type_t cur_type = lv_ta_get_cursor_type(ext->ta);
            lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN));
        }
    } else if(sign == LV_SIGNAL_DEFOCUS) {
        lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
        /*Show the cursor of the new Text area if cursor management is enabled*/
        if(ext->ta && ext->cursor_mng) {
            lv_cursor_type_t cur_type = lv_ta_get_cursor_type(ext->ta);
            lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN);
        }
    }

    return res;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %r15
callq *0x537c7(%rip)          # 0x602e8
movl %eax, %ebx
cmpb $0x1, %al
jne 0xcbac
cmpb $0x11, %bpl
je 0xcb7f
movzbl %bpl, %eax
cmpl $0x10, %eax
je 0xcb58
cmpl $0x7, %eax
jne 0xcbac
leaq 0x3282c(%rip), %rsi     # 0x3f372
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x6bf5
movq %r15, %rdi
callq 0x6ad8
movq 0x48(%rax), %rdi
testq %rdi, %rdi
je 0xcbac
movq %rax, %r14
testb $0x1, 0x51(%rax)
je 0xcbac
callq 0x1ff1f
movq 0x48(%r14), %rdi
andb $-0x9, %al
jmp 0xcba4
movq %r15, %rdi
callq 0x6ad8
movq 0x48(%rax), %rdi
testq %rdi, %rdi
je 0xcbac
movq %rax, %r14
testb $0x1, 0x51(%rax)
je 0xcbac
callq 0x1ff1f
movq 0x48(%r14), %rdi
orb $0x8, %al
movzbl %al, %esi
callq 0x1fad3
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_kb.c
// Function: lv_kb_set_ta
void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);
    if(ta) LV_ASSERT_OBJ(ta, "lv_ta");

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

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

    ext->ta = ta;

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

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xcfc3
testq %rbx, %rbx
je 0xcf7d
movq %rbx, %rdi
callq 0x80d4
testb %al, %al
je 0xcfd4
movq %r14, %rdi
callq 0x6ad8
movq %rax, %r14
movq 0x48(%rax), %rdi
testq %rdi, %rdi
je 0xcfab
testb $0x1, 0x51(%r14)
je 0xcfab
callq 0x1ff1f
movq 0x48(%r14), %rdi
orb $0x8, %al
movzbl %al, %esi
callq 0x1fad3
movq %rbx, 0x48(%r14)
testq %rbx, %rbx
je 0xcfbb
testb $0x1, 0x51(%r14)
jne 0xcfe5
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x3216a(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xcfd2
leaq 0x32159(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xcfe3
movq %rbx, %rdi
callq 0x1ff1f
movq 0x48(%r14), %rdi
andb $-0x9, %al
movzbl %al, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1fad3
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_set_mode
void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

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

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

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80d4
testb %al, %al
je 0xd060
movq %rbx, %rdi
callq 0x6ad8
cmpb %bpl, 0x50(%rax)
je 0xd071
movb %bpl, 0x50(%rax)
cmpb $0x2, %bpl
ja 0xd071
leaq 0x45c4d(%rip), %rax     # 0x52c80
movzbl %bpl, %ecx
movq (%rax,%rcx,8), %rsi
leaq 0x3245e(%rip), %rax     # 0x3f4a0
movslq (%rax,%rcx,4), %r14
addq %rax, %r14
movq %rbx, %rdi
callq 0x21710
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x21d48
leaq 0x320cd(%rip), %rdi     # 0x3f134
movq %rbx, %rsi
callq 0x829e
jmp 0xd06f
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_set_cursor_manage
void lv_kb_set_cursor_manage(lv_obj_t * kb, bool en)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

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

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

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

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

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x80d4
testb %al, %al
je 0xd0d9
movq %r14, %rdi
callq 0x6ad8
movq %rax, %r14
movb 0x51(%rax), %al
movl %eax, %ecx
andb $0x1, %cl
cmpb %bl, %cl
je 0xd0ea
andb $-0x2, %al
orb %bl, %al
movb %al, 0x51(%r14)
movq 0x48(%r14), %rdi
testq %rdi, %rdi
je 0xd0ea
callq 0x1ff1f
movb 0x51(%r14), %cl
movq 0x48(%r14), %rdi
andb $-0x9, %al
shlb $0x3, %cl
andb $0x8, %cl
orb %al, %cl
xorb $0x8, %cl
movzbl %cl, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1fad3
leaq 0x32054(%rip), %rdi     # 0x3f134
movq %r14, %rsi
callq 0x829e
jmp 0xd0e8
addq $0x8, %rsp
popq %rbx
popq %r14
retq