LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_hal/lv_hal_indev.c
// Function: lv_indev_read
bool lv_indev_read(lv_indev_t * indev, lv_indev_data_t * data)
{
    bool cont = false;

    memset(data, 0, sizeof(lv_indev_data_t));

    /* For touchpad sometimes users don't the last pressed coordinate on release.
     * So be sure a coordinates are initialized to the last point */
    if(indev->driver.type == LV_INDEV_TYPE_POINTER) {
        data->point.x = indev->proc.types.pointer.act_point.x;
        data->point.y = indev->proc.types.pointer.act_point.y;
    }
    /*Similarly set at least the last key in case of the  the user doesn't set it  on release*/
    else if(indev->driver.type == LV_INDEV_TYPE_KEYPAD) {
        data->key = indev->proc.types.keypad.last_key;
    }

    if(indev->driver.read_cb) {
        LV_LOG_TRACE("idnev read started");
        cont = indev->driver.read_cb(&indev->driver, data);
        LV_LOG_TRACE("idnev read finished");
    } else {
        LV_LOG_WARN("indev function registered");
    }

    return cont;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2090
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdf71
movq -0x8(%rbp), %rax
movw 0x38(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movw 0x3a(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x2(%rax)
jmp 0xdf8d
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x2, %eax
jne 0xdf8b
movq -0x8(%rbp), %rax
movl 0x3c(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0xdf8d
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xdfb1
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq *%rax
andb $0x1, %al
movb %al, -0x11(%rbp)
jmp 0xdfb3
jmp 0xdfb3
movb -0x11(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_hal/lv_hal_tick.c
// Function: lv_tick_get
uint32_t lv_tick_get(void)
{
#if LV_TICK_CUSTOM == 0
    uint32_t result;
    do {
        tick_irq_flag = 1;
        result        = sys_time;
    } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt.
                                Continue until make a non interrupted cycle */

    return result;
#else
    return LV_TICK_CUSTOM_SYS_TIME_EXPR;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb $0x1, 0x7b365(%rip)     # 0x89350
movl 0x7b363(%rip), %eax     # 0x89354
movl %eax, -0x4(%rbp)
movb 0x7b356(%rip), %al      # 0x89350
cmpb $0x0, %al
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xdfe4
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_hal/lv_hal_tick.c
// Function: lv_tick_elaps
uint32_t lv_tick_elaps(uint32_t prev_tick)
{
    uint32_t act_time = lv_tick_get();

    /*If there is no overflow in sys_time simple subtract*/
    if(act_time >= prev_tick) {
        prev_tick = act_time - prev_tick;
    } else {
        prev_tick = UINT32_MAX - prev_tick + 1;
        prev_tick += act_time;
    }

    return prev_tick;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl %edi, -0x4(%rbp)
callq 0xdfe0
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
cmpl -0x4(%rbp), %eax
jb 0xe036
movl -0x8(%rbp), %eax
subl -0x4(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xe04d
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
subl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
movl -0x8(%rbp), %eax
addl -0x4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_arc.c
// Function: lv_arc_signal
static lv_res_t lv_arc_signal(lv_obj_t * arc, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);

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

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x7b14b(%rip), %rax     # 0x89358
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0xe231
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0xe260
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0xe24f
movq -0x20(%rbp), %rdi
leaq 0x59eec(%rip), %rsi     # 0x68131
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0xe260
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0xe25a
jmp 0xe25a
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_arc.c
// Function: lv_arc_set_angles
void lv_arc_set_angles(lv_obj_t * arc, uint16_t start, uint16_t end)
{
    LV_ASSERT_OBJ(arc, LV_OBJX_NAME);

    lv_arc_ext_t * ext = lv_obj_get_ext_attr(arc);

    if(start > 360) start = 360;
    if(end > 360) end = 360;

    ext->angle_start = start;
    ext->angle_end   = end;

    lv_obj_invalidate(arc);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xe6b9
movq -0x8(%rbp), %rsi
leaq 0x59a4a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xe6b7
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
cmpl $0x168, %eax            # imm = 0x168
jle 0xe6d7
movw $0x168, -0xa(%rbp)      # imm = 0x168
movzwl -0xc(%rbp), %eax
cmpl $0x168, %eax            # imm = 0x168
jle 0xe6e8
movw $0x168, -0xc(%rbp)      # imm = 0x168
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_arc.c
// Function: lv_arc_get_style
const lv_style_t * lv_arc_get_style(const lv_obj_t * arc, lv_arc_style_t type)
{
    LV_ASSERT_OBJ(arc, LV_OBJX_NAME);

    const lv_style_t * style = NULL;

    switch(type) {
        case LV_ARC_STYLE_MAIN: style = lv_obj_get_style(arc); break;
        default: style = NULL; break;
    }

    return style;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xe7e1
movq -0x8(%rbp), %rsi
leaq 0x59922(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xe7df
movq $0x0, -0x18(%rbp)
movb -0x9(%rbp), %al
testb %al, %al
jne 0xe801
jmp 0xe7f2
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0xe809
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_bar.c
// Function: lv_bar_signal
static lv_res_t lv_bar_signal(lv_obj_t * bar, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(bar, 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_indic = lv_bar_get_style(bar, LV_BAR_STYLE_INDIC);
        if(style_indic->body.shadow.width > bar->ext_draw_pad) bar->ext_draw_pad = style_indic->body.shadow.width;
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x7a8ab(%rip), %rax     # 0x89368
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0xeae1
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0xeb46
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0xeaff
movq -0x20(%rbp), %rdi
leaq 0x59643(%rip), %rsi     # 0x68138
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0xeb46
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0xeb40
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0xf7a0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movswl 0x12(%rax), %eax
movq -0x10(%rbp), %rcx
movswl 0x5c(%rcx), %ecx
cmpl %ecx, %eax
jle 0xeb3e
movq -0x30(%rbp), %rax
movw 0x12(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0xeb40
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_bar.c
// Function: lv_bar_set_style
void lv_bar_set_style(lv_obj_t * bar, lv_bar_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(bar, LV_OBJX_NAME);

    lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);

    switch(type) {
        case LV_BAR_STYLE_BG: lv_obj_set_style(bar, style); break;
        case LV_BAR_STYLE_INDIC:
            ext->style_indic = style;
            lv_obj_refresh_ext_draw_pad(bar);
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xf335
movq -0x8(%rbp), %rsi
leaq 0x58dce(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xf333
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0xf359
jmp 0xf34f
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0xf368
jmp 0xf37d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0xf37d
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
callq 0x9dc0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_bar.c
// Function: lv_bar_set_range
void lv_bar_set_range(lv_obj_t * bar, int16_t min, int16_t max)
{
    LV_ASSERT_OBJ(bar, LV_OBJX_NAME);

    lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
    if(ext->min_value == min && ext->max_value == max) return;

    ext->max_value = max;
    ext->min_value = min;
    if(ext->cur_value > max) {
        ext->cur_value = max;
        lv_bar_set_value(bar, ext->cur_value, false);
    }
    if(ext->cur_value < min) {
        ext->cur_value = min;
        lv_bar_set_value(bar, ext->cur_value, false);
    }
    lv_obj_invalidate(bar);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xf459
movq -0x8(%rbp), %rsi
leaq 0x58caa(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xf457
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x2(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0xf488
movq -0x18(%rbp), %rax
movswl 0x4(%rax), %eax
movswl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jne 0xf488
jmp 0xf501
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x4(%rax)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x18(%rbp), %rax
movswl (%rax), %eax
movswl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jle 0xf4cc
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
xorl %edx, %edx
movswl (%rax), %esi
callq 0xf150
movq -0x18(%rbp), %rax
movswl (%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jge 0xf4f8
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
xorl %edx, %edx
movswl (%rax), %esi
callq 0xf150
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_bar.c
// Function: lv_bar_get_value
int16_t lv_bar_get_value(const lv_obj_t * bar)
{
    LV_ASSERT_OBJ(bar, LV_OBJX_NAME);

    lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
    /*If animated tell that it's already at the end value*/
#if LV_USE_ANIMATION
    if(ext->anim_state != LV_BAR_ANIM_STATE_INV) return ext->anim_end;
#endif
    /*No animation, simple return the current value*/
    return ext->cur_value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xf60b
movq -0x10(%rbp), %rsi
leaq 0x58af8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xf609
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0xa(%rax), %eax
cmpl $-0x1, %eax
je 0xf633
movq -0x18(%rbp), %rax
movw 0x8(%rax), %ax
movw %ax, -0x2(%rbp)
jmp 0xf63e
movq -0x18(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_bar.c
// Function: lv_bar_get_style
const lv_style_t * lv_bar_get_style(const lv_obj_t * bar, lv_bar_style_t type)
{
    LV_ASSERT_OBJ(bar, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_bar_ext_t * ext       = lv_obj_get_ext_attr(bar);

    switch(type) {
        case LV_BAR_STYLE_BG: style = lv_obj_get_style(bar); break;
        case LV_BAR_STYLE_INDIC: style = ext->style_indic; break;
        default: style = NULL; break;
    }

    return style;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xf7d1
movq -0x8(%rbp), %rsi
leaq 0x58932(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xf7cf
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0xf7fd
jmp 0xf7f3
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0xf80c
jmp 0xf81a
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0xf822
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0xf822
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movb $0x1, -0x12(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x2, %eax
jne 0xfd81
movq 0x79617(%rip), %rax     # 0x89380
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movzbl -0x11(%rbp), %edx
callq *%rax
andb $0x1, %al
movb %al, -0x12(%rbp)
jmp 0xfe05
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
je 0xfd93
movzbl -0x11(%rbp), %eax
cmpl $0x1, %eax
jne 0xfde9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movb 0x30(%rax), %dl
andb $0x7, %dl
movq -0x28(%rbp), %rax
movb 0x30(%rax), %cl
andb $0x7, %dl
andb $-0x8, %cl
orb %dl, %cl
movb %cl, 0x30(%rax)
movq 0x795ac(%rip), %rax     # 0x89380
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movzbl -0x11(%rbp), %edx
callq *%rax
andb $0x1, %al
movb %al, -0x12(%rbp)
jmp 0xfe03
movq 0x79590(%rip), %rax     # 0x89380
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movzbl -0x11(%rbp), %edx
callq *%rax
andb $0x1, %al
movb %al, -0x12(%rbp)
jmp 0xfe05
movb -0x12(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0xff05
movq -0x8(%rbp), %rsi
leaq 0x581fe(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0xff03
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x5, %rax
ja 0x10004
movq -0x28(%rbp), %rax
leaq 0x58211(%rip), %rcx     # 0x68140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x205e0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0x205e0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x205e0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x3, %esi
callq 0x205e0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x4, %esi
callq 0x205e0
jmp 0x10004
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x205e0
jmp 0x10004
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0x205e0
jmp 0x10004
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x205e0
jmp 0x10004
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x3, %esi
callq 0x205e0
jmp 0x10004
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x4, %esi
callq 0x205e0
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x50, %rsp
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
cmpl $0x2, %eax
jne 0x1004d
movq 0x79353(%rip), %rax     # 0x89388
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x10112
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
jne 0x100ec
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa080
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x77c0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movzbl 0x8(%rax), %eax
cmpl $0x0, %eax
jne 0x100c9
movq -0x40(%rbp), %rdi
callq 0x3010
cmpq -0x30(%rbp), %rax
jne 0x100c7
movq -0x40(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x31c0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x48(%rax)
jmp 0x100c9
movq 0x792b8(%rip), %rax     # 0x89388
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x48(%rax)
jmp 0x1010c
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x1010a
movq 0x7928c(%rip), %rax     # 0x89388
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
jmp 0x1010c
jmp 0x1010e
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x10201
movq -0x8(%rbp), %rsi
leaq 0x57f02(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x101ff
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x5, %rax
ja 0x102c2
movq -0x28(%rbp), %rax
leaq 0x57f25(%rip), %rcx     # 0x68158
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
xorl %esi, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movl $0x1, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movl $0x2, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movl $0x3, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movl $0x4, %esi
callq 0x20ab0
movq %rax, -0x18(%rbp)
jmp 0x102ca
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_design
static bool lv_cpicker_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode)
{
    /*Return false if the object is not covers the mask_p area*/
    if(mode == LV_DESIGN_COVER_CHK)  {
        return false;
    }
    /*Draw the object*/
    else if(mode == LV_DESIGN_DRAW_MAIN) {
        lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
        lv_opa_t opa_scale = lv_obj_get_opa_scale(cpicker);

        if(ext->type == LV_CPICKER_TYPE_DISC) {
            draw_disc_grad(cpicker, mask, opa_scale);
        } else if(ext->type == LV_CPICKER_TYPE_RECT) {
            draw_rect_grad(cpicker, mask, opa_scale);
        }

        draw_indic(cpicker, mask, opa_scale);
    }
    /*Post draw when the children are drawn*/
    else if(mode == LV_DESIGN_DRAW_POST) {
    }

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
cmpl $0x2, %eax
jne 0x10f47
movb $0x0, -0x1(%rbp)
jmp 0x10fdd
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
jne 0x10fca
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa710
movb %al, -0x29(%rbp)
movq -0x28(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x10f90
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x29(%rbp), %edx
callq 0x11bc0
jmp 0x10fb7
movq -0x28(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x10fb5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x29(%rbp), %edx
callq 0x123e0
jmp 0x10fb7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x29(%rbp), %edx
callq 0x126a0
jmp 0x10fd7
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x10fd5
jmp 0x10fd5
jmp 0x10fd7
jmp 0x10fd9
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x11025
movq -0x8(%rbp), %rsi
leaq 0x570de(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x11023
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x11049
jmp 0x1103f
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x11058
jmp 0x1106d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x1106d
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x112e1
movq -0x8(%rbp), %rsi
leaq 0x56e22(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x112df
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x11307
jmp 0x1133a
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x24(%rax), %cl
andb $0x1, %dl
shlb $0x3, %dl
andb $-0x9, %cl
orb %dl, %cl
movb %cl, 0x24(%rax)
movq -0x8(%rbp), %rdi
callq 0x9dc0
movq -0x8(%rbp), %rdi
callq 0x11080
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x20, %rsp
movl %esi, -0x6(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x113fe
movq -0x10(%rbp), %rsi
leaq 0x56d05(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x113fc
movzwl -0x6(%rbp), %eax
cmpl $0x168, %eax            # imm = 0x168
jle 0x1141c
movzwl -0x6(%rbp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x6(%rbp)
movzbl -0x4(%rbp), %eax
cmpl $0x64, %eax
jle 0x11429
movb $0x64, -0x4(%rbp)
movzbl -0x3(%rbp), %eax
cmpl $0x64, %eax
jle 0x11436
movb $0x64, -0x3(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
movzwl -0x6(%rbp), %ecx
cmpl %ecx, %eax
jne 0x11478
movq -0x18(%rbp), %rax
movzbl 0x2(%rax), %eax
movzbl -0x4(%rbp), %ecx
cmpl %ecx, %eax
jne 0x11478
movq -0x18(%rbp), %rax
movzbl 0x3(%rax), %eax
movzbl -0x3(%rbp), %ecx
cmpl %ecx, %eax
jne 0x11478
movb $0x0, -0x1(%rbp)
jmp 0x114bf
movq -0x18(%rbp), %rax
movl -0x6(%rbp), %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
callq 0x11080
movq -0x18(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x114bb
movq -0x18(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x114bb
movq -0x10(%rbp), %rdi
callq 0x7430
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movw %ax, -0x2(%rbp)
movq %rdi, -0x10(%rbp)
movzwl -0x2(%rbp), %edi
callq 0x115b0
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movb -0x12(%rbp), %cl
movb -0x13(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x14(%rbp), %edx
callq 0x45e50
movq -0x20(%rbp), %rdi
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %esi
callq 0x113d0
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x11661
movq -0x8(%rbp), %rsi
leaq 0x56aa2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1165f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x24(%rax), %cl
andb $0x3, %dl
andb $-0x4, %cl
orb %dl, %cl
movb %cl, 0x24(%rax)
movq -0x8(%rbp), %rdi
callq 0x11080
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x11743
movq -0x8(%rbp), %rsi
leaq 0x569c0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x11741
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0x14(%rax), %cl
andb $0x1, %dl
andb $-0x2, %cl
orb %dl, %cl
movb %cl, 0x14(%rax)
movq -0x8(%rbp), %rdi
callq 0x11790
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x11803
movq -0x8(%rbp), %rsi
leaq 0x56900(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x11801
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0x24(%rax), %cl
andb $0x1, %dl
shlb $0x4, %dl
andb $-0x11, %cl
orb %dl, %cl
movb %cl, 0x24(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x11931
movq -0x10(%rbp), %rsi
leaq 0x567d2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1192f
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x11(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x11955
jmp 0x1194b
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x11964
jmp 0x11972
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x8(%rbp)
jmp 0x1197a
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x1197a
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: draw_indic
static void draw_indic(lv_obj_t * cpicker, const lv_area_t * mask, lv_opa_t opa_scale)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    lv_style_t style_cir;
    lv_style_copy(&style_cir, ext->indic.style);
    style_cir.body.radius = LV_RADIUS_CIRCLE;

    if(ext->indic.colored) {
        style_cir.body.main_color = lv_cpicker_get_color(cpicker);
        style_cir.body.grad_color = style_cir.body.main_color;
    }

    lv_area_t indic_area = get_indic_area(cpicker);

    lv_draw_rect(&indic_area, mask, &style_cir, opa_scale);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x68(%rbp), %rdi
callq 0xc550
movw $0x7c18, -0x62(%rbp)    # imm = 0x7C18
movq -0x20(%rbp), %rax
movb 0x14(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x12706
movq -0x8(%rbp), %rdi
callq 0x11a80
movw %ax, -0x6a(%rbp)
movw -0x6a(%rbp), %ax
movw %ax, -0x66(%rbp)
movw -0x66(%rbp), %ax
movw %ax, -0x64(%rbp)
movq -0x8(%rbp), %rdi
callq 0x128a0
movq %rax, -0x72(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x72(%rbp), %rdi
leaq -0x68(%rbp), %rdx
movzbl -0x11(%rbp), %ecx
callq 0x5a9e0
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0x2c(%rbp)
je 0x1278c
jmp 0x12772
movl -0x2c(%rbp), %eax
subl $0x1, %eax
je 0x127c3
jmp 0x1277c
movl -0x2c(%rbp), %eax
subl $0x2, %eax
je 0x1280c
jmp 0x1278a
jmp 0x1278c
movzwl -0x12(%rbp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movq -0x20(%rbp), %rax
movb 0x2(%rax), %cl
movq -0x20(%rbp), %rax
movzwl %dx, %edi
movzbl %cl, %esi
movzbl 0x3(%rax), %edx
callq 0x45bf0
movw %ax, -0x22(%rbp)
movw -0x22(%rbp), %ax
movw %ax, -0x2(%rbp)
jmp 0x12853
movq -0x20(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x2e(%rbp)
movzwl -0x12(%rbp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
imull $0x64, %edx, %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw -0x2e(%rbp), %dx
movb %al, %cl
movq -0x20(%rbp), %rax
movzwl %dx, %edi
movzbl %cl, %esi
movzbl 0x3(%rax), %edx
callq 0x45bf0
movw %ax, -0x24(%rbp)
movw -0x24(%rbp), %ax
movw %ax, -0x2(%rbp)
jmp 0x12853
movq -0x20(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movb 0x2(%rax), %cl
movzwl -0x12(%rbp), %eax
movl $0x168, %esi            # imm = 0x168
cltd
idivl %esi
imull $0x64, %edx, %eax
movl $0x168, %esi            # imm = 0x168
cltd
idivl %esi
movw -0x30(%rbp), %dx
movzwl %dx, %edi
movzbl %cl, %esi
movzbl %al, %edx
callq 0x45bf0
movw %ax, -0x26(%rbp)
movw -0x26(%rbp), %ax
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x11900
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x11900
movq %rax, -0x28(%rbp)
movw $0x0, -0x2a(%rbp)
movq -0x18(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x1290a
movq -0x20(%rbp), %rax
movswl 0x3e(%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movw %ax, -0x2a(%rbp)
jmp 0x1293d
movq -0x18(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1293b
movq -0x10(%rbp), %rdi
callq 0x8350
movw %ax, -0x2c(%rbp)
movswl -0x2c(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movw %ax, -0x2a(%rbp)
jmp 0x1293d
movq -0x10(%rbp), %rax
movswl 0x20(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x10(%rcx), %ecx
addl %ecx, %eax
movzwl -0x2a(%rbp), %ecx
subl %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x1a(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x8(%rbp)
movq -0x10(%rbp), %rax
movswl 0x22(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x12(%rcx), %ecx
addl %ecx, %eax
movzwl -0x2a(%rbp), %ecx
subl %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x6(%rbp)
movq -0x10(%rbp), %rax
movswl 0x20(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x10(%rcx), %ecx
addl %ecx, %eax
movzwl -0x2a(%rbp), %ecx
addl %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x16(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x4(%rbp)
movq -0x10(%rbp), %rax
movswl 0x22(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x12(%rcx), %ecx
addl %ecx, %eax
movzwl -0x2a(%rbp), %ecx
addl %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x18(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x2(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: double_click_reset
static lv_res_t double_click_reset(lv_obj_t * cpicker)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    lv_indev_t * indev = lv_indev_get_act();
    /*Double clicked? Use long press time as double click time out*/
    if(lv_tick_elaps(ext->last_click_time) < indev->driver.long_press_time) {
        lv_color_hsv_t hsv_cur;
        hsv_cur = ext->hsv;

        switch(ext->color_mode) {
        case LV_CPICKER_COLOR_MODE_HUE:
            hsv_cur.h = LV_CPICKER_DEF_HUE;
            break;
        case LV_CPICKER_COLOR_MODE_SATURATION:
            hsv_cur.s = LV_CPICKER_DEF_SATURATION;
            break;
        case LV_CPICKER_COLOR_MODE_VALUE:
            hsv_cur.v = LV_CPICKER_DEF_VALUE;
            break;
        }

        if (lv_cpicker_set_hsv(cpicker, hsv_cur)) {
            lv_res_t res = lv_event_send(cpicker, LV_EVENT_VALUE_CHANGED, NULL);
            if(res != LV_RES_OK) return res;
        }
    }
    ext->last_click_time = lv_tick_get();

    return LV_RES_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
callq 0x4b70
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movl 0x18(%rax), %edi
callq 0xe010
movq -0x20(%rbp), %rcx
movzwl 0x2a(%rcx), %ecx
cmpl %ecx, %eax
jae 0x12ab7
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0x2c(%rbp)
je 0x12a69
jmp 0x12a55
movl -0x2c(%rbp), %eax
subl $0x1, %eax
je 0x12a71
jmp 0x12a5f
movl -0x2c(%rbp), %eax
subl $0x2, %eax
je 0x12a77
jmp 0x12a7b
movw $0x0, -0x24(%rbp)
jmp 0x12a7b
movb $0x64, -0x22(%rbp)
jmp 0x12a7b
movb $0x64, -0x21(%rbp)
movq -0x10(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0x113d0
testb $0x1, %al
jne 0x12a8d
jmp 0x12ab5
movq -0x10(%rbp), %rdi
movl $0xe, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x25(%rbp)
movzbl -0x25(%rbp), %eax
cmpl $0x1, %eax
je 0x12ab3
movb -0x25(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x12ac9
jmp 0x12ab5
jmp 0x12ab7
callq 0xdfe0
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x18(%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movb 0x24(%rax), %al
andb $0x3, %al
movzbl %al, %eax
addl $0x1, %eax
movl $0x3, %ecx
cltd
idivl %ecx
movq -0x10(%rbp), %rax
movb 0x24(%rax), %cl
andb $0x3, %dl
andb $-0x4, %cl
orb %dl, %cl
movb %cl, 0x24(%rax)
movq -0x8(%rbp), %rdi
callq 0x11080
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: get_angle
static uint16_t get_angle(lv_obj_t * cpicker)
{
    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
    uint16_t angle;
    switch(ext->color_mode)
    {
    default:
    case LV_CPICKER_COLOR_MODE_HUE:
        angle = ext->hsv.h;
        break;
    case LV_CPICKER_COLOR_MODE_SATURATION:
        angle = (ext->hsv.s * 360) / 100;
        break;
    case LV_CPICKER_COLOR_MODE_VALUE:
        angle = (ext->hsv.v * 360) / 100 ;
        break;
    }
    return angle;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0x18(%rbp)
je 0x12b81
jmp 0x12b6b
movl -0x18(%rbp), %eax
subl $0x1, %eax
je 0x12b8e
jmp 0x12b75
movl -0x18(%rbp), %eax
subl $0x2, %eax
je 0x12baa
jmp 0x12b7f
jmp 0x12b81
movq -0x10(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x12(%rbp)
jmp 0x12bc4
movq -0x10(%rbp), %rax
movzbl 0x2(%rax), %eax
imull $0x168, %eax, %eax      # imm = 0x168
movl $0x64, %ecx
cltd
idivl %ecx
movw %ax, -0x12(%rbp)
jmp 0x12bc4
movq -0x10(%rbp), %rax
movzbl 0x3(%rax), %eax
imull $0x168, %eax, %eax      # imm = 0x168
movl $0x64, %ecx
cltd
idivl %ecx
movw %ax, -0x12(%rbp)
movw -0x12(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
nop