LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/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 %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 0x3324f
movq -0x8(%rbp), %rsi
leaq 0x34eb4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3324d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3326e
movq -0x10(%rbp), %rsi
leaq 0x34e95(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3326c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x58(%rax)
jne 0x332d5
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x29820
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x18(%rbp), %rax
movb 0x98(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x332c1
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
xorl %esi, %esi
callq 0x2a4f0
jmp 0x332d3
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
movl $0x1, %esi
callq 0x2a4f0
jmp 0x332d5
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2a630
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2ab50
movq -0x20(%rbp), %rdi
movzbl %al, %esi
callq 0x33320
movq -0x8(%rbp), %rdi
callq 0x32b00
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_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
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 0x33351
movq -0x8(%rbp), %rsi
leaq 0x34db2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3334f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x33d10
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movb 0x98(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
jne 0x333ab
movq -0x20(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x333a6
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
jmp 0x33463
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x333fd
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x2a4f0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
movl $0x2, %edx
callq 0x31590
movq -0x20(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x333fb
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
jmp 0x33461
movq -0x20(%rbp), %rdi
movl $0x5, %esi
callq 0x2a4f0
movq -0x8(%rbp), %rdi
movl $0x2, %edx
movl %edx, %esi
callq 0x31590
movq -0x20(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x33444
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rdi
movzbl -0x9(%rbp), %esi
callq 0x2aac0
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3ec60
movq -0x28(%rbp), %rdi
movswl %ax, %esi
callq 0x8430
jmp 0x33463
movq -0x8(%rbp), %rdi
callq 0x334a0
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: 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
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 0x33a21
movq -0x8(%rbp), %rsi
leaq 0x346e2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x33a1f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x90(%rax), %al
andb $0xf, %al
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x33a47
jmp 0x33a6b
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x90(%rax), %cl
andb $0xf, %dl
andb $-0x10, %cl
orb %dl, %cl
movb %cl, 0x90(%rax)
movq -0x8(%rbp), %rdi
callq 0x334a0
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_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
movq %rsp, %rbp
subq $0x50, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x33f52
movq -0x8(%rbp), %rsi
leaq 0x341b1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x33f50
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x84(%rax)
movq -0x18(%rbp), %rax
cmpw $0x0, 0x84(%rax)
je 0x33ff0
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x211b(%rip), %rax     # 0x31e70
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movw 0x84(%rax), %ax
movw %ax, -0x28(%rbp)
movw $0x0, -0x26(%rbp)
movq $0x0, -0x38(%rbp)
movl $0x1, -0x30(%rbp)
movl $0x0, -0x2c(%rbp)
movb -0x20(%rbp), %al
andb $-0x3, %al
orb $0x2, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x22(%rbp)
movb -0x20(%rbp), %al
andb $-0x2, %al
orb $0x1, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x24(%rbp)
leaq 0x10b4f(%rip), %rax     # 0x44b30
movq %rax, -0x40(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x444a0
jmp 0x34006
movq -0x18(%rbp), %rax
movb 0x90(%rax), %cl
andb $-0x11, %cl
orb $0x10, %cl
movb %cl, 0x90(%rax)
addq $0x50, %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_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3403b
movq -0x8(%rbp), %rsi
leaq 0x340c8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x34039
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
jne 0x3406f
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x2abc0
movq %rax, -0x18(%rbp)
jmp 0x3407b
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%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_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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x340bb
movq -0x8(%rbp), %rsi
leaq 0x34048(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x340b9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x340ec
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
callq 0x2abc0
movq %rax, -0x18(%rbp)
movq -0x18(%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_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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3441b
movq -0x8(%rbp), %rsi
leaq 0x33ce8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x34419
movq -0x8(%rbp), %rdi
callq 0x32ab0
movw %ax, -0xa(%rbp)
movw -0xa(%rbp), %ax
addw $0x1, %ax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
movswl -0xa(%rbp), %esi
callq 0x32770
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3447b
movq -0x8(%rbp), %rsi
leaq 0x33c88(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x34479
movq -0x8(%rbp), %rdi
callq 0x32ab0
movw %ax, -0xa(%rbp)
movzwl -0xa(%rbp), %eax
cmpl $0x0, %eax
jle 0x344aa
movw -0xa(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
movswl -0xa(%rbp), %esi
callq 0x32770
addq $0x10, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x344db
movq -0x8(%rbp), %rsi
leaq 0x33c28(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x344d9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
callq 0x32ab0
movq -0x40(%rbp), %rdi
leaq -0x14(%rbp), %rdx
movzwl %ax, %esi
callq 0x2bca0
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x33480
movzbl %al, %eax
movw %ax, -0x2a(%rbp)
movswl -0x2a(%rbp), %ecx
movq -0x20(%rbp), %rax
movswl 0x32(%rax), %eax
addl %eax, %ecx
addl $0x1, %ecx
movswl -0x12(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rax
movw 0x80(%rax), %ax
movw %ax, -0x14(%rbp)
movswl -0x12(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0x8350
movw %ax, %cx
movl -0x34(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jge 0x345c5
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x2c040
movw %ax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movw 0x80(%rax), %ax
movw %ax, -0x2e(%rbp)
movq -0x8(%rbp), %rdi
movswl -0x2c(%rbp), %esi
callq 0x32770
movw -0x2e(%rbp), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x80(%rax)
addq $0x40, %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_cursor_up
void lv_ta_cursor_up(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);

    /*Decrement 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         = label_style->text.font;
    lv_coord_t font_h              = lv_font_get_line_height(font);
    pos.y -= font_h + label_style->text.line_space - 1;
    pos.x = ext->cursor.valid_x;

    /*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
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x345fb
movq -0x8(%rbp), %rsi
leaq 0x33b08(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x345f9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
callq 0x32ab0
movq -0x38(%rbp), %rdi
leaq -0x14(%rbp), %rdx
movzwl %ax, %esi
callq 0x2bca0
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x33480
movzbl %al, %eax
movw %ax, -0x2a(%rbp)
movswl -0x2a(%rbp), %ecx
movq -0x20(%rbp), %rax
movswl 0x32(%rax), %eax
addl %eax, %ecx
subl $0x1, %ecx
movswl -0x12(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rax
movw 0x80(%rax), %ax
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x2c040
movw %ax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movw 0x80(%rax), %ax
movw %ax, -0x2e(%rbp)
movq -0x8(%rbp), %rdi
movswl -0x2c(%rbp), %esi
callq 0x32770
movw -0x2e(%rbp), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x80(%rax)
addq $0x40, %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: get_cursor_style
static void get_cursor_style(lv_obj_t * ta, lv_style_t * style_res)
{
    lv_ta_ext_t * ext              = lv_obj_get_ext_attr(ta);
    const lv_style_t * label_style = lv_obj_get_style(ext->label);

    if(ext->cursor.style) {
        lv_style_copy(style_res, ext->cursor.style);
    } else {
        /*If cursor style is not specified then use the modified label style */
        lv_style_copy(style_res, label_style);
        lv_color_t clv_color_tmp = style_res->text.color; /*Make letter color to cursor color*/
        style_res->text.color =
            style_res->body.main_color; /*In block mode the letter color will be current background color*/
        style_res->body.main_color     = clv_color_tmp;
        style_res->body.grad_color     = clv_color_tmp;
        style_res->body.border.color   = clv_color_tmp;
        style_res->body.border.opa     = LV_OPA_COVER;
        style_res->body.border.width   = 1;
        style_res->body.shadow.width   = 0;
        style_res->body.radius         = 0;
        style_res->body.opa            = LV_OPA_COVER;
        style_res->body.padding.left   = 0;
        style_res->body.padding.right  = 0;
        style_res->body.padding.top    = 0;
        style_res->body.padding.bottom = 0;
        style_res->line.width          = 1;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x78(%rax)
je 0x3475f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x78(%rax), %rsi
callq 0xc550
jmp 0x3480c
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc550
movq -0x10(%rbp), %rax
movw 0x20(%rax), %ax
movw %ax, -0x22(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movw 0x2(%rcx), %cx
movw %cx, 0x20(%rax)
movq -0x10(%rbp), %rax
movw -0x22(%rbp), %cx
movw %cx, 0x2(%rax)
movq -0x10(%rbp), %rax
movw -0x22(%rbp), %cx
movw %cx, 0x4(%rax)
movq -0x10(%rbp), %rax
movw -0x22(%rbp), %cx
movw %cx, 0xa(%rax)
movq -0x10(%rbp), %rax
movb $-0x1, 0xf(%rax)
movq -0x10(%rbp), %rax
movw $0x1, 0xc(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x12(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x6(%rax)
movq -0x10(%rbp), %rax
movb $-0x1, 0x8(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x1a(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x1c(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x16(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x18(%rax)
movq -0x10(%rbp), %rax
movw $0x1, 0x3e(%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_spinbox.c
// Function: lv_spinbox_set_value
void lv_spinbox_set_value(lv_obj_t * spinbox, int32_t i)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
    if(ext == NULL) return;

    if(i > ext->range_max) i = ext->range_max;
    if(i < ext->range_min) i = ext->range_min;

    ext->value = i;

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x34f5e
movq -0x8(%rbp), %rsi
leaq 0x331a5(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x34f5c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x34f74
jmp 0x34fc2
movl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0xa4(%rcx), %eax
jle 0x34f90
movq -0x18(%rbp), %rax
movl 0xa4(%rax), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0xa8(%rcx), %eax
jge 0x34fac
movq -0x18(%rbp), %rax
movl 0xa8(%rax), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
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_spinbox.c
// Function: lv_spinbox_set_digit_format
void lv_spinbox_set_digit_format(lv_obj_t * spinbox, uint8_t digit_count, uint8_t separator_position)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
    if(ext == NULL) return;

    if(digit_count > LV_SPINBOX_MAX_DIGIT_COUNT) digit_count = LV_SPINBOX_MAX_DIGIT_COUNT;

    if(separator_position > LV_SPINBOX_MAX_DIGIT_COUNT) separator_position = LV_SPINBOX_MAX_DIGIT_COUNT;

    ext->digit_count   = digit_count;
    ext->dec_point_pos = separator_position;

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movb %sil, %cl
movq %rdi, -0x8(%rbp)
movb %cl, -0x9(%rbp)
movb %al, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x35006
movq -0x8(%rbp), %rsi
leaq 0x330fd(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x35004
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x3501c
jmp 0x3508c
movzbl -0x9(%rbp), %eax
cmpl $0x10, %eax
jle 0x35029
movb $0x10, -0x9(%rbp)
movzbl -0xa(%rbp), %eax
cmpl $0x10, %eax
jle 0x35036
movb $0x10, -0xa(%rbp)
movzbl -0x9(%rbp), %eax
movw %ax, %dx
movq -0x18(%rbp), %rax
movw 0xb0(%rax), %cx
andw $0xf, %dx
andw $-0x10, %cx
orw %dx, %cx
movw %cx, 0xb0(%rax)
movzbl -0xa(%rbp), %eax
movw %ax, %dx
movq -0x18(%rbp), %rax
movw 0xb0(%rax), %cx
andw $0xf, %dx
shlw $0x4, %dx
andw $0xff0f, %cx            # imm = 0xFF0F
orw %dx, %cx
movw %cx, 0xb0(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
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_spinbox.c
// Function: lv_spinbox_set_range
void lv_spinbox_set_range(lv_obj_t * spinbox, int32_t range_min, int32_t range_max)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
    if(ext == NULL) return;

    ext->range_max = range_max;
    ext->range_min = range_min;

    if(ext->value > ext->range_max) {
        ext->value = ext->range_max;
        lv_obj_invalidate(spinbox);
    }
    if(ext->value < ext->range_min) {
        ext->value = ext->range_min;
        lv_obj_invalidate(spinbox);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x350d1
movq -0x8(%rbp), %rsi
leaq 0x33032(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x350cf
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x350ea
jmp 0x3516a
movl -0x10(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xa4(%rax)
movl -0xc(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xa8(%rax)
movq -0x18(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xa4(%rcx), %eax
jle 0x35137
movq -0x18(%rbp), %rax
movl 0xa4(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x18(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xa8(%rcx), %eax
jge 0x3516a
movq -0x18(%rbp), %rax
movl 0xa8(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_spinbox.c
// Function: lv_spinbox_set_step
void lv_spinbox_set_step(lv_obj_t * spinbox, uint32_t step)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
    if(ext == NULL) return;

    ext->step = step;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3519e
movq -0x8(%rbp), %rsi
leaq 0x32f65(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3519c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x351b4
jmp 0x351c1
movl -0xc(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xac(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_spinbox.c
// Function: lv_spinbox_set_padding_left
void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext  = lv_obj_get_ext_attr(spinbox);
    ext->digit_padding_left = padding;
    lv_spinbox_updatevalue(spinbox);
}

// 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 0x355a1
movq -0x8(%rbp), %rsi
leaq 0x32b62(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3559f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
movw %ax, %dx
movq -0x18(%rbp), %rax
movw 0xb0(%rax), %cx
andw $0xf, %dx
shlw $0x8, %dx
andw $0xf0ff, %cx            # imm = 0xF0FF
orw %dx, %cx
movw %cx, 0xb0(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
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_spinbox.c
// Function: lv_spinbox_step_next
void lv_spinbox_step_next(lv_obj_t * spinbox)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);

    int32_t new_step = ext->step / 10;
    if((new_step) > 0)
        ext->step = new_step;
    else
        ext->step = 1;

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3566b
movq -0x8(%rbp), %rsi
leaq 0x32a98(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x35669
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jle 0x356a2
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xac(%rax)
jmp 0x356b0
movq -0x10(%rbp), %rax
movl $0x1, 0xac(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_spinbox.c
// Function: lv_spinbox_step_prev
void lv_spinbox_step_prev(lv_obj_t * spinbox)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);
    int32_t step_limit;
    step_limit       = LV_MATH_MAX(ext->range_max, (ext->range_min < 0 ? (-ext->range_min) : ext->range_min));
    int32_t new_step = ext->step * 10;
    if(new_step <= step_limit) ext->step = new_step;

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x356eb
movq -0x8(%rbp), %rsi
leaq 0x32a18(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x356e9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xa4(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0xa8(%rax)
jge 0x35723
movq -0x10(%rbp), %rcx
xorl %eax, %eax
subl 0xa8(%rcx), %eax
movl %eax, -0x20(%rbp)
jmp 0x35730
movq -0x10(%rbp), %rax
movl 0xa8(%rax), %eax
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
movl -0x20(%rbp), %ecx
cmpl %ecx, %eax
jle 0x35749
movq -0x10(%rbp), %rax
movl 0xa4(%rax), %eax
movl %eax, -0x24(%rbp)
jmp 0x3577a
movq -0x10(%rbp), %rax
cmpl $0x0, 0xa8(%rax)
jge 0x35767
movq -0x10(%rbp), %rcx
xorl %eax, %eax
subl 0xa8(%rcx), %eax
movl %eax, -0x28(%rbp)
jmp 0x35774
movq -0x10(%rbp), %rax
movl 0xa8(%rax), %eax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
imull $0xa, 0xac(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jg 0x357a3
movl -0x18(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xac(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
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_spinbox.c
// Function: lv_spinbox_increment
void lv_spinbox_increment(lv_obj_t * spinbox)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);

    if(ext->value + ext->step <= ext->range_max) {
        /*Special mode when zero crossing*/
        if((ext->value + ext->step) > 0 && ext->value < 0) ext->value = -ext->value;
        ext->value += ext->step;

    } else {
        ext->value = ext->range_max;
    }

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x357eb
movq -0x8(%rbp), %rsi
leaq 0x32918(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x357e9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0xac(%rcx), %eax
movq -0x10(%rbp), %rcx
cmpl 0xa4(%rcx), %eax
jg 0x35870
movq -0x10(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x10(%rbp), %rcx
addl 0xac(%rcx), %eax
cmpl $0x0, %eax
jle 0x35854
movq -0x10(%rbp), %rax
cmpl $0x0, 0xa0(%rax)
jge 0x35854
movq -0x10(%rbp), %rax
xorl %ecx, %ecx
subl 0xa0(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x10(%rbp), %rax
movl 0xac(%rax), %ecx
movq -0x10(%rbp), %rax
addl 0xa0(%rax), %ecx
movl %ecx, 0xa0(%rax)
jmp 0x35884
movq -0x10(%rbp), %rax
movl 0xa4(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_spinbox.c
// Function: lv_spinbox_decrement
void lv_spinbox_decrement(lv_obj_t * spinbox)
{
    LV_ASSERT_OBJ(spinbox, LV_OBJX_NAME);

    lv_spinbox_ext_t * ext = lv_obj_get_ext_attr(spinbox);

    if(ext->value - ext->step >= ext->range_min) {
        /*Special mode when zero crossing*/
        if((ext->value - ext->step) < 0 && ext->value > 0) ext->value = -ext->value;
        ext->value -= ext->step;
    } else {
        ext->value = ext->range_min;
    }

    lv_spinbox_updatevalue(spinbox);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x358cb
movq -0x8(%rbp), %rsi
leaq 0x32838(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x358c9
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x10(%rbp), %rcx
subl 0xac(%rcx), %eax
movq -0x10(%rbp), %rcx
cmpl 0xa8(%rcx), %eax
jl 0x35952
movq -0x10(%rbp), %rax
movl 0xa0(%rax), %eax
movq -0x10(%rbp), %rcx
subl 0xac(%rcx), %eax
cmpl $0x0, %eax
jge 0x35934
movq -0x10(%rbp), %rax
cmpl $0x0, 0xa0(%rax)
jle 0x35934
movq -0x10(%rbp), %rax
xorl %ecx, %ecx
subl 0xa0(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x10(%rbp), %rax
movl 0xac(%rax), %edx
movq -0x10(%rbp), %rax
movl 0xa0(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0xa0(%rax)
jmp 0x35966
movq -0x10(%rbp), %rax
movl 0xa8(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rdi
callq 0x351d0
addq $0x10, %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_btnm.c
// Function: lv_btnm_set_style
void lv_btnm_set_style(lv_obj_t * btnm, lv_btnm_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);

    switch(type) {
        case LV_BTNM_STYLE_BG: lv_obj_set_style(btnm, style); break;
        case LV_BTNM_STYLE_BTN_REL:
            ext->styles_btn[LV_BTN_STATE_REL] = style;
            lv_obj_invalidate(btnm);
            break;
        case LV_BTNM_STYLE_BTN_PR:
            ext->styles_btn[LV_BTN_STATE_PR] = style;
            lv_obj_invalidate(btnm);
            break;
        case LV_BTNM_STYLE_BTN_TGL_REL:
            ext->styles_btn[LV_BTN_STATE_TGL_REL] = style;
            lv_obj_invalidate(btnm);
            break;
        case LV_BTNM_STYLE_BTN_TGL_PR:
            ext->styles_btn[LV_BTN_STATE_TGL_PR] = style;
            lv_obj_invalidate(btnm);
            break;
        case LV_BTNM_STYLE_BTN_INA:
            ext->styles_btn[LV_BTN_STATE_INA] = style;
            lv_obj_invalidate(btnm);
            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 0x37195
movq -0x8(%rbp), %rsi
leaq 0x30f6e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37193
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x5, %rax
ja 0x37248
movq -0x28(%rbp), %rax
leaq 0x314dd(%rip), %rcx     # 0x6869c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x37248
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
jmp 0x37248
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
jmp 0x37248
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
jmp 0x37248
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
jmp 0x37248
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: maps_are_identical
static bool maps_are_identical(const char ** map1, const char ** map2)
{
    if(map1 == map2) return true;
    if(map1 == NULL || map2 == NULL) return map1 == map2;

    uint16_t i = 0;
    while(map1[i][0] != '\0' && map2[i][0] != '\0') {
        if(strcmp(map1[i], map2[i]) != 0) return false;
        i++;
    }
    return map1[i][0] == '\0' && map2[i][0] == '\0';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x372c3
movb $0x1, -0x1(%rbp)
jmp 0x37395
cmpq $0x0, -0x10(%rbp)
je 0x372d1
cmpq $0x0, -0x18(%rbp)
jne 0x372e6
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
sete %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x37395
movw $0x0, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1b(%rbp)
je 0x3731d
movq -0x18(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x1b(%rbp)
movb -0x1b(%rbp), %al
testb $0x1, %al
jne 0x37326
jmp 0x3735c
movq -0x10(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rsi
callq 0x20d0
cmpl $0x0, %eax
je 0x3734e
movb $0x0, -0x1(%rbp)
jmp 0x37395
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x372ec
movq -0x10(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1c(%rbp)
jne 0x3738d
movq -0x18(%rbp), %rax
movzwl -0x1a(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x1c(%rbp)
movb -0x1c(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: allocate_btn_areas_and_controls
static void allocate_btn_areas_and_controls(const lv_obj_t * btnm, const char ** map)
{
    /*Count the buttons in the map*/
    uint16_t btn_cnt = 0;
    uint16_t i       = 0;
    while(strlen(map[i]) != 0) {
        if(strcmp(map[i], "\n") != 0) { /*Do not count line breaks*/
            btn_cnt++;
        }
        i++;
    }

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);

    if(ext->button_areas != NULL) {
        lv_mem_free(ext->button_areas);
        ext->button_areas = NULL;
    }
    if(ext->ctrl_bits != NULL) {
        lv_mem_free(ext->ctrl_bits);
        ext->ctrl_bits = NULL;
    }

    ext->button_areas = lv_mem_alloc(sizeof(lv_area_t) * btn_cnt);
    LV_ASSERT_MEM(ext->button_areas);
    ext->ctrl_bits = lv_mem_alloc(sizeof(lv_btnm_ctrl_t) * btn_cnt);
    LV_ASSERT_MEM(ext->ctrl_bits);
    if(ext->button_areas == NULL || ext->ctrl_bits == NULL) btn_cnt = 0;

    memset(ext->ctrl_bits, 0, sizeof(lv_btnm_ctrl_t) * btn_cnt);

    ext->btn_cnt = btn_cnt;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw $0x0, -0x12(%rbp)
movw $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x2060
cmpq $0x0, %rax
je 0x3740a
movq -0x10(%rbp), %rax
movzwl -0x14(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
leaq 0x34d2e(%rip), %rsi     # 0x6c114
callq 0x20d0
cmpl $0x0, %eax
je 0x373fc
movw -0x12(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x12(%rbp)
movw -0x14(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x14(%rbp)
jmp 0x373bc
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3743b
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x44ec0
movq -0x20(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x3745f
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x44ec0
movq -0x20(%rbp), %rax
movq $0x0, 0x10(%rax)
movzwl -0x12(%rbp), %eax
movl %eax, %edi
shlq $0x3, %rdi
callq 0x44d20
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x374a0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x30bab(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x3749e
movzwl -0x12(%rbp), %eax
movl %eax, %edi
shlq %rdi
callq 0x44d20
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xd120
testb $0x1, %al
jne 0x374e0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x30b6b(%rip), %rdi     # 0x68044
callq 0xd410
jmp 0x374de
movq -0x20(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x374f6
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x374fc
movw $0x0, -0x12(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movzwl -0x12(%rbp), %eax
movl %eax, %edx
shlq %rdx
xorl %esi, %esi
callq 0x2090
movw -0x12(%rbp), %cx
movq -0x20(%rbp), %rax
movw %cx, 0x40(%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_btnm.c
// Function: lv_btnm_get_style
const lv_style_t * lv_btnm_get_style(const lv_obj_t * btnm, lv_btnm_style_t type)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_btnm_ext_t * ext      = lv_obj_get_ext_attr(btnm);

    switch(type) {
        case LV_BTNM_STYLE_BG: style = lv_obj_get_style(btnm); break;
        case LV_BTNM_STYLE_BTN_REL: style = ext->styles_btn[LV_BTN_STATE_REL]; break;
        case LV_BTNM_STYLE_BTN_PR: style = ext->styles_btn[LV_BTN_STATE_PR]; break;
        case LV_BTNM_STYLE_BTN_TGL_REL: style = ext->styles_btn[LV_BTN_STATE_TGL_REL]; break;
        case LV_BTNM_STYLE_BTN_TGL_PR: style = ext->styles_btn[LV_BTN_STATE_TGL_PR]; break;
        case LV_BTNM_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 0x37561
movq -0x8(%rbp), %rsi
leaq 0x30ba2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3755f
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x5, %rax
ja 0x375ed
movq -0x28(%rbp), %rax
leaq 0x31125(%rip), %rcx     # 0x686b4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x375f5
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_set_ctrl_map
void lv_btnm_set_ctrl_map(const lv_obj_t * btnm, const lv_btnm_ctrl_t ctrl_map[])
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    memcpy(ext->ctrl_bits, ctrl_map, sizeof(lv_btnm_ctrl_t) * ext->btn_cnt);

    lv_btnm_set_map(btnm, ext->map_p);
}

// 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 0x3766f
movq -0x8(%rbp), %rsi
leaq 0x30a94(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3766d
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rax
movzwl 0x40(%rax), %eax
movl %eax, %edx
shlq %rdx
callq 0x20e0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x36c80
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_set_pressed
void lv_btnm_set_pressed(const lv_obj_t * btnm, uint16_t id)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);

    if(id >= ext->btn_cnt && id != LV_BTNM_BTN_NONE) return;

    if(id == ext->btn_id_pr) return;

    ext->btn_id_pr = id;
    lv_obj_invalidate(btnm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x376e2
movq -0x8(%rbp), %rsi
leaq 0x30a21(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x376e0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jl 0x3770c
movzwl -0xa(%rbp), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x3770c
jmp 0x37733
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x42(%rcx), %ecx
cmpl %ecx, %eax
jne 0x3771e
jmp 0x37733
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x42(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_set_recolor
void lv_btnm_set_recolor(const lv_obj_t * btnm, bool en)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);

    ext->recolor = en;
    lv_obj_invalidate(btnm);
}

// 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 0x37773
movq -0x8(%rbp), %rsi
leaq 0x30990(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37771
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
andb $0x1, %dl
movq -0x18(%rbp), %rax
movb 0x46(%rax), %cl
andb $0x1, %dl
andb $-0x2, %cl
orb %dl, %cl
movb %cl, 0x46(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_set_btn_ctrl
void lv_btnm_set_btn_ctrl(const lv_obj_t * btnm, uint16_t btn_id, lv_btnm_ctrl_t ctrl)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);

    if(btn_id >= ext->btn_cnt) return;

    ext->ctrl_bits[btn_id] |= ctrl;
    invalidate_button_area(btnm, btn_id);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x377e9
movq -0x8(%rbp), %rsi
leaq 0x3091a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x377e7
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jl 0x37808
jmp 0x3782f
movzwl -0xc(%rbp), %esi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movzwl -0xa(%rbp), %ecx
movzwl (%rax,%rcx,2), %edx
orl %esi, %edx
movw %dx, (%rax,%rcx,2)
movq -0x8(%rbp), %rdi
movzwl -0xa(%rbp), %esi
callq 0x37840
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_btnm.c
// Function: invalidate_button_area
static void invalidate_button_area(const lv_obj_t * btnm, uint16_t btn_idx)
{
    if(btn_idx == LV_BTNM_BTN_NONE) return;

    lv_area_t btn_area;
    lv_area_t btnm_area;

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    lv_area_copy(&btn_area, &ext->button_areas[btn_idx]);
    lv_obj_get_coords(btnm, &btnm_area);

    /* Convert relative coordinates to absolute */
    btn_area.x1 += btnm_area.x1;
    btn_area.y1 += btnm_area.y1;
    btn_area.x2 += btnm_area.x1;
    btn_area.y2 += btnm_area.y1;

    lv_inv_area(lv_obj_get_disp(btnm), &btn_area);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movzwl -0xa(%rbp), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x37863
jmp 0x378e6
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movzwl -0xa(%rbp), %eax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x12(%rbp), %rdi
callq 0x37f70
movq -0x8(%rbp), %rdi
leaq -0x1a(%rbp), %rsi
callq 0x7fb0
movswl -0x1a(%rbp), %ecx
movswl -0x12(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x12(%rbp)
movswl -0x18(%rbp), %ecx
movswl -0x10(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x10(%rbp)
movswl -0x1a(%rbp), %ecx
movswl -0xe(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0x18(%rbp), %ecx
movswl -0xc(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7a40
movq %rax, %rdi
leaq -0x12(%rbp), %rsi
callq 0xadd0
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_set_btn_ctrl_all
void lv_btnm_set_btn_ctrl_all(lv_obj_t * btnm, lv_btnm_ctrl_t ctrl)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    uint16_t i;
    for(i = 0; i < ext->btn_cnt; i++) {
        lv_btnm_set_btn_ctrl(btnm, i, ctrl);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movq %rdi, -0x8(%rbp)
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x379b2
movq -0x8(%rbp), %rsi
leaq 0x30751(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x379b0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movw $0x0, -0x1a(%rbp)
movzwl -0x1a(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jge 0x379f7
movq -0x8(%rbp), %rdi
movw -0x1a(%rbp), %ax
movzwl %ax, %esi
movzwl -0xa(%rbp), %edx
callq 0x377b0
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x379c5
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)