LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_label.c
// Function: lv_label_get_dot_tmp
static char * lv_label_get_dot_tmp(lv_obj_t * label)
{
    lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
    if(ext->dot_tmp_alloc) {
        return ext->dot.tmp_ptr;
    } else {
        return ext->dot.tmp;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw 0x18(%rax), %ax
shrw $0x9, %ax
andw $0x1, %ax
cmpb $0x0, %al
je 0x2cb8b
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2cb97
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_next_btn
lv_obj_t * lv_list_get_next_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_back(scrl, prev_btn);
    if(btn == NULL) return NULL;

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

    return btn;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2d78f
movq -0x10(%rbp), %rsi
leaq 0x3a974(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2d78d
movq -0x10(%rbp), %rdi
callq 0x3e970
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9e20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x2d7be
movq $0x0, -0x8(%rbp)
jmp 0x2d7f7
jmp 0x2d7c0
movq -0x20(%rbp), %rdi
callq 0x2e590
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2d7ef
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x9e20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x2d7ed
jmp 0x2d7ef
jmp 0x2d7c0
movq -0x20(%rbp), %rax
movq %rax, -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_list.c
// Function: lv_list_get_btn_img
lv_obj_t * lv_list_get_btn_img(const lv_obj_t * btn)
{
    LV_ASSERT_OBJ(btn, "lv_btn");

#if LV_USE_IMG != 0
    lv_obj_t * img = lv_obj_get_child(btn, NULL);
    if(img == NULL) return NULL;

    while(lv_list_is_list_img(img) == false) {
        img = lv_obj_get_child(btn, img);
        if(img == NULL) break;
    }

    return img;
#else
    return NULL;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2d83b
movq -0x10(%rbp), %rsi
leaq 0x3a8c8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2d839
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2d85d
movq $0x0, -0x8(%rbp)
jmp 0x2d896
jmp 0x2d85f
movq -0x18(%rbp), %rdi
callq 0x2e520
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2d88e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x7c20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2d88c
jmp 0x2d88e
jmp 0x2d85f
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_get_btn_text
const char * lv_list_get_btn_text(const lv_obj_t * btn)
{
    LV_ASSERT_OBJ(btn, "lv_btn");

    lv_obj_t * label = lv_list_get_btn_label(btn);
    if(label == NULL) return "";
    return lv_label_get_text(label);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2db8b
movq -0x10(%rbp), %rsi
leaq 0x3a578(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2db89
movq -0x10(%rbp), %rdi
callq 0x2e420
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2dbac
leaq 0x3e56f(%rip), %rax     # 0x6c115
movq %rax, -0x8(%rbp)
jmp 0x2dbb9
movq -0x18(%rbp), %rdi
callq 0x2abc0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2dbfb
movq -0x8(%rbp), %rsi
leaq 0x3a508(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2dbf9
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x7bb0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw $0x0, 0x80(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2df1f
movq -0x8(%rbp), %rsi
leaq 0x3a1e4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2df1d
cmpq $0x0, -0x10(%rbp)
je 0x2df47
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2df45
movq -0x8(%rbp), %rsi
leaq 0x3a1be(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2df43
jmp 0x2df47
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x2dfb4
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
callq 0x20930
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x2df92
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
xorl %esi, %esi
callq 0x20730
jmp 0x2dfb2
movzbl -0x19(%rbp), %eax
cmpl $0x3, %eax
jne 0x2dfb0
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
movl $0x2, %esi
callq 0x20730
jmp 0x2dfb2
jmp 0x2dfb4
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x90(%rax)
cmpq $0x0, -0x10(%rbp)
je 0x2dfd9
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x2e053
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
callq 0x20930
movb %al, -0x1a(%rbp)
movzbl -0x1a(%rbp), %eax
cmpl $0x0, %eax
jne 0x2e01a
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
movl $0x1, %esi
callq 0x20730
jmp 0x2e03a
movzbl -0x1a(%rbp), %eax
cmpl $0x2, %eax
jne 0x2e038
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
movl $0x3, %esi
callq 0x20730
jmp 0x2e03a
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rsi
movl $0x1, %edx
callq 0x3eec0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2e092
movq -0x10(%rbp), %rsi
leaq 0x3a071(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e090
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x80(%rcx), %ecx
cmpl %ecx, %eax
jl 0x2e0b8
movb $0x0, -0x1(%rbp)
jmp 0x2e12a
movw $0x0, -0x22(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2d760
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x2e126
movzwl -0x22(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jne 0x2e107
movq -0x30(%rbp), %rdi
callq 0x75c0
movq -0x20(%rbp), %rax
movw 0x80(%rax), %cx
addw $-0x1, %cx
movw %cx, 0x80(%rax)
movb $0x1, -0x1(%rbp)
jmp 0x2e12a
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x2d760
movq %rax, -0x30(%rbp)
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x2e0cf
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %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_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 %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2e1df
movq -0x10(%rbp), %rsi
leaq 0x39f24(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e1dd
movq -0x10(%rbp), %rdi
callq 0x3e970
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x7c20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x2e20e
movq $0x0, -0x8(%rbp)
jmp 0x2e247
jmp 0x2e210
movq -0x20(%rbp), %rdi
callq 0x2e590
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2e23f
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x7c20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x2e23d
jmp 0x2e23f
jmp 0x2e210
movq -0x20(%rbp), %rax
movq %rax, -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_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
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 0x2e291
movq -0x8(%rbp), %rsi
leaq 0x39e72(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e28f
movzbl -0x9(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2e350
movb %al, %cl
movl -0x1c(%rbp), %eax
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x2e2b2
jmp 0x2e345
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2e1b0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x2e338
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x2e2e5
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x2e2e5
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
jne 0x2e2fa
movq -0x8(%rbp), %rdi
movl $0x2, %esi
movl $0x1, %edx
callq 0x2dc70
jmp 0x2e325
movzbl -0x9(%rbp), %eax
cmpl $0x6, %eax
je 0x2e315
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
je 0x2e315
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
jne 0x2e323
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x2e390
jmp 0x2e325
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2e1b0
movq %rax, -0x18(%rbp)
jmp 0x2e2c3
movq -0x8(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2d560
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_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2e44b
movq -0x10(%rbp), %rsi
leaq 0x39cb8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e449
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2e46d
movq $0x0, -0x8(%rbp)
jmp 0x2e4a6
jmp 0x2e46f
movq -0x18(%rbp), %rdi
callq 0x2e4b0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2e49e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x7c20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2e49c
jmp 0x2e49e
jmp 0x2e46f
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_is_list_label
static bool lv_list_is_list_label(lv_obj_t * list_label)
{
    lv_obj_type_t type;

    lv_obj_get_type(list_label, &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_label")) return true;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xa930
movb $0x0, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
cmpl $0x8, %eax
jge 0x2e510
movzbl -0x51(%rbp), %eax
cmpq $0x0, -0x50(%rbp,%rax,8)
jne 0x2e4e4
jmp 0x2e510
movzbl -0x51(%rbp), %eax
movq -0x50(%rbp,%rax,8), %rdi
leaq 0x3a0f2(%rip), %rsi     # 0x685e6
callq 0x20d0
cmpl $0x0, %eax
jne 0x2e504
movb $0x1, -0x1(%rbp)
jmp 0x2e514
jmp 0x2e506
movb -0x51(%rbp), %al
addb $0x1, %al
movb %al, -0x51(%rbp)
jmp 0x2e4cd
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_is_list_img
static bool lv_list_is_list_img(lv_obj_t * list_img)
{
    lv_obj_type_t type;

    lv_obj_get_type(list_img, &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_img")) return true;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xa930
movb $0x0, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
cmpl $0x8, %eax
jge 0x2e580
movzbl -0x51(%rbp), %eax
cmpq $0x0, -0x50(%rbp,%rax,8)
jne 0x2e554
jmp 0x2e580
movzbl -0x51(%rbp), %eax
movq -0x50(%rbp,%rax,8), %rdi
leaq 0x3a0dc(%rip), %rsi     # 0x68640
callq 0x20d0
cmpl $0x0, %eax
jne 0x2e574
movb $0x1, -0x1(%rbp)
jmp 0x2e584
jmp 0x2e576
movb -0x51(%rbp), %al
addb $0x1, %al
movb %al, -0x51(%rbp)
jmp 0x2e53d
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xa930
movb $0x0, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
cmpl $0x8, %eax
jge 0x2e5f0
movzbl -0x51(%rbp), %eax
cmpq $0x0, -0x50(%rbp,%rax,8)
jne 0x2e5c4
jmp 0x2e5f0
movzbl -0x51(%rbp), %eax
movq -0x50(%rbp,%rax,8), %rdi
leaq 0x39f28(%rip), %rsi     # 0x684fc
callq 0x20d0
cmpl $0x0, %eax
jne 0x2e5e4
movb $0x1, -0x1(%rbp)
jmp 0x2e5f4
jmp 0x2e5e6
movb -0x51(%rbp), %al
addb $0x1, %al
movb %al, -0x51(%rbp)
jmp 0x2e5ad
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2e62f
movq -0x10(%rbp), %rsi
leaq 0x39ad4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e62d
movq -0x18(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2e64e
movq -0x18(%rbp), %rsi
leaq 0x39ab5(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e64c
movl $0x0, -0x1c(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x2e671
movq -0x18(%rbp), %rdi
callq 0x71b0
movq %rax, %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2d760
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x2e6b7
movq -0x28(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x2e69b
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x2e6be
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x2d760
movq %rax, -0x28(%rbp)
jmp 0x2e682
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
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_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
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 0x2e7d1
movq -0x8(%rbp), %rsi
leaq 0x39932(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2e7cf
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x8, %rax
ja 0x2e8a2
movq -0x28(%rbp), %rax
leaq 0x39e11(%rip), %rcx     # 0x68614
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x20(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
movq -0x20(%rbp), %rax
movq 0x70(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2e8aa
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_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
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x2ea7b
movq -0x8(%rbp), %rsi
leaq 0x39688(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ea79
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2e1b0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x2eb77
movq -0x18(%rbp), %rax
movswl 0x22(%rax), %eax
movq -0x8(%rbp), %rcx
movswl 0x22(%rcx), %ecx
cmpl %ecx, %eax
jge 0x2eb61
movq -0x18(%rbp), %rdi
callq 0x73c0
movswl %ax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movw %ax, -0x1a(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2ea30
movzwl %ax, %eax
cmpl $0x0, %eax
jne 0x2eaf0
movq -0x10(%rbp), %rdi
movswl -0x1a(%rbp), %esi
callq 0x8120
jmp 0x2eb5f
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
callq 0x73c0
cwtl
movl %eax, -0x38(%rbp)
movswl -0x1a(%rbp), %eax
movl %eax, -0x34(%rbp)
leaq -0x269f3(%rip), %rax    # 0x8120
movq %rax, -0x50(%rbp)
leaq 0x15912(%rip), %rax     # 0x44430
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movw $0x0, -0x2e(%rbp)
movw $0x64, -0x30(%rbp)
movb -0x28(%rbp), %al
andb $-0x2, %al
orb $0x0, %al
movb %al, -0x28(%rbp)
movw $0x0, -0x2c(%rbp)
movb -0x28(%rbp), %al
andb $-0x3, %al
orb $0x0, %al
movb %al, -0x28(%rbp)
movw $0x0, -0x2a(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x444a0
jmp 0x2eb77
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2e1b0
movq %rax, -0x18(%rbp)
jmp 0x2ea99
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
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 0x2ebb1
movq -0x8(%rbp), %rsi
leaq 0x39552(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2ebaf
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x2ebe6
xorl %eax, %eax
movl %eax, -0x2c(%rbp)
jmp 0x2ebf5
movq -0x18(%rbp), %rdi
callq 0x2ea30
movzwl %ax, %eax
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdi
movl -0x2c(%rbp), %eax
movzbl %al, %edx
callq 0x3eec0
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_list.c
// Function: lv_list_btn_single_select
static void lv_list_btn_single_select(lv_obj_t * btn)
{
    lv_obj_t * list = lv_obj_get_parent(lv_obj_get_parent(btn));

    lv_obj_t * e = lv_list_get_next_btn(list, NULL);
    do {
        if(e == btn) {
            lv_btn_set_state(e, LV_BTN_STATE_TGL_REL);
        } else {
            lv_btn_set_state(e, LV_BTN_STATE_REL);
        }
        e = lv_list_get_next_btn(list, e);
    } while(e != NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2d760
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x8(%rbp), %rax
jne 0x2ecdc
movq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x20730
jmp 0x2ece7
movq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x20730
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2d760
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x2ecc2
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/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
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 0x30315
movq -0x8(%rbp), %rsi
leaq 0x37dee(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x30313
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x30343
jmp 0x3032f
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x30354
jmp 0x30339
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x30368
jmp 0x3037d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0xf300
jmp 0x3037d
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0xf300
jmp 0x3037d
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%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_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
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 0x303c3
movq -0x8(%rbp), %rsi
leaq 0x37d40(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x303c1
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x22(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movb -0x9(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x303eb
jmp 0x3041d
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0x22(%rax), %cl
andb $0x1, %dl
andb $-0x2, %cl
orb %dl, %cl
movb %cl, 0x22(%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_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3045b
movq -0x10(%rbp), %rsi
leaq 0x37ca8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x30459
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x20(%rax), %eax
cmpl $0xffff8000, %eax       # imm = 0xFFFF8000
je 0x30485
movq -0x18(%rbp), %rax
movw 0x20(%rax), %ax
movw %ax, -0x2(%rbp)
jmp 0x30492
movq -0x10(%rbp), %rdi
callq 0xf5e0
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
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 0x30591
movq -0x8(%rbp), %rsi
leaq 0x37b72(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3058f
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 0x305c7
jmp 0x305b3
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x305d8
jmp 0x305bd
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x305ec
jmp 0x305fa
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0xf7a0
movq %rax, -0x18(%rbp)
jmp 0x30602
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0xf7a0
movq %rax, -0x18(%rbp)
jmp 0x30602
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x30602
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_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
cmpl $0x2, %eax
jne 0x3153a
movq 0x57f9b(%rip), %rax     # 0x894c0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x31580
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
jne 0x3155a
movq 0x57f76(%rip), %rax     # 0x894c0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
jmp 0x3157a
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x31578
movq 0x57f56(%rip), %rax     # 0x894c0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movzbl -0x19(%rbp), %edx
callq *%rax
jmp 0x3157a
jmp 0x3157c
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
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_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
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 0x319e5
movq -0x8(%rbp), %rsi
leaq 0x3671e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x319e3
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0x31a99
movq -0x28(%rbp), %rax
leaq 0x36c45(%rip), %rcx     # 0x68654
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x3dff0
jmp 0x31a99
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x3dff0
jmp 0x31a99
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x3, %esi
callq 0x3dff0
jmp 0x31a99
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, %rdi
callq 0x9dc0
movq -0x8(%rbp), %rdi
callq 0x334a0
jmp 0x31a99
movq -0x20(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x31a97
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x33e50
jmp 0x31a99
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movb 0x98(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x31b56
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2abc0
movq %rax, -0x18(%rbp)
leaq 0x4abf7(%rip), %rax     # 0x7c6e0
movq (%rax), %rax
movq -0x18(%rbp), %rdi
callq *%rax
movw %ax, -0x1a(%rbp)
movb $0x0, -0x1b(%rbp)
movw $0x0, -0x1e(%rbp)
movzwl -0x1e(%rbp), %eax
movswl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jge 0x31b2a
movq -0x18(%rbp), %rax
movzwl -0x1e(%rbp), %ecx
movb $0x2a, (%rax,%rcx)
movb $0x1, -0x1b(%rbp)
movw -0x1e(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1e(%rbp)
jmp 0x31b00
movq -0x18(%rbp), %rax
movzwl -0x1e(%rbp), %ecx
movb $0x0, (%rax,%rcx)
movb -0x1b(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x31b54
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x2a630
jmp 0x31b56
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/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
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 0x31db1
movq -0x8(%rbp), %rsi
leaq 0x36352(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x31daf
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0x31e4f
movq -0x28(%rbp), %rax
leaq 0x36889(%rip), %rcx     # 0x68668
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x31e57
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x31e57
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x31e57
movq -0x20(%rbp), %rax
movq 0x78(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x31e57
movq -0x20(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x31e4d
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdi
xorl %esi, %esi
callq 0x342a0
movq %rax, -0x18(%rbp)
jmp 0x31e57
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_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
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movswl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movb 0x90(%rcx), %cl
shrb $0x4, %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x31f99
movswl -0xa(%rbp), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %dl
movq -0x18(%rbp), %rax
movb 0x90(%rax), %cl
andb $0x1, %dl
shlb $0x4, %dl
andb $-0x11, %cl
orb %dl, %cl
movb %cl, 0x90(%rax)
movq -0x18(%rbp), %rax
movb 0x90(%rax), %al
andb $0xf, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x31f97
movq -0x18(%rbp), %rax
movb 0x90(%rax), %al
andb $0xf, %al
movzbl %al, %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x31f97
movq -0x8(%rbp), %rdi
callq 0x7a40
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rsi
addq $0x78, %rsi
addq $0xe, %rsi
leaq -0x28(%rbp), %rdi
callq 0x34820
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movswl 0x20(%rax), %ecx
movswl -0x28(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movswl 0x22(%rax), %ecx
movswl -0x26(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x26(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movswl 0x20(%rax), %ecx
movswl -0x24(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x24(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movswl 0x22(%rax), %ecx
movswl -0x22(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xadd0
jmp 0x31f99
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_ta.c
// Function: char_is_accepted
static bool char_is_accepted(lv_obj_t * ta, uint32_t c)
{
    lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);

    /*If no restriction accept it*/
    if(ext->accapted_chars == NULL && ext->max_length == 0) return true;

    /*Too many characters?*/
    if(ext->max_length > 0 && lv_txt_get_encoded_length(lv_ta_get_text(ta)) >= ext->max_length) {
        return false;
    }

    /*Accepted character?*/
    if(ext->accapted_chars) {
        uint32_t i = 0;
        uint32_t a;
        while(ext->accapted_chars[i] != '\0') {
            a = lv_txt_encoded_next(ext->accapted_chars, &i);
            if(a == c) return true; /*Accepted*/
        }

        return false; /*The character wasn't in the list*/
    } else {
        return true; /*If the accepted char list in not specified the accept the character*/
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x68(%rax)
jne 0x325dd
movq -0x20(%rbp), %rax
movzwl 0x70(%rax), %eax
cmpl $0x0, %eax
jne 0x325dd
movb $0x1, -0x1(%rbp)
jmp 0x32677
movq -0x20(%rbp), %rax
movzwl 0x70(%rax), %eax
cmpl $0x0, %eax
jle 0x3261c
leaq 0x4a0ef(%rip), %rax     # 0x7c6e0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x34010
movq %rax, %rdi
movq -0x30(%rbp), %rax
callq *%rax
movq -0x20(%rbp), %rcx
movzwl 0x70(%rcx), %ecx
cmpl %ecx, %eax
jb 0x3261c
movb $0x0, -0x1(%rbp)
jmp 0x32677
movq -0x20(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0x32673
movl $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rax
movl -0x24(%rbp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x3266d
leaq 0x4a077(%rip), %rax     # 0x7c6c0
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x68(%rcx), %rdi
leaq -0x24(%rbp), %rsi
callq *%rax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x14(%rbp), %eax
jne 0x3266b
movb $0x1, -0x1(%rbp)
jmp 0x32677
jmp 0x3262e
movb $0x0, -0x1(%rbp)
jmp 0x32677
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %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_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
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x58(%rax)
jne 0x32b29
jmp 0x32be4
movq -0x8(%rbp), %rdi
callq 0x34010
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x32bd2
movq -0x8(%rbp), %rdi
callq 0x3e970
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0xa080
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
movq -0x28(%rbp), %rax
movw 0x1a(%rax), %cx
movq -0x28(%rbp), %rax
movswl %cx, %esi
movswl 0x16(%rax), %edx
callq 0x71f0
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movq -0x28(%rbp), %rax
movw 0x1a(%rax), %cx
movq -0x28(%rbp), %rax
movswl %cx, %esi
movswl 0x16(%rax), %edx
callq 0x71f0
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3ec60
movq -0x30(%rbp), %rdi
movswl %ax, %esi
callq 0x8430
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
xorl %esi, %esi
callq 0x93e0
jmp 0x32be4
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
movl $0x1, %esi
callq 0x93e0
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_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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x32f2b
movq -0x8(%rbp), %rsi
leaq 0x351d8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x32f29
movq -0x8(%rbp), %rdi
callq 0x32ab0
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %eax
addl $0x1, %eax
movswl %ax, %esi
callq 0x32770
movzwl -0xa(%rbp), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x32ab0
movw %ax, %cx
movl -0x10(%rbp), %eax
movzwl %cx, %ecx
cmpl %ecx, %eax
je 0x32f71
movq -0x8(%rbp), %rdi
callq 0x32c90
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)