LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_clean
void lv_list_clean(lv_obj_t * list)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    lv_obj_t * scrl = lv_page_get_scrl(list);
    lv_obj_clean(scrl);
    lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
    ext->size           = 0;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1ca0e
movq %rbx, %rdi
callq 0x2695e
movq %rax, %rdi
callq 0x514f
movq %rbx, %rdi
callq 0x6af7
movw $0x0, 0x80(%rax)
popq %rbx
retq
leaq 0x227cf(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1ca1d
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_set_btn_selected
void lv_list_set_btn_selected(lv_obj_t * list, lv_obj_t * btn)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);
    if(btn) LV_ASSERT_OBJ(list, "lv_btn");

    lv_list_ext_t * ext = lv_obj_get_ext_attr(list);

    if(ext->selected_btn) {
        lv_btn_state_t s = lv_btn_get_state(ext->selected_btn);
        if(s == LV_BTN_STATE_PR)
            lv_btn_set_state(ext->selected_btn, LV_BTN_STATE_REL);
        else if(s == LV_BTN_STATE_TGL_PR)
            lv_btn_set_state(ext->selected_btn, LV_BTN_STATE_TGL_REL);
    }

    ext->selected_btn = btn;

    /*Don't forget which button was selected.
     * It will be restored when the list is focused.*/
    if(btn != NULL) {
        ext->last_sel = btn;
    }

    if(ext->selected_btn) {
        lv_btn_state_t s = lv_btn_get_state(ext->selected_btn);
        if(s == LV_BTN_STATE_REL)
            lv_btn_set_state(ext->selected_btn, LV_BTN_STATE_PR);
        else if(s == LV_BTN_STATE_TGL_REL)
            lv_btn_set_state(ext->selected_btn, LV_BTN_STATE_TGL_PR);

        lv_page_focus(list, ext->selected_btn, LV_ANIM_ON);
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r15
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1cc52
testq %r15, %r15
je 0x1cc26
movq %rbx, %rdi
callq 0x80e4
testb %al, %al
je 0x1cc63
movq %rbx, %rdi
callq 0x6af7
movq %rax, %r14
movq 0x90(%rax), %rdi
testq %rdi, %rdi
je 0x1cc85
callq 0x136d6
cmpb $0x1, %al
je 0x1cc74
movzbl %al, %eax
cmpl $0x3, %eax
jne 0x1cc85
movb $0x2, %al
jmp 0x1cc76
leaq 0x2258b(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1cc61
leaq 0x2257a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1cc72
xorl %eax, %eax
movq 0x90(%r14), %rdi
movzbl %al, %esi
callq 0x135ca
movq %r15, 0x90(%r14)
testq %r15, %r15
je 0x1ccb0
movq %r15, 0x88(%r14)
movq %r15, %rdi
callq 0x136d6
testb %al, %al
je 0x1ccb6
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x1ccc7
movb $0x3, %al
jmp 0x1ccb8
popq %rbx
popq %r14
popq %r15
retq
movb $0x1, %al
movq 0x90(%r14), %rdi
movzbl %al, %esi
callq 0x135ca
movq 0x90(%r14), %rsi
movq %rbx, %rdi
movl $0x1, %edx
popq %rbx
popq %r14
popq %r15
jmp 0x26c87
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_remove
bool lv_list_remove(const lv_obj_t * list, uint16_t index)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
    if(index >= ext->size) return false;
    uint16_t count = 0;
    lv_obj_t * e   = lv_list_get_next_btn(list, NULL);
    while(e != NULL) {
        if(count == index) {
            lv_obj_del(e);
            ext->size--;
            return true;
        }
        e = lv_list_get_next_btn(list, e);
        count++;
    }
    return false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1cd43
movq %rbx, %rdi
callq 0x6af7
cmpw %bp, 0x80(%rax)
jbe 0x1cd32
movq %rax, %r14
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1c66d
testq %rax, %rax
je 0x1cd35
incl %ebp
decw %bp
je 0x1cd54
movq %rbx, %rdi
movq %rax, %rsi
callq 0x1c66d
testq %rax, %rax
jne 0x1cd1d
xorl %r15d, %r15d
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2249a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1cd52
movq %rax, %rdi
callq 0x4d59
decw 0x80(%r14)
movb $0x1, %r15b
jmp 0x1cd35
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_prev_btn
lv_obj_t * lv_list_get_prev_btn(const lv_obj_t * list, lv_obj_t * prev_btn)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    /* Not a good practice but user can add/create objects to the lists manually.
     * When getting the next button try to be sure that it is at least a button */

    lv_obj_t * btn;
    lv_obj_t * scrl = lv_page_get_scrl(list);

    btn = lv_obj_get_child(scrl, prev_btn);
    if(btn == NULL) return NULL;

    while(lv_list_is_list_btn(btn) == false) {
        btn = lv_obj_get_child(scrl, btn);
        if(btn == NULL) break;
    }

    return btn;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x1ce0a
movq %r14, %rdi
callq 0x2695e
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x51a7
testq %rax, %rax
je 0x1cdfd
movq %rax, %rbx
movq %rbx, %rdi
callq 0x1cfd1
testb %al, %al
jne 0x1cdff
movq %r14, %rdi
movq %rbx, %rsi
callq 0x51a7
movq %rax, %rbx
testq %rax, %rax
jne 0x1cdde
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x223d3(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1ce19
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_set_layout
void lv_list_set_layout(lv_obj_t * list, lv_layout_t layout)
 {
     LV_ASSERT_OBJ(list, LV_OBJX_NAME);

	/* Update list layout if necessary */
	if (layout == lv_list_get_layout(list)) return;

    /* Get the first button on the list */
    lv_obj_t * btn = lv_list_get_prev_btn(list, NULL);

    /* Visit all buttons on the list and update their layout  */
    while(btn != NULL) {
        /*If a column layout set the buttons' width to list width*/
        if(layout == LV_LAYOUT_COL_M || layout == LV_LAYOUT_COL_L || layout == LV_LAYOUT_COL_R) {
            lv_btn_set_fit2(list, LV_FIT_FLOOD, LV_FIT_TIGHT);
        }
        /*If a row layout set the buttons' width according to the content*/
        else if (layout == LV_LAYOUT_ROW_M || layout == LV_LAYOUT_ROW_T || layout == LV_LAYOUT_ROW_B) {
            lv_btn_set_fit(list, LV_FIT_TIGHT);
        }

        btn = lv_list_get_prev_btn(list, btn);
    }

    lv_page_set_scrl_layout(list, layout);
 }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %esi, %ebx
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x1ce46
movq %r14, %rdi
callq 0x1ced6
cmpb %bl, %al
jne 0x1ce57
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x22397(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1ce55
movq %r14, %rdi
xorl %esi, %esi
callq 0x1cdad
testq %rax, %rax
je 0x1cebb
movq %rax, %r15
leal -0x2(%rbx), %ebp
leal -0x5(%rbx), %r12d
cmpb $0x2, %bpl
ja 0x1ce85
movq %r14, %rdi
movl $0x2, %esi
movl $0x2, %edx
jmp 0x1ce98
cmpb $0x2, %r12b
ja 0x1cea8
movq %r14, %rdi
movl $0x1, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x22d84
movq %r14, %rdi
movq %r15, %rsi
callq 0x1cdad
movq %rax, %r15
testq %rax, %rax
jne 0x1ce70
movq %r14, %rdi
callq 0x2695e
movzbl %bl, %esi
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x22d1c
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_btn_label
lv_obj_t * lv_list_get_btn_label(const lv_obj_t * btn)
{
    LV_ASSERT_OBJ(btn, "lv_btn");

    lv_obj_t * label = lv_obj_get_child(btn, NULL);
    if(label == NULL) return NULL;

    while(lv_list_is_list_label(label) == false) {
        label = lv_obj_get_child(btn, label);
        if(label == NULL) break;
    }

    return label;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1cfc0
xorl %r14d, %r14d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x51a7
testq %rax, %rax
je 0x1cfaf
movq %rsp, %r15
leaq 0x22917(%rip), %r12     # 0x3f881
movq %rax, %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x6b1b
xorl %r13d, %r13d
movq (%rsp,%r13,8), %rdi
testq %rdi, %rdi
je 0x1cf99
movq %r12, %rsi
callq 0x20e0
testl %eax, %eax
je 0x1cfaf
incq %r13
cmpq $0x8, %r13
jne 0x1cf7b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x51a7
movq %rax, %r14
testq %rax, %rax
jne 0x1cf6d
xorl %r14d, %r14d
movq %r14, %rax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x2221d(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1cfcf
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_is_list_btn
static bool lv_list_is_list_btn(lv_obj_t * list_btn)
{
    lv_obj_type_t type;

    lv_obj_get_type(list_btn, &type);
    uint8_t cnt;
    for(cnt = 0; cnt < LV_MAX_ANCESTOR_NUM; cnt++) {
        if(type.type[cnt] == NULL) break;
        if(!strcmp(type.type[cnt], "lv_btn")) return true;
    }
    return false;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
leaq 0x8(%rsp), %rsi
callq 0x6b1b
xorl %r14d, %r14d
leaq 0x22728(%rip), %rbx     # 0x3f714
movq 0x8(%rsp,%r14,8), %rdi
testq %rdi, %rdi
je 0x1d00b
movq %rbx, %rsi
callq 0x20e0
testl %eax, %eax
je 0x1d00f
incq %r14
cmpq $0x8, %r14
jne 0x1cfec
xorl %eax, %eax
jmp 0x1d011
movb $0x1, %al
addq $0x48, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_btn_index
int32_t lv_list_get_btn_index(const lv_obj_t * list, const lv_obj_t * btn)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);
    LV_ASSERT_OBJ(btn, "lv_btn");

    int index = 0;
    if(list == NULL) {
        /* no list provided, assuming btn is part of a list */
        list = lv_obj_get_parent(lv_obj_get_parent(btn));
    }
    lv_obj_t * e = lv_list_get_next_btn(list, NULL);
    while(e != NULL) {
        if(e == btn) {
            return index;
        }
        index++;
        e = lv_list_get_next_btn(list, e);
    }
    return -1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x1d07f
movq %rbx, %rdi
callq 0x80e4
testb %al, %al
je 0x1d090
testq %r14, %r14
jne 0x1d053
movq %rbx, %rdi
callq 0x4ab5
movq %rax, %rdi
callq 0x4ab5
movq %rax, %r14
xorl %r15d, %r15d
movq %r14, %rdi
xorl %esi, %esi
callq 0x1c66d
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testq %rax, %rax
je 0x1d0a4
cmpq %rbx, %rax
je 0x1d0a1
incl %r15d
movq %r14, %rdi
movq %rax, %rsi
callq 0x1c66d
jmp 0x1d065
leaq 0x2215e(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1d08e
leaq 0x2214d(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1d09f
movl %r15d, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_style
const lv_style_t * lv_list_get_style(const lv_obj_t * list, lv_list_style_t type)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_list_ext_t * ext      = lv_obj_get_ext_attr(list);

    switch(type) {
        case LV_LIST_STYLE_BG: style = lv_page_get_style(list, LV_PAGE_STYLE_BG); break;
        case LV_LIST_STYLE_SCRL: style = lv_page_get_style(list, LV_PAGE_STYLE_SCRL); break;
        case LV_LIST_STYLE_SB: style = lv_page_get_style(list, LV_PAGE_STYLE_SB); break;
        case LV_LIST_STYLE_EDGE_FLASH: style = lv_page_get_style(list, LV_PAGE_STYLE_EDGE_FLASH); break;
        case LV_LIST_STYLE_BTN_REL: style = ext->styles_btn[LV_BTN_STATE_REL]; break;
        case LV_LIST_STYLE_BTN_PR: style = ext->styles_btn[LV_BTN_STATE_PR]; break;
        case LV_LIST_STYLE_BTN_TGL_REL: style = ext->styles_btn[LV_BTN_STATE_TGL_REL]; break;
        case LV_LIST_STYLE_BTN_TGL_PR: style = ext->styles_btn[LV_BTN_STATE_TGL_PR]; break;
        case LV_LIST_STYLE_BTN_INA: style = ext->styles_btn[LV_BTN_STATE_INA]; break;
        default: style = NULL; break;
    }

    return style;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1d149
movq %rbx, %rdi
callq 0x6af7
cmpb $0x8, %bpl
ja 0x1d19f
movzbl %bpl, %ecx
leaq 0x227c3(%rip), %rdx     # 0x3f8fc
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x1d182
leaq 0x22094(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1d158
movq 0x50(%rax), %rax
jmp 0x1d1a1
movq %rbx, %rdi
movl $0x2, %esi
jmp 0x1d182
movq %rbx, %rdi
movl $0x3, %esi
jmp 0x1d182
movq 0x68(%rax), %rax
jmp 0x1d1a1
movq %rbx, %rdi
movl $0x1, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x264cb
movq 0x58(%rax), %rax
jmp 0x1d1a1
movq 0x60(%rax), %rax
jmp 0x1d1a1
movq 0x70(%rax), %rax
jmp 0x1d1a1
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_up
void lv_list_up(const lv_obj_t * list)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    /*Search the first list element which 'y' coordinate is below the parent
     * and position the list to show this element on the bottom*/
    lv_obj_t * scrl = lv_page_get_scrl(list);
    lv_obj_t * e;
    lv_obj_t * e_prev = NULL;

    e                 = lv_list_get_prev_btn(list, NULL);
    while(e != NULL) {
        if(e->coords.y2 <= list->coords.y2) {
            if(e_prev != NULL) {
                lv_coord_t new_y = lv_obj_get_height(list) - (lv_obj_get_y(e_prev) + lv_obj_get_height(e_prev));
                if(lv_list_get_anim_time(list) == 0) {
                    lv_obj_set_y(scrl, new_y);
                } else {
#if LV_USE_ANIMATION
                    lv_anim_t a;
                    a.var            = scrl;
                    a.start          = lv_obj_get_y(scrl);
                    a.end            = new_y;
                    a.exec_cb        = (lv_anim_exec_xcb_t)lv_obj_set_y;
                    a.path_cb        = lv_anim_path_linear;
                    a.ready_cb       = NULL;
                    a.act_time       = 0;
                    a.time           = LV_LIST_DEF_ANIM_TIME;
                    a.playback       = 0;
                    a.playback_pause = 0;
                    a.repeat         = 0;
                    a.repeat_pause   = 0;
                    lv_anim_create(&a);
#endif
                }
            }
            break;
        }
        e_prev = e;
        e      = lv_list_get_prev_btn(list, e);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1d211
movq %rbx, %rdi
callq 0x2695e
movq %rax, %r14
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1cdad
testq %rax, %rax
je 0x1d2a5
movq %rax, %r15
movzwl 0x26(%rax), %eax
cmpw 0x26(%rbx), %ax
jle 0x1d222
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1cdad
testq %rax, %rax
je 0x1d2a5
movzwl 0x26(%rax), %ecx
movq %r15, %r12
movq %rax, %r15
cmpw 0x26(%rbx), %cx
jg 0x1d1eb
jmp 0x1d225
leaq 0x21fcc(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1d220
xorl %r12d, %r12d
testq %r12, %r12
je 0x1d2a5
movq %rbx, %rdi
callq 0x5697
movl %eax, %ebp
movq %r12, %rdi
callq 0x4c15
movl %eax, %r15d
movq %r12, %rdi
callq 0x5697
addl %r15d, %eax
subl %eax, %ebp
movq %rbx, %rdi
callq 0x26a3d
testw %ax, %ax
je 0x1d2b2
leaq 0x8(%rsp), %rbx
movq %r14, (%rbx)
movq %r14, %rdi
callq 0x4c15
cwtl
movl %eax, 0x20(%rbx)
movswl %bp, %eax
movl %eax, 0x24(%rbx)
leaq -0x17d61(%rip), %rax    # 0x5519
movq %rax, 0x8(%rbx)
leaq 0xc903(%rip), %rax      # 0x29b88
movq %rax, 0x10(%rbx)
movq $0x0, 0x18(%rbx)
movq $0x64, 0x28(%rbx)
movb $0x0, 0x30(%rbx)
movq %rbx, %rdi
callq 0x29bb4
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movswl %bp, %esi
movq %r14, %rdi
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x5519
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_down
void lv_list_down(const lv_obj_t * list)
{
    LV_ASSERT_OBJ(list, LV_OBJX_NAME);

    /*Search the first list element which 'y' coordinate is above the parent
     * and position the list to show this element on the top*/
    lv_obj_t * scrl = lv_page_get_scrl(list);
    lv_obj_t * e;
    e = lv_list_get_prev_btn(list, NULL);
    while(e != NULL) {
        if(e->coords.y1 < list->coords.y1) {
            lv_coord_t new_y = -lv_obj_get_y(e);
            if(lv_list_get_anim_time(list) == 0) {
                lv_obj_set_y(scrl, new_y);
            } else {
#if LV_USE_ANIMATION
                lv_anim_t a;
                a.var            = scrl;
                a.start          = lv_obj_get_y(scrl);
                a.end            = new_y;
                a.exec_cb        = (lv_anim_exec_xcb_t)lv_obj_set_y;
                a.path_cb        = lv_anim_path_linear;
                a.ready_cb       = NULL;
                a.act_time       = 0;
                a.time           = LV_LIST_DEF_ANIM_TIME;
                a.playback       = 0;
                a.playback_pause = 0;
                a.repeat         = 0;
                a.repeat_pause   = 0;
                lv_anim_create(&a);
#endif
            }
            break;
        }
        e = lv_list_get_prev_btn(list, e);
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1d30d
movq %rbx, %rdi
callq 0x2695e
movq %rax, %r14
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1cdad
testq %rax, %rax
je 0x1d383
movzwl 0x22(%rax), %ecx
cmpw 0x22(%rbx), %cx
jl 0x1d31e
movq %rbx, %rdi
movq %rax, %rsi
jmp 0x1d2ed
leaq 0x21ed0(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1d31c
movq %rax, %rdi
callq 0x4c15
movl %eax, %ebp
negl %ebp
movq %rbx, %rdi
callq 0x26a3d
testw %ax, %ax
je 0x1d38c
leaq 0x8(%rsp), %rbx
movq %r14, (%rbx)
movq %r14, %rdi
callq 0x4c15
cwtl
movl %eax, 0x20(%rbx)
movswl %bp, %eax
movl %eax, 0x24(%rbx)
leaq -0x17e3f(%rip), %rax    # 0x5519
movq %rax, 0x8(%rbx)
leaq 0xc825(%rip), %rax      # 0x29b88
movq %rax, 0x10(%rbx)
movq $0x0, 0x18(%rbx)
movq $0x64, 0x28(%rbx)
movb $0x0, 0x30(%rbx)
movq %rbx, %rdi
callq 0x29bb4
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movswl %bp, %esi
movq %r14, %rdi
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x5519
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_focus
void lv_list_focus(const lv_obj_t * btn, lv_anim_enable_t anim)
{
    LV_ASSERT_OBJ(btn, "");

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

    lv_obj_t * list = lv_obj_get_parent(lv_obj_get_parent(btn));

    lv_page_focus(list, btn, anim == LV_ANIM_OFF ? 0 : lv_list_get_anim_time(list));
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1d3d3
movq %rbx, %rdi
callq 0x4ab5
movq %rax, %rdi
callq 0x4ab5
movq %rax, %r14
testb %bpl, %bpl
je 0x1d3e4
movq %r14, %rdi
callq 0x26a3d
jmp 0x1d3e6
leaq 0x21e0a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1d3e2
xorl %eax, %eax
movzbl %al, %edx
movq %r14, %rdi
movq %rbx, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x26c87
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_slider.c
// Function: lv_slider_set_style
void lv_slider_set_style(lv_obj_t * slider, lv_slider_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(slider, LV_OBJX_NAME);

    lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider);

    switch(type) {
        case LV_SLIDER_STYLE_BG: lv_bar_set_style(slider, LV_BAR_STYLE_BG, style); break;
        case LV_SLIDER_STYLE_INDIC: lv_bar_set_style(slider, LV_BAR_STYLE_INDIC, style); break;
        case LV_SLIDER_STYLE_KNOB:
            ext->style_knob = style;
            lv_obj_refresh_ext_draw_pad(slider);
            break;
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %rbx
movl %esi, %ebp
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x1e01f
movq %r14, %rdi
callq 0x6af7
cmpb $0x2, %bpl
je 0x1e044
movzbl %bpl, %eax
cmpl $0x1, %eax
je 0x1e030
testl %eax, %eax
jne 0x1e054
movq %r14, %rdi
xorl %esi, %esi
jmp 0x1e038
leaq 0x211be(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1e02e
movq %r14, %rdi
movl $0x1, %esi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %rbp
jmp 0x92f5
movq %rbx, 0x18(%rax)
movq %r14, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x6514
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_slider.c
// Function: lv_slider_set_knob_in
void lv_slider_set_knob_in(lv_obj_t * slider, bool in)
{
    LV_ASSERT_OBJ(slider, LV_OBJX_NAME);

    lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider);
    if(ext->knob_in == in) return;

    ext->knob_in = in == false ? 0 : 1;
    lv_obj_invalidate(slider);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1e096
movq %rbx, %rdi
callq 0x6af7
movb 0x22(%rax), %cl
movl %ecx, %edx
andb $0x1, %dl
cmpb %bpl, %dl
je 0x1e0a7
andb $-0x2, %cl
orb %bpl, %cl
movb %cl, 0x22(%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x4c4d
leaq 0x21147(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1e0a5
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_slider.c
// Function: lv_slider_get_value
int16_t lv_slider_get_value(const lv_obj_t * slider)
{
    LV_ASSERT_OBJ(slider, LV_OBJX_NAME);

    lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider);

    if(ext->drag_value != LV_SLIDER_NOT_PRESSED)
        return ext->drag_value;
    else
        return lv_bar_get_value(slider);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1e0d7
movq %rbx, %rdi
callq 0x6af7
movzwl 0x20(%rax), %eax
cmpl $0x8000, %eax           # imm = 0x8000
jne 0x1e0e8
movq %rbx, %rdi
popq %rbx
jmp 0x94aa
leaq 0x21106(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1e0e6
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_slider.c
// Function: lv_slider_get_style
const lv_style_t * lv_slider_get_style(const lv_obj_t * slider, lv_slider_style_t type)
{
    LV_ASSERT_OBJ(slider, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_slider_ext_t * ext    = lv_obj_get_ext_attr(slider);

    switch(type) {
        case LV_SLIDER_STYLE_BG: style = lv_bar_get_style(slider, LV_BAR_STYLE_BG); break;
        case LV_SLIDER_STYLE_INDIC: style = lv_bar_get_style(slider, LV_BAR_STYLE_INDIC); break;
        case LV_SLIDER_STYLE_KNOB: style = ext->style_knob; break;
        default: style = NULL; break;
    }

    return style;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1e17b
movq %rbx, %rdi
callq 0x6af7
cmpb $0x2, %bpl
je 0x1e19f
movzbl %bpl, %eax
cmpl $0x1, %eax
je 0x1e18c
testl %eax, %eax
jne 0x1e1a5
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x1e194
leaq 0x21062(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1e18a
movq %rbx, %rdi
movl $0x1, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x9591
movq 0x18(%rax), %rax
jmp 0x1e1a7
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_design
static bool lv_ta_design(lv_obj_t * ta, const lv_area_t * mask, lv_design_mode_t mode)
{
    if(mode == LV_DESIGN_COVER_CHK) {
        /*Return false if the object is not covers the mask_p area*/
        return ancestor_design(ta, mask, mode);
    } else if(mode == LV_DESIGN_DRAW_MAIN) {
        /*Draw the object*/
        ancestor_design(ta, mask, mode);

    } else if(mode == LV_DESIGN_DRAW_POST) {
        ancestor_design(ta, mask, mode);
    }
    return true;
}

// Assembly:
pushq %rax
testl %edx, %edx
je 0x1eb04
cmpl $0x1, %edx
je 0x1eafd
cmpl $0x2, %edx
jne 0x1eb0c
movq 0x418fb(%rip), %rax     # 0x603f0
movl $0x2, %edx
popq %rcx
jmpq *%rax
movl $0x1, %edx
jmp 0x1eb06
xorl %edx, %edx
callq *0x418e4(%rip)          # 0x603f0
movb $0x1, %al
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_style
void lv_ta_set_style(lv_obj_t * ta, lv_ta_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);

    switch(type) {
        case LV_TA_STYLE_BG: lv_page_set_style(ta, LV_PAGE_STYLE_BG, style); break;
        case LV_TA_STYLE_SB: lv_page_set_style(ta, LV_PAGE_STYLE_SB, style); break;
        case LV_TA_STYLE_EDGE_FLASH: lv_page_set_style(ta, LV_PAGE_STYLE_EDGE_FLASH, style); break;
        case LV_TA_STYLE_CURSOR:
            ext->cursor.style = style;
            lv_obj_refresh_ext_draw_pad(lv_page_get_scrl(ta)); /*Refresh ext. size because of cursor drawing*/
            refr_cursor_area(ta);
            break;
        case LV_TA_STYLE_PLACEHOLDER:
            if(ext->placeholder) lv_label_set_style(ext->placeholder, LV_LABEL_STYLE_MAIN, style);
            break;
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %rbx
movl %esi, %ebp
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x1ed32
movq %r14, %rdi
callq 0x6af7
cmpb $0x4, %bpl
ja 0x1ed58
movzbl %bpl, %ecx
leaq 0x20caa(%rip), %rdx     # 0x3f9cc
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %r14, %rdi
xorl %esi, %esi
jmp 0x1ed8f
leaq 0x204ab(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1ed41
movq 0x58(%rax), %rdi
testq %rdi, %rdi
je 0x1ed58
movq %rbx, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x5d9f
popq %rbx
popq %r14
popq %rbp
retq
movq %rbx, 0x78(%rax)
movq %r14, %rdi
callq 0x2695e
movq %rax, %rdi
callq 0x6514
movq %r14, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1ff6e
movq %r14, %rdi
movl $0x3, %esi
jmp 0x1ed8f
movq %r14, %rdi
movl $0x2, %esi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %rbp
jmp 0x2640b
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: pwd_char_hider
static void pwd_char_hider(lv_obj_t * ta)
{
    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    if(ext->pwd_mode != 0) {
        char * txt  = lv_label_get_text(ext->label);
        int16_t len = lv_txt_get_encoded_length(txt);
        bool refr   = false;
        uint16_t i;
        for(i = 0; i < len; i++) {
            txt[i] = '*';
            refr   = true;
        }

        txt[i] = '\0';

        if(refr != false) lv_label_set_text(ext->label, txt);
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
callq 0x6af7
testb $0x1, 0x98(%rax)
je 0x1edfc
movq %rax, %rbx
movq 0x50(%rax), %rdi
callq 0x1aa00
movq %rax, %r14
leaq 0x3488d(%rip), %rax     # 0x53650
movq %r14, %rdi
callq *(%rax)
movl %eax, %ebp
movswl %bp, %eax
testl %eax, %eax
jle 0x1edf8
movl %eax, %edx
movq %r14, %rdi
movl $0x2a, %esi
callq 0x20a0
movzwl %bp, %eax
movb $0x0, (%r14,%rax)
movq 0x50(%rbx), %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x1a6da
movb $0x0, (%r14)
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_get_style
const lv_style_t * lv_ta_get_style(const lv_obj_t * ta, lv_ta_style_t type)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_ta_ext_t * ext        = lv_obj_get_ext_attr(ta);

    switch(type) {
        case LV_TA_STYLE_BG: style = lv_page_get_style(ta, LV_PAGE_STYLE_BG); break;
        case LV_TA_STYLE_SB: style = lv_page_get_style(ta, LV_PAGE_STYLE_SB); break;
        case LV_TA_STYLE_EDGE_FLASH: style = lv_page_get_style(ta, LV_PAGE_STYLE_EDGE_FLASH); break;
        case LV_TA_STYLE_CURSOR: style = ext->cursor.style; break;
        case LV_TA_STYLE_PLACEHOLDER:
            if(ext->placeholder) style = lv_label_get_style(ext->placeholder, LV_LABEL_STYLE_MAIN);
            break;
        default: style = NULL; break;
    }

    return style;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1efb5
movq %rbx, %rdi
callq 0x6af7
cmpb $0x4, %bpl
ja 0x1efda
movzbl %bpl, %ecx
leaq 0x20a3b(%rip), %rdx     # 0x3f9e0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x1effb
leaq 0x20228(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1efc4
movq 0x58(%rax), %rdi
testq %rdi, %rdi
je 0x1efda
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x66b6
xorl %eax, %eax
jmp 0x1efe2
movq 0x78(%rax), %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq %rbx, %rdi
movl $0x3, %esi
jmp 0x1effb
movq %rbx, %rdi
movl $0x2, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x264cb
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: cursor_blink_anim
static void cursor_blink_anim(lv_obj_t * ta, lv_anim_value_t show)
{
    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    if(show != ext->cursor.state) {
        ext->cursor.state = show == 0 ? 0 : 1;
        if(ext->cursor.type != LV_CURSOR_NONE && (ext->cursor.type & LV_CURSOR_HIDDEN) == 0) {
            lv_disp_t * disp = lv_obj_get_disp(ta);
            lv_area_t area_tmp;
            lv_area_copy(&area_tmp, &ext->cursor.area);
            area_tmp.x1 += ext->label->coords.x1;
            area_tmp.y1 += ext->label->coords.y1;
            area_tmp.x2 += ext->label->coords.x1;
            area_tmp.y2 += ext->label->coords.y1;
            lv_inv_area(disp, &area_tmp);
        }
    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movl %esi, %ebp
movq %rdi, %r14
callq 0x6af7
movq %rax, %rbx
movzbl 0x90(%rax), %eax
movl %eax, %ecx
shrl $0x4, %ecx
andl $0x1, %ecx
cmpw %bp, %cx
je 0x1f086
testw %bp, %bp
setne %cl
shlb $0x4, %cl
movl %eax, %edx
andb $-0x11, %dl
orb %cl, %dl
movb %dl, 0x90(%rbx)
testb $0xf, %al
sete %cl
andb $0x8, %al
shrb $0x3, %al
orb %cl, %al
jne 0x1f086
movq %r14, %rdi
callq 0x5061
movq 0x50(%rbx), %rcx
movq 0x20(%rcx), %xmm0
pshufd $0x50, %xmm0, %xmm0     # xmm0 = xmm0[0,0,1,1]
movq 0x86(%rbx), %xmm1
paddw %xmm0, %xmm1
leaq 0x8(%rsp), %rsi
movq %xmm1, (%rsi)
movq %rax, %rdi
callq 0x7170
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: placeholder_update
static void placeholder_update(lv_obj_t * ta)
{
    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    const char * ta_text;

    if(ext->placeholder == NULL) return;

    ta_text = lv_ta_get_text(ta);

    if(ta_text[0] == '\0') {
        /*Be sure the main label and the placeholder has the same coordinates*/
        lv_obj_t * scrl               = lv_page_get_scrl(ta);
        const lv_style_t * style_scrl = lv_obj_get_style(scrl);
        lv_obj_set_pos(ext->placeholder, style_scrl->body.padding.left, style_scrl->body.padding.top);
        lv_obj_set_pos(ext->label, style_scrl->body.padding.left, style_scrl->body.padding.top);

        lv_obj_set_width(ext->placeholder, lv_page_get_fit_width(ta));
        lv_obj_set_hidden(ext->placeholder, false);
    } else {
        lv_obj_set_hidden(ext->placeholder, true);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
callq 0x6af7
cmpq $0x0, 0x58(%rax)
je 0x1f8e5
movq %rax, %rbx
movq %r14, %rdi
callq 0x2069b
movb (%rax), %bpl
testb %bpl, %bpl
jne 0x1f8c9
movq %r14, %rdi
callq 0x2695e
movq %rax, %rdi
callq 0x66b6
movq %rax, %r15
movq 0x58(%rbx), %rdi
movswl 0x1a(%rax), %esi
movswl 0x16(%rax), %edx
callq 0x4ad8
movq 0x50(%rbx), %rdi
movswl 0x1a(%r15), %esi
movswl 0x16(%r15), %edx
callq 0x4ad8
movq 0x58(%rbx), %r15
movq %r14, %rdi
callq 0x26af3
movswl %ax, %esi
movq %r15, %rdi
callq 0x570d
xorl %esi, %esi
testb %bpl, %bpl
setne %sil
movq 0x58(%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5f84
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_del_char_forward
void lv_ta_del_char_forward(lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    uint16_t cp = lv_ta_get_cursor_pos(ta);
    lv_ta_set_cursor_pos(ta, cp + 1);
    if(cp != lv_ta_get_cursor_pos(ta)) lv_ta_del_char(ta);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1fb5c
movq %rbx, %rdi
callq 0x1f823
movl %eax, %r14d
leal 0x1(%r14), %eax
movswl %ax, %esi
movq %rbx, %rdi
callq 0x1f5c6
movq %rbx, %rdi
callq 0x1f823
cmpw %ax, %r14w
jne 0x1fb6d
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x1f681(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1fb6b
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1f948
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_placeholder_text
void lv_ta_set_placeholder_text(lv_obj_t * ta, const char * txt)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);
    LV_ASSERT_NULL(txt);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);

    /*Create the placeholder label only when it is needed*/
    if(ext->placeholder == NULL) {
        ext->placeholder = lv_label_create(ta, NULL);

        if(ext->one_line) {
            lv_label_set_long_mode(ext->placeholder, LV_LABEL_LONG_EXPAND);
        } else {
            lv_label_set_long_mode(ext->placeholder, LV_LABEL_LONG_BREAK);
        }
    }

    lv_label_set_text(ext->placeholder, txt);

    /*Refresh the placeholder's align*/
    lv_ta_set_text_align(ta, lv_label_get_align(ext->label));

    placeholder_update(ta);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1fe25
movq %r14, %rdi
callq 0x80e4
testb %al, %al
je 0x1fe36
movq %rbx, %rdi
callq 0x6af7
movq %rax, %r15
cmpq $0x0, 0x58(%rax)
jne 0x1fdf8
movq %rbx, %rdi
xorl %esi, %esi
callq 0x19ed4
movq %rax, 0x58(%r15)
xorl %esi, %esi
testb $0x2, 0x98(%r15)
sete %sil
movq %rax, %rdi
callq 0x1a602
movq 0x58(%r15), %rdi
movq %r14, %rsi
callq 0x1a6da
movq 0x50(%r15), %rdi
callq 0x1a9c6
movzbl %al, %esi
movq %rbx, %rdi
callq 0x1fe47
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x1f852
leaq 0x1f3b8(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1fe34
leaq 0x1f3a7(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x1fe45
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_text_align
void lv_ta_set_text_align(lv_obj_t * ta, lv_label_align_t align)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    lv_obj_t * label  = lv_ta_get_label(ta);
    if(!ext->one_line) {
        lv_label_set_align(label, align);
        if(ext->placeholder) lv_label_set_align(ext->placeholder, align);
    } else {
        /*Normal left align. Just let the text expand*/
        if(align == LV_LABEL_ALIGN_LEFT) {
            lv_label_set_long_mode(label, LV_LABEL_LONG_EXPAND);
            lv_page_set_scrl_fit2(ta, LV_FIT_TIGHT, LV_FIT_FLOOD);
            lv_label_set_align(label, align);
            if(ext->placeholder) lv_label_set_align(ext->placeholder, align);

        }
        /*Else use fix label width equal to the Text area width*/
        else {
            lv_label_set_long_mode(label, LV_LABEL_LONG_CROP);
            lv_page_set_scrl_fit2(ta, LV_FIT_FLOOD, LV_FIT_FLOOD);
            lv_label_set_align(label, align);
            if(ext->placeholder) lv_label_set_align(ext->placeholder, align);

            lv_obj_set_width(label, lv_page_get_fit_width(ta));
        }
    }

    refr_cursor_area(ta);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x1fe9e
movq %rbx, %rdi
callq 0x6af7
movq %rax, %r15
movq %rbx, %rdi
callq 0x204e7
movq %rax, %r14
testb $0x2, 0x98(%r15)
jne 0x1feaf
movzbl %bpl, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x1a95d
movq 0x58(%r15), %rdi
testq %rdi, %rdi
je 0x1ff5f
movl %ebp, %esi
jmp 0x1ff5a
leaq 0x1f33f(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x1fead
movq %r14, %rdi
testb %bpl, %bpl
je 0x1ff19
movl $0x5, %esi
callq 0x1a602
movq %rbx, %rdi
callq 0x2695e
movq %rax, %rdi
movl $0x2, %esi
movl $0x2, %edx
movl $0x2, %ecx
movl $0x2, %r8d
callq 0x22d84
movzbl %bpl, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x1a95d
movq 0x58(%r15), %rdi
testq %rdi, %rdi
je 0x1ff04
movl %ebp, %esi
callq 0x1a95d
movq %rbx, %rdi
callq 0x26af3
movswl %ax, %esi
movq %r14, %rdi
callq 0x570d
jmp 0x1ff5f
xorl %esi, %esi
callq 0x1a602
movq %rbx, %rdi
callq 0x2695e
movq %rax, %rdi
movl $0x1, %esi
movl $0x1, %edx
movl $0x2, %ecx
movl $0x2, %r8d
callq 0x22d84
movq %r14, %rdi
xorl %esi, %esi
callq 0x1a95d
movq 0x58(%r15), %rdi
testq %rdi, %rdi
je 0x1ff5f
xorl %esi, %esi
callq 0x1a95d
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1ff6e
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_cursor_type
void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    if(ext->cursor.type == cur_type) return;

    ext->cursor.type = cur_type;

    refr_cursor_area(ta);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x202f7
movq %rbx, %rdi
callq 0x6af7
movb 0x90(%rax), %cl
movl %ecx, %edx
andb $0xf, %dl
cmpb %bpl, %dl
jne 0x20308
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x1eee6(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x20306
andb $0xf, %bpl
andb $-0x10, %cl
orb %bpl, %cl
movb %cl, 0x90(%rax)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x1ff6e
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_pwd_mode
void lv_ta_set_pwd_mode(lv_obj_t * ta, bool en)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    if(ext->pwd_mode == en) return;

    /*Pwd mode is now enabled*/
    if(ext->pwd_mode == 0 && en != false) {
        char * txt   = lv_label_get_text(ext->label);
        size_t len = strlen(txt);
        ext->pwd_tmp = lv_mem_alloc(len + 1);
        LV_ASSERT_MEM(ext->pwd_tmp);
        if(ext->pwd_tmp == NULL) return;

        strcpy(ext->pwd_tmp, txt);

        uint16_t i;
        uint16_t encoded_len = lv_txt_get_encoded_length(txt); 
        for(i = 0; i < encoded_len; i++) {
            txt[i] = '*'; /*All char to '*'*/
        }
        txt[i] = '\0';

        lv_ta_clear_selection(ta);

        lv_label_set_text(ext->label, NULL);
    }
    /*Pwd mode is now disabled*/
    else if(ext->pwd_mode == 1 && en == false) {
        lv_ta_clear_selection(ta);
        lv_label_set_text(ext->label, ext->pwd_tmp);
        lv_mem_free(ext->pwd_tmp);
        ext->pwd_tmp = NULL;
    }

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

    refr_cursor_area(ta);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x20425
movq %rbx, %rdi
callq 0x6af7
movq %rax, %r14
movb 0x98(%rax), %al
movl %eax, %ecx
andb $0x1, %cl
cmpb %bpl, %cl
je 0x20436
movl %ebp, %ecx
notb %cl
orb %al, %cl
testb $0x1, %cl
jne 0x2043f
movq 0x50(%r14), %rdi
callq 0x1aa00
movq %rax, %r15
movq %rax, %rdi
callq 0x2070
leaq 0x1(%rax), %rdi
callq 0x29f85
movq %rax, 0x60(%r14)
movq %rax, %rdi
callq 0x80e4
movq 0x60(%r14), %rsi
testb %al, %al
je 0x20475
testq %rsi, %rsi
je 0x20436
movq %rsi, %rdi
movq %r15, %rsi
callq 0x2040
leaq 0x3324f(%rip), %rax     # 0x53650
movq %r15, %rdi
callq *(%rax)
testw %ax, %ax
je 0x20494
movzwl %ax, %r12d
movq %r15, %rdi
movl $0x2a, %esi
movq %r12, %rdx
callq 0x20a0
jmp 0x20497
leaq 0x1edb8(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x20434
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
testb $0x1, %al
sete %al
orb %bpl, %al
jne 0x204b3
movq %rbx, %rdi
callq 0x80e4
testb %al, %al
je 0x20483
movq 0x50(%r14), %rdi
movq 0x60(%r14), %rsi
callq 0x1a6da
movq 0x60(%r14), %rdi
callq 0x2a006
movq $0x0, 0x60(%r14)
jmp 0x204b3
leaq 0x1ec54(%rip), %rdi     # 0x3f0d0
callq 0x8294
jmp 0x20481
leaq 0x1ed5a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x20492
xorl %r12d, %r12d
movb $0x0, (%r15,%r12)
movq %rbx, %rdi
callq 0x80e4
testb %al, %al
je 0x204d6
movq 0x50(%r14), %rdi
xorl %esi, %esi
callq 0x1a6da
movb 0x98(%r14), %al
andb $-0x2, %al
orb %bpl, %al
movb %al, 0x98(%r14)
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x1ff6e
leaq 0x1ed07(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x204e5
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_pwd_show_time
void lv_ta_set_pwd_show_time(lv_obj_t * ta, uint16_t time)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

#if LV_USE_ANIMATION == 0
    time = 0;
#endif

    lv_ta_ext_t * ext  = lv_obj_get_ext_attr(ta);
    ext->pwd_show_time = time;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
callq 0x80e4
testb %al, %al
je 0x205fb
movq %r14, %rdi
callq 0x6af7
movw %bx, 0x72(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x1ebe2(%rip), %rdi     # 0x3f1e4
movq %r14, %rsi
callq 0x8294
jmp 0x2060a
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_set_cursor_blink_time
void lv_ta_set_cursor_blink_time(lv_obj_t * ta, uint16_t time)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

#if LV_USE_ANIMATION == 0
    time = 0;
#endif

    lv_ta_ext_t * ext      = lv_obj_get_ext_attr(ta);
    ext->cursor.blink_time = time;

#if LV_USE_ANIMATION
    if(ext->cursor.blink_time) {
        /*Reset cursor blink animation*/
        lv_anim_t a;
        a.var            = ta;
        a.exec_cb        = (lv_anim_exec_xcb_t)cursor_blink_anim;
        a.time           = ext->cursor.blink_time;
        a.act_time       = 0;
        a.ready_cb       = NULL;
        a.start          = 1;
        a.end            = 0;
        a.repeat         = 1;
        a.repeat_pause   = 0;
        a.playback       = 1;
        a.playback_pause = 0;
        a.path_cb        = lv_anim_path_step;
        lv_anim_create(&a);
    } else {
        ext->cursor.state = 1;
    }
#else
    ext->cursor.state = 1;
#endif
}

// Assembly:
pushq %rbp
pushq %rbx
subq $0x38, %rsp
movl %esi, %ebp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x2067c
movq %rbx, %rdi
callq 0x6af7
movw %bp, 0x84(%rax)
testw %bp, %bp
je 0x2068d
movq %rsp, %rdi
movq %rbx, (%rdi)
leaq -0x163b(%rip), %rax     # 0x1f006
movq %rax, 0x8(%rdi)
movw %bp, 0x28(%rdi)
movw $0x0, 0x2a(%rdi)
movq $0x0, 0x18(%rdi)
movq $0x1, 0x20(%rdi)
movb $-0x1, 0x30(%rdi)
movl $0x0, 0x2c(%rdi)
leaq 0x98e3(%rip), %rax      # 0x29f54
movq %rax, 0x10(%rdi)
callq 0x29bb4
jmp 0x20694
leaq 0x1eb61(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x2068b
orb $0x10, 0x90(%rax)
addq $0x38, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_get_text
const char * lv_ta_get_text(const lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);

    const char * txt;
    if(ext->pwd_mode == 0) {
        txt = lv_label_get_text(ext->label);
    } else {
        txt = ext->pwd_tmp;
    }

    return txt;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x206c3
movq %rbx, %rdi
callq 0x6af7
testb $0x1, 0x98(%rax)
jne 0x206d4
movq 0x50(%rax), %rdi
popq %rbx
jmp 0x1aa00
leaq 0x1eb1a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x206d2
movq 0x60(%rax), %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_get_placeholder_text
const char * lv_ta_get_placeholder_text(lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);

    const char * txt = NULL;

    if(ext->placeholder) txt = lv_label_get_text(ext->placeholder);

    return txt;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x206fe
movq %rbx, %rdi
callq 0x6af7
movq 0x58(%rax), %rdi
testq %rdi, %rdi
je 0x2070f
popq %rbx
jmp 0x1aa00
leaq 0x1eadf(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x2070d
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_cursor_right
void lv_ta_cursor_right(lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    uint16_t cp = lv_ta_get_cursor_pos(ta);
    cp++;
    lv_ta_set_cursor_pos(ta, cp);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x2089a
movq %rbx, %rdi
callq 0x1f823
incl %eax
movswl %ax, %esi
movq %rbx, %rdi
popq %rbx
jmp 0x1f5c6
leaq 0x1e943(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x208a9
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_cursor_left
void lv_ta_cursor_left(lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    uint16_t cp = lv_ta_get_cursor_pos(ta);
    if(cp > 0) {
        cp--;
        lv_ta_set_cursor_pos(ta, cp);
    }
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x208d3
movq %rbx, %rdi
callq 0x1f823
testw %ax, %ax
je 0x208e4
decl %eax
movswl %ax, %esi
movq %rbx, %rdi
popq %rbx
jmp 0x1f5c6
leaq 0x1e90a(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x208e2
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: lv_ta_cursor_down
void lv_ta_cursor_down(lv_obj_t * ta)
{
    LV_ASSERT_OBJ(ta, LV_OBJX_NAME);

    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
    lv_point_t pos;

    /*Get the position of the current letter*/
    lv_label_get_letter_pos(ext->label, lv_ta_get_cursor_pos(ta), &pos);

    /*Increment the y with one line and keep the valid x*/
    const lv_style_t * label_style = lv_obj_get_style(ext->label);
    const lv_font_t * font_p       = label_style->text.font;
    lv_coord_t font_h              = lv_font_get_line_height(font_p);
    pos.y += font_h + label_style->text.line_space + 1;
    pos.x = ext->cursor.valid_x;

    /*Do not go below the last line*/
    if(pos.y < lv_obj_get_height(ext->label)) {
        /*Get the letter index on the new cursor position and set it*/
        uint16_t new_cur_pos = lv_label_get_letter_on(ext->label, &pos);

        lv_coord_t cur_valid_x_tmp = ext->cursor.valid_x; /*Cursor position set overwrites the valid positon */
        lv_ta_set_cursor_pos(ta, new_cur_pos);
        ext->cursor.valid_x = cur_valid_x_tmp;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
callq 0x80e4
testb %al, %al
je 0x209a0
movq %rbx, %rdi
callq 0x6af7
movq %rax, %r14
movq 0x50(%rax), %r15
movq %rbx, %rdi
callq 0x1f823
movzwl %ax, %esi
leaq 0xc(%rsp), %r12
movq %r15, %rdi
movq %r12, %rdx
callq 0x1b484
movq 0x50(%r14), %rdi
callq 0x66b6
movq 0x28(%rax), %rcx
movzbl 0x10(%rcx), %ebp
addw 0x32(%rax), %bp
addw 0x2(%r12), %bp
incl %ebp
movw %bp, 0x2(%r12)
movzwl 0x80(%r14), %eax
movw %ax, (%r12)
movq 0x50(%r14), %rdi
callq 0x5697
cmpw %ax, %bp
jge 0x20993
movq 0x50(%r14), %rdi
leaq 0xc(%rsp), %rsi
callq 0x1b78e
movzwl 0x80(%r14), %ebp
movswl %ax, %esi
movq %rbx, %rdi
callq 0x1f5c6
movw %bp, 0x80(%r14)
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1e83d(%rip), %rdi     # 0x3f1e4
movq %rbx, %rsi
callq 0x8294
jmp 0x209af