LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: lv_btnm_clear_btn_ctrl_all
void lv_btnm_clear_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_clear_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 0x37a32
movq -0x8(%rbp), %rsi
leaq 0x306d1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37a30
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 0x37a77
movq -0x8(%rbp), %rdi
movw -0x1a(%rbp), %ax
movzwl %ax, %esi
movzwl -0xa(%rbp), %edx
callq 0x378f0
movw -0x1a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x1a(%rbp)
jmp 0x37a45
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_btn_width
void lv_btnm_set_btn_width(const lv_obj_t * btnm, uint16_t btn_id, uint8_t width)
{
    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] &= (~LV_BTNM_WIDTH_MASK);
    ext->ctrl_bits[btn_id] |= (LV_BTNM_WIDTH_MASK & width);

    lv_btnm_set_map(btnm, ext->map_p);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movb %al, -0xb(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x37ab7
movq -0x8(%rbp), %rsi
leaq 0x3064c(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37ab5
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 0x37ad6
jmp 0x37b1a
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movzwl -0xa(%rbp), %ecx
movzwl (%rax,%rcx,2), %edx
andl $-0x8, %edx
movw %dx, (%rax,%rcx,2)
movzbl -0xb(%rbp), %esi
andl $0x7, %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
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_one_toggle
void lv_btnm_set_one_toggle(lv_obj_t * btnm, bool one_toggle)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    ext->one_toggle     = one_toggle;

    /*If more than one button is toggled only the first one should be*/
    make_one_button_toggled(btnm, 0);
}

// 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 0x37b53
movq -0x8(%rbp), %rsi
leaq 0x305b0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37b51
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
shlb %dl
andb $-0x3, %cl
orb %dl, %cl
movb %cl, 0x46(%rax)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x37b90
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_btnm.c
// Function: lv_btnm_get_active_btn_text
const char * lv_btnm_get_active_btn_text(const lv_obj_t * btnm)
{
    LV_ASSERT_OBJ(btnm, LV_OBJX_NAME);

    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    if(ext->btn_id_act != LV_BTNM_BTN_NONE) {
        return lv_btnm_get_btn_text(btnm, ext->btn_id_act);
    } else {
        return NULL;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x37cbb
movq -0x10(%rbp), %rsi
leaq 0x30448(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37cb9
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x44(%rax), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x37cee
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x44(%rax), %esi
callq 0x37d00
movq %rax, -0x8(%rbp)
jmp 0x37cf6
movq $0x0, -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_btnm.c
// Function: lv_btnm_get_btn_text
const char * lv_btnm_get_btn_text(const lv_obj_t * btnm, uint16_t btn_id)
{
    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 NULL;

    uint16_t txt_i = 0;
    uint16_t btn_i = 0;

    /* Search the text of ext->btn_pr the buttons text in the map
     * Skip "\n"-s*/
    while(btn_i != btn_id) {
        btn_i++;
        txt_i++;
        if(strcmp(ext->map_p[txt_i], "\n") == 0) txt_i++;
    }

    if(btn_i == ext->btn_cnt) return NULL;

    return ext->map_p[txt_i];
}

// 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 0x37d32
movq -0x10(%rbp), %rsi
leaq 0x303d1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37d30
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jle 0x37d5c
movq $0x0, -0x8(%rbp)
jmp 0x37de7
movw $0x0, -0x22(%rbp)
movw $0x0, -0x24(%rbp)
movzwl -0x24(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
je 0x37dba
movw -0x24(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x24(%rbp)
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movzwl -0x22(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
leaq 0x34372(%rip), %rsi     # 0x6c114
callq 0x20d0
cmpl $0x0, %eax
jne 0x37db8
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x37d68
movzwl -0x24(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jne 0x37dd4
movq $0x0, -0x8(%rbp)
jmp 0x37de7
movq -0x20(%rbp), %rax
movq (%rax), %rax
movzwl -0x22(%rbp), %ecx
movq (%rax,%rcx,8), %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_btnm.c
// Function: lv_btnm_get_btn_ctrl
bool lv_btnm_get_btn_ctrl(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 false;

    return ext->ctrl_bits[btn_id] & ctrl ? true : false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x37e89
movq -0x10(%rbp), %rsi
leaq 0x3027a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x37e87
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jl 0x37eac
movb $0x0, -0x1(%rbp)
jmp 0x37eda
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movzwl -0x12(%rbp), %ecx
movzwl (%rax,%rcx,2), %edx
movzwl -0x14(%rbp), %eax
andl %eax, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btnm.c
// Function: get_button_from_point
static uint16_t get_button_from_point(lv_obj_t * btnm, lv_point_t * p)
{
    lv_area_t btnm_cords;
    lv_area_t btn_area;
    lv_btnm_ext_t * ext = lv_obj_get_ext_attr(btnm);
    uint16_t i;
    lv_obj_get_coords(btnm, &btnm_cords);

    for(i = 0; i < ext->btn_cnt; i++) {
        lv_area_copy(&btn_area, &ext->button_areas[i]);
        btn_area.x1 += btnm_cords.x1;
        btn_area.y1 += btnm_cords.y1;
        btn_area.x2 += btnm_cords.x1;
        btn_area.y2 += btnm_cords.y1;
        if(lv_area_is_point_on(&btn_area, p) != false) {
            break;
        }
    }

    if(i == ext->btn_cnt) i = LV_BTNM_BTN_NONE;

    return i;
}

// 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, -0x28(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x7fb0
movw $0x0, -0x2a(%rbp)
movzwl -0x2a(%rbp), %eax
movq -0x28(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jge 0x380f4
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movzwl -0x2a(%rbp), %eax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x20(%rbp), %rdi
callq 0x37f70
movswl -0x18(%rbp), %ecx
movswl -0x20(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x20(%rbp)
movswl -0x16(%rbp), %ecx
movswl -0x1e(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x1e(%rbp)
movswl -0x18(%rbp), %ecx
movswl -0x1c(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x1c(%rbp)
movswl -0x16(%rbp), %ecx
movswl -0x1a(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x42a00
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x380e1
jmp 0x380f4
jmp 0x380e3
movw -0x2a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x2a(%rbp)
jmp 0x38060
movzwl -0x2a(%rbp), %eax
movq -0x28(%rbp), %rcx
movzwl 0x40(%rcx), %ecx
cmpl %ecx, %eax
jne 0x3810a
movw $0xffff, -0x2a(%rbp)    # imm = 0xFFFF
movw -0x2a(%rbp), %ax
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_cont.c
// Function: lv_cont_signal
static lv_res_t lv_cont_signal(lv_obj_t * cont, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_STYLE_CHG) { /*Recalculate the padding if the style changed*/
        lv_cont_refr_layout(cont);
        lv_cont_refr_autofit(cont);
    } else if(sign == LV_SIGNAL_CHILD_CHG) {
        lv_cont_refr_layout(cont);
        lv_cont_refr_autofit(cont);
    } else if(sign == LV_SIGNAL_CORD_CHG) {
        if(lv_obj_get_width(cont) != lv_area_get_width(param) || lv_obj_get_height(cont) != lv_area_get_height(param)) {
            lv_cont_refr_layout(cont);
            lv_cont_refr_autofit(cont);
        }
    } else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) {
        /*FLOOD and FILL fit needs to be refreshed if the parent size has changed*/
        lv_cont_refr_autofit(cont);

    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x510a3(%rip), %rax     # 0x89500
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x38484
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x38563
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x384a5
movq -0x20(%rbp), %rdi
leaq 0x30255(%rip), %rsi     # 0x686ed
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x38563
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x384c5
movq -0x10(%rbp), %rdi
callq 0x38940
movq -0x10(%rbp), %rdi
callq 0x38a20
jmp 0x3855d
movzbl -0x11(%rbp), %eax
cmpl $0x1, %eax
jne 0x384e2
movq -0x10(%rbp), %rdi
callq 0x38940
movq -0x10(%rbp), %rdi
callq 0x38a20
jmp 0x3855b
movzbl -0x11(%rbp), %eax
cmpl $0x2, %eax
jne 0x38545
movq -0x10(%rbp), %rdi
callq 0x8310
cwtl
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x38ff0
movw %ax, %cx
movl -0x28(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jne 0x38531
movq -0x10(%rbp), %rdi
callq 0x8350
cwtl
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rdi
callq 0x39010
movw %ax, %cx
movl -0x2c(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
je 0x38543
movq -0x10(%rbp), %rdi
callq 0x38940
movq -0x10(%rbp), %rdi
callq 0x38a20
jmp 0x38559
movzbl -0x11(%rbp), %eax
cmpl $0x3, %eax
jne 0x38557
movq -0x10(%rbp), %rdi
callq 0x38a20
jmp 0x38559
jmp 0x3855b
jmp 0x3855d
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cont.c
// Function: lv_cont_set_layout
void lv_cont_set_layout(lv_obj_t * cont, lv_layout_t layout)
{
    LV_ASSERT_OBJ(cont, LV_OBJX_NAME);

    lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont);
    if(ext->layout == layout) return;

    ext->layout = layout;

    /*Send a signal to refresh the layout*/
    cont->signal_cb(cont, LV_SIGNAL_CHILD_CHG, NULL);
}

// 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 0x385d1
movq -0x8(%rbp), %rsi
leaq 0x2fb32(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x385cf
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw (%rax), %ax
andw $0xf, %ax
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x385f6
jmp 0x3862b
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0xf, %dx
andw $-0x10, %cx
orw %dx, %cx
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq *%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_cont.c
// Function: lv_cont_set_fit4
void lv_cont_set_fit4(lv_obj_t * cont, lv_fit_t left, lv_fit_t right, lv_fit_t top, lv_fit_t bottom)
{
    LV_ASSERT_OBJ(cont, LV_OBJX_NAME);

    lv_obj_invalidate(cont);
    lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont);
    if(ext->fit_left == left && ext->fit_right == right && ext->fit_top == top && ext->fit_bottom == bottom) {
        return;
    }

    ext->fit_left   = left;
    ext->fit_right  = right;
    ext->fit_top    = top;
    ext->fit_bottom = bottom;

    /*Send a signal to refresh the layout*/
    cont->signal_cb(cont, LV_SIGNAL_CHILD_CHG, NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movb %sil, -0x9(%rbp)
movb %dl, -0xa(%rbp)
movb %cl, -0xb(%rbp)
movb %al, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3867b
movq -0x8(%rbp), %rsi
leaq 0x2fa88(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x38679
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movw (%rax), %ax
shrw $0x4, %ax
andw $0x3, %ax
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x386fe
movq -0x18(%rbp), %rax
movw (%rax), %ax
shrw $0x6, %ax
andw $0x3, %ax
movzbl %al, %eax
movzbl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x386fe
movq -0x18(%rbp), %rax
movw (%rax), %ax
shrw $0x8, %ax
andw $0x3, %ax
movzbl %al, %eax
movzbl -0xb(%rbp), %ecx
cmpl %ecx, %eax
jne 0x386fe
movq -0x18(%rbp), %rax
movw (%rax), %ax
shrw $0xa, %ax
andw $0x3, %ax
movzbl %al, %eax
movzbl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x386fe
jmp 0x387a0
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x3, %dx
shlw $0x4, %dx
andw $-0x31, %cx
orw %dx, %cx
movw %cx, (%rax)
movb -0xa(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x3, %dx
shlw $0x6, %dx
andw $0xff3f, %cx            # imm = 0xFF3F
orw %dx, %cx
movw %cx, (%rax)
movb -0xb(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x3, %dx
shlw $0x8, %dx
andw $0xfcff, %cx            # imm = 0xFCFF
orw %dx, %cx
movw %cx, (%rax)
movb -0xc(%rbp), %cl
movq -0x18(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw (%rax), %cx
andw $0x3, %dx
shlw $0xa, %dx
andw $0xf3ff, %cx            # imm = 0xF3FF
orw %dx, %cx
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq *%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_cont.c
// Function: lv_cont_refr_layout
static void lv_cont_refr_layout(lv_obj_t * cont)
{
    lv_layout_t type = lv_cont_get_layout(cont);

    /*'cont' has to be at least 1 child*/
    if(lv_obj_get_child(cont, NULL) == NULL) return;

    if(type == LV_LAYOUT_OFF) return;

    if(type == LV_LAYOUT_CENTER) {
        lv_cont_layout_center(cont);
    } else if(type == LV_LAYOUT_COL_L || type == LV_LAYOUT_COL_M || type == LV_LAYOUT_COL_R) {
        lv_cont_layout_col(cont);
    } else if(type == LV_LAYOUT_ROW_T || type == LV_LAYOUT_ROW_M || type == LV_LAYOUT_ROW_B) {
        lv_cont_layout_row(cont);
    } else if(type == LV_LAYOUT_PRETTY) {
        lv_cont_layout_pretty(cont);
    } else if(type == LV_LAYOUT_GRID) {
        lv_cont_layout_grid(cont);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x387b0
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
cmpq $0x0, %rax
jne 0x38970
jmp 0x38a0c
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x3897e
jmp 0x38a0c
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jne 0x38992
movq -0x8(%rbp), %rdi
callq 0x39030
jmp 0x38a0c
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x389ad
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x389ad
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
jne 0x389b8
movq -0x8(%rbp), %rdi
callq 0x39200
jmp 0x38a0a
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
je 0x389d3
movzbl -0x9(%rbp), %eax
cmpl $0x6, %eax
je 0x389d3
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
jne 0x389de
movq -0x8(%rbp), %rdi
callq 0x39360
jmp 0x38a08
movzbl -0x9(%rbp), %eax
cmpl $0x8, %eax
jne 0x389f2
movq -0x8(%rbp), %rdi
callq 0x39560
jmp 0x38a06
movzbl -0x9(%rbp), %eax
cmpl $0x9, %eax
jne 0x38a04
movq -0x8(%rbp), %rdi
callq 0x39a80
jmp 0x38a06
jmp 0x38a08
jmp 0x38a0a
jmp 0x38a0c
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_img.c
// Function: lv_img_signal
static lv_res_t lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

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

    lv_img_ext_t * ext = lv_obj_get_ext_attr(img);
    if(sign == LV_SIGNAL_CLEANUP) {
        if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) {
            lv_mem_free(ext->src);
            ext->src      = NULL;
            ext->src_type = LV_IMG_SRC_UNKNOWN;
        }
    } else if(sign == LV_SIGNAL_STYLE_CHG) {
        /*Refresh the file name to refresh the symbol text size*/
        if(ext->src_type == LV_IMG_SRC_SYMBOL) {
            lv_img_set_src(img, ext->src);
        }
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x4f62b(%rip), %rax     # 0x89508
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x39f04
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x39fba
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x39f25
movq -0x20(%rbp), %rdi
leaq 0x2e728(%rip), %rsi     # 0x68640
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x39fba
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x39f86
movq -0x30(%rbp), %rax
movb 0x10(%rax), %al
andb $0x3, %al
movzbl %al, %eax
cmpl $0x1, %eax
je 0x39f5d
movq -0x30(%rbp), %rax
movb 0x10(%rax), %al
andb $0x3, %al
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x39f84
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x44ec0
movq -0x30(%rbp), %rax
movq $0x0, (%rax)
movq -0x30(%rbp), %rax
movb 0x10(%rax), %cl
andb $-0x4, %cl
orb $0x3, %cl
movb %cl, 0x10(%rax)
jmp 0x39fb4
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x39fb2
movq -0x30(%rbp), %rax
movb 0x10(%rax), %al
andb $0x3, %al
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x39fb0
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rsi
callq 0x3a2c0
jmp 0x39fb2
jmp 0x39fb4
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_img.c
// Function: lv_img_set_offset_x
void lv_img_set_offset_x(lv_obj_t * img, lv_coord_t x)
{
    LV_ASSERT_OBJ(img, LV_OBJX_NAME);

    lv_img_ext_t * ext = lv_obj_get_ext_attr(img);

    if(x < ext->w - 1) {
        ext->offset.x = x;
        lv_obj_invalidate(img);
    }
}

// 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 0x3a6f2
movq -0x8(%rbp), %rsi
leaq 0x2da11(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3a6f0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movswl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movswl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x3a727
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x8(%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_img.c
// Function: lv_img_set_offset_y
void lv_img_set_offset_y(lv_obj_t * img, lv_coord_t y)
{
    LV_ASSERT_OBJ(img, LV_OBJX_NAME);

    lv_img_ext_t * ext = lv_obj_get_ext_attr(img);

    if(y < ext->h - 1) {
        ext->offset.y = y;
        lv_obj_invalidate(img);
    }
}

// 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 0x3a762
movq -0x8(%rbp), %rsi
leaq 0x2d9a1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3a760
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movswl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movswl 0xe(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x3a797
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0xa(%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_img.c
// Function: lv_img_get_file_name
const char * lv_img_get_file_name(const lv_obj_t * img)
{
    LV_ASSERT_OBJ(img, LV_OBJX_NAME);

    lv_img_ext_t * ext = lv_obj_get_ext_attr(img);

    if(ext->src_type == LV_IMG_SRC_FILE)
        return ext->src;
    else
        return "";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3a81b
movq -0x10(%rbp), %rsi
leaq 0x2d8e8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3a819
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x10(%rax), %al
andb $0x3, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x3a846
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x3a851
leaq 0x318c8(%rip), %rax     # 0x6c115
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
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_imgbtn.c
// Function: lv_imgbtn_signal
static lv_res_t lv_imgbtn_signal(lv_obj_t * imgbtn, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_STYLE_CHG) {
        /* If the style changed then the button was clicked, released etc. so probably the state was
         * changed as well Set the new image for the new state.*/
        refr_img(imgbtn);
    } else if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x4ea93(%rip), %rax     # 0x89510
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x3aaa1
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x3aae6
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x3aabf
movq -0x20(%rbp), %rdi
leaq 0x2dc40(%rip), %rsi     # 0x686f5
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x3aae6
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x3aad3
movq -0x10(%rbp), %rdi
callq 0x3acf0
jmp 0x3aae0
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x3aade
jmp 0x3aade
jmp 0x3aae0
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_imgbtn.c
// Function: lv_imgbtn_set_src
void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src)
{
    LV_ASSERT_OBJ(imgbtn, LV_OBJX_NAME);

    lv_imgbtn_ext_t * ext = lv_obj_get_ext_attr(imgbtn);

    ext->img_src[state] = src;

    refr_img(imgbtn);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %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 0x3acb5
movq -0x8(%rbp), %rsi
leaq 0x2d44e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3acb3
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rax
movzbl -0x9(%rbp), %ecx
movq %rdx, 0x38(%rax,%rcx,8)
movq -0x8(%rbp), %rdi
callq 0x3acf0
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_imgbtn.c
// Function: refr_img
static void refr_img(lv_obj_t * imgbtn)
{
    lv_imgbtn_ext_t * ext = lv_obj_get_ext_attr(imgbtn);
    lv_btn_state_t state  = lv_imgbtn_get_state(imgbtn);
    lv_img_header_t header;

#if LV_IMGBTN_TILED == 0
    const void * src = ext->img_src[state];
#else
    const void * src = ext->img_src_mid[state];
#endif

    lv_res_t info_res = LV_RES_OK;
    if(lv_img_src_get_type(src) == LV_IMG_SRC_SYMBOL) {
        const lv_style_t * style = ext->btn.styles[state];
        header.h = lv_font_get_line_height(style->text.font);
        header.w = lv_txt_get_width(src, (uint16_t)strlen(src), style->text.font, style->text.letter_space, LV_TXT_FLAG_NONE);
        header.always_zero = 0;
        header.cf = LV_IMG_CF_ALPHA_1BIT;
    } else {
        info_res = lv_img_decoder_get_info(src, &header);
    }

    if(info_res == LV_RES_OK) {
        ext->act_cf = header.cf;
#if LV_IMGBTN_TILED == 0
        lv_obj_set_size(imgbtn, header.w, header.h);
#else
        lv_obj_set_height(imgbtn, header.h);
#endif
    } else {
        ext->act_cf = LV_IMG_CF_UNKNOWN;
    }

    lv_obj_invalidate(imgbtn);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3af50
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movzbl -0x11(%rbp), %ecx
movq 0x38(%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movb $0x1, -0x21(%rbp)
movq -0x20(%rbp), %rdi
callq 0x63110
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x3adde
movq -0x10(%rbp), %rax
movzbl -0x11(%rbp), %ecx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x3af70
movzbl %al, %ecx
movl -0x18(%rbp), %eax
andl $0x7ff, %ecx            # imm = 0x7FF
shll $0x15, %ecx
andl $0x1fffff, %eax         # imm = 0x1FFFFF
orl %ecx, %eax
movl %eax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2060
movq -0x38(%rbp), %rdi
movw %ax, %cx
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdx
movq -0x30(%rbp), %rax
xorl %r8d, %r8d
movzwl %cx, %esi
movswl 0x30(%rax), %ecx
callq 0x46bd0
movswl %ax, %ecx
movl -0x18(%rbp), %eax
andl $0x7ff, %ecx            # imm = 0x7FF
shll $0xa, %ecx
andl $0xffe003ff, %eax       # imm = 0xFFE003FF
orl %ecx, %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
andl $0xffffff1f, %eax       # imm = 0xFFFFFF1F
orl $0x0, %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
andl $-0x20, %eax
orl $0xb, %eax
movl %eax, -0x18(%rbp)
jmp 0x3adee
movq -0x20(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x659e0
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
jne 0x3ae2b
movl -0x18(%rbp), %eax
andl $0x1f, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rdi
movl -0x18(%rbp), %eax
shrl $0xa, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movw %ax, %cx
movl -0x18(%rbp), %eax
shrl $0x15, %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x8180
jmp 0x3ae33
movq -0x10(%rbp), %rax
movb $0x0, 0x60(%rax)
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_led.c
// Function: lv_led_signal
static lv_res_t lv_led_signal(lv_obj_t * led, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_GET_TYPE) {
        lv_obj_type_t * buf = param;
        uint8_t i;
        for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
            if(buf->type[i] == NULL) break;
        }
        buf->type[i] = "lv_led";
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x4e3f3(%rip), %rax     # 0x89520
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x3b151
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x3b1a5
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x3b19f
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
movb $0x0, -0x31(%rbp)
movzbl -0x31(%rbp), %eax
cmpl $0x7, %eax
jge 0x3b18c
movq -0x30(%rbp), %rax
movzbl -0x31(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x3b180
jmp 0x3b18c
jmp 0x3b182
movb -0x31(%rbp), %al
addb $0x1, %al
movb %al, -0x31(%rbp)
jmp 0x3b166
movq -0x30(%rbp), %rax
movzbl -0x31(%rbp), %ecx
leaq 0x2d564(%rip), %rdx     # 0x686ff
movq %rdx, (%rax,%rcx,8)
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_led.c
// Function: lv_led_set_bright
void lv_led_set_bright(lv_obj_t * led, uint8_t bright)
{
    LV_ASSERT_OBJ(led, LV_OBJX_NAME);

    /*Set the brightness*/
    lv_led_ext_t * ext = lv_obj_get_ext_attr(led);
    if(ext->bright == bright) return;

    ext->bright = bright;

    /*Invalidate the object there fore it will be redrawn*/
    lv_obj_invalidate(led);
}

// 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 0x3b461
movq -0x8(%rbp), %rsi
leaq 0x2cca2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3b45f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3b47f
jmp 0x3b491
movb -0x9(%rbp), %cl
movq -0x18(%rbp), %rax
movb %cl, (%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_led.c
// Function: lv_led_toggle
void lv_led_toggle(lv_obj_t * led)
{
    LV_ASSERT_OBJ(led, LV_OBJX_NAME);

    uint8_t bright = lv_led_get_bright(led);
    if(bright > (LV_LED_BRIGHT_OFF + LV_LED_BRIGHT_ON) >> 1)
        lv_led_off(led);
    else
        lv_led_on(led);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3b54b
movq -0x8(%rbp), %rsi
leaq 0x2cbb8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3b549
movq -0x8(%rbp), %rdi
callq 0x3b580
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0xb1, %eax
jle 0x3b56d
movq -0x8(%rbp), %rdi
callq 0x3b4e0
jmp 0x3b576
movq -0x8(%rbp), %rdi
callq 0x3b4a0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_lmeter.c
// Function: lv_lmeter_signal
static lv_res_t lv_lmeter_signal(lv_obj_t * lmeter, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    } else if(sign == LV_SIGNAL_STYLE_CHG) {
        lv_obj_refresh_ext_draw_pad(lmeter);
    } else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
        const lv_style_t * style = lv_lmeter_get_style(lmeter, LV_LMETER_STYLE_MAIN);
        lmeter->ext_draw_pad     = LV_MATH_MAX(lmeter->ext_draw_pad, style->line.width);
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x4dc43(%rip), %rax     # 0x89530
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x3b914
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x3b9ad
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x3b932
movq -0x20(%rbp), %rdi
leaq 0x2cdde(%rip), %rsi     # 0x68706
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x3b9ad
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x3b93d
jmp 0x3b9a7
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x3b951
movq -0x10(%rbp), %rdi
callq 0x9dc0
jmp 0x3b9a5
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0x3b9a3
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x3c3d0
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movq -0x30(%rbp), %rcx
movswl 0x3e(%rcx), %ecx
cmpl %ecx, %eax
jle 0x3b98a
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x3b995
movq -0x30(%rbp), %rax
movswl 0x3e(%rax), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0x3b9a5
jmp 0x3b9a7
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_lmeter.c
// Function: lv_lmeter_set_value
void lv_lmeter_set_value(lv_obj_t * lmeter, int16_t value)
{
    LV_ASSERT_OBJ(lmeter, LV_OBJX_NAME);

    lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
    if(ext->cur_value == value) return;

    ext->cur_value = value > ext->max_value ? ext->max_value : value;
    ext->cur_value = ext->cur_value < ext->min_value ? ext->min_value : ext->cur_value;
    lv_obj_invalidate(lmeter);
}

// 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 0x3be32
movq -0x8(%rbp), %rsi
leaq 0x2c2d1(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3be30
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3be51
jmp 0x3bec6
movswl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movswl 0xa(%rcx), %ecx
cmpl %ecx, %eax
jle 0x3be6e
movq -0x18(%rbp), %rax
movswl 0xa(%rax), %eax
movl %eax, -0x1c(%rbp)
jmp 0x3be75
movswl -0xa(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x8(%rcx), %ecx
cmpl %ecx, %eax
jge 0x3bea4
movq -0x18(%rbp), %rax
movswl 0x8(%rax), %eax
movl %eax, -0x20(%rbp)
jmp 0x3beaf
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %eax
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x6(%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_lmeter.c
// Function: lv_lmeter_set_range
void lv_lmeter_set_range(lv_obj_t * lmeter, int16_t min, int16_t max)
{
    LV_ASSERT_OBJ(lmeter, LV_OBJX_NAME);

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

    ext->max_value = max;
    ext->min_value = min;
    if(ext->cur_value > max) {
        ext->cur_value = max;
        lv_lmeter_set_value(lmeter, ext->cur_value);
    }
    if(ext->cur_value < min) {
        ext->cur_value = min;
        lv_lmeter_set_value(lmeter, ext->cur_value);
    }
    lv_obj_invalidate(lmeter);
}

// 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 0x3bf09
movq -0x8(%rbp), %rsi
leaq 0x2c1fa(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3bf07
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x8(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3bf38
movq -0x18(%rbp), %rax
movswl 0xa(%rax), %eax
movswl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3bf38
jmp 0x3bfb3
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0xa(%rax)
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x8(%rax)
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movswl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jle 0x3bf7d
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %esi
callq 0x3be00
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jge 0x3bfaa
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x6(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %esi
callq 0x3be00
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_lmeter.c
// Function: lv_lmeter_set_scale
void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint16_t line_cnt)
{
    LV_ASSERT_OBJ(lmeter, LV_OBJX_NAME);

    lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
    if(ext->scale_angle == angle && ext->line_cnt == line_cnt) return;

    ext->scale_angle = angle;
    ext->line_cnt    = line_cnt;

    lv_obj_invalidate(lmeter);
}

// 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 0x3bff9
movq -0x8(%rbp), %rsi
leaq 0x2c10a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3bff7
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl (%rax), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3c027
movq -0x18(%rbp), %rax
movzwl 0x4(%rax), %eax
movzwl -0xc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3c027
jmp 0x3c047
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movw -0xc(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x4(%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_lmeter.c
// Function: lv_lmeter_set_angle_offset
void lv_lmeter_set_angle_offset(lv_obj_t * lmeter, uint16_t angle)
{
    lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
    if(ext->angle_ofs == angle) return;

    ext->angle_ofs = angle;

    lv_obj_invalidate(lmeter);
}

// 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 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %eax
movzwl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3c082
jmp 0x3c097
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x2(%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_lmeter.c
// Function: lv_lmeter_coord_round
static lv_coord_t lv_lmeter_coord_round(int32_t x)
{
#if LV_LMETER_LINE_UPSCALE > 0
    bool was_negative = false;
    if(x < 0) {
        was_negative = true;
        x            = -x;
    }

    x = (x >> LV_LMETER_LINE_UPSCALE) + ((x & LV_LMETER_LINE_UPSCALE_MASK) >> (LV_LMETER_LINE_UPSCALE - 1));

    if(was_negative) x = -x;

    return x;
#else
    return x;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x4(%rbp)
movb $0x0, -0x5(%rbp)
cmpl $0x0, -0x4(%rbp)
jge 0x3c27d
movb $0x1, -0x5(%rbp)
xorl %eax, %eax
subl -0x4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
sarl $0x5, %eax
movl -0x4(%rbp), %ecx
andl $0x1f, %ecx
sarl $0x4, %ecx
addl %ecx, %eax
movl %eax, -0x4(%rbp)
testb $0x1, -0x5(%rbp)
je 0x3c29f
xorl %eax, %eax
subl -0x4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: scrl_def_event_cb
static void scrl_def_event_cb(lv_obj_t * scrl, lv_event_t event)
{
    lv_obj_t * page = lv_obj_get_parent(scrl);

    /*clang-format off*/
    if(event == LV_EVENT_PRESSED || event == LV_EVENT_PRESSING || event == LV_EVENT_PRESS_LOST ||
       event == LV_EVENT_RELEASED || event == LV_EVENT_SHORT_CLICKED || event == LV_EVENT_CLICKED ||
       event == LV_EVENT_LONG_PRESSED || event == LV_EVENT_LONG_PRESSED_REPEAT ||
       event == LV_EVENT_DRAG_BEGIN || event == LV_EVENT_DRAG_END || event == LV_EVENT_DRAG_THROW_BEGIN) {
        lv_event_send(page, event, lv_event_get_data());
    }
    /*clang-format on*/
}

// 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 0x71b0
movq %rax, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x6, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x8, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0x9, %eax
je 0x3d302
movzbl -0x9(%rbp), %eax
cmpl $0xa, %eax
jne 0x3d327
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movb -0x9(%rbp), %al
movb %al, -0x19(%rbp)
callq 0x9cb0
movq -0x28(%rbp), %rdi
movq %rax, %rdx
movb -0x19(%rbp), %al
movzbl %al, %esi
callq 0x7990
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_set_sb_mode
void lv_page_set_sb_mode(lv_obj_t * page, lv_sb_mode_t sb_mode)
{
    LV_ASSERT_OBJ(page, LV_OBJX_NAME);

    lv_page_ext_t * ext = lv_obj_get_ext_attr(page);
    if(ext->sb.mode == sb_mode) return;

    if(sb_mode == LV_SB_MODE_HIDE)
        ext->sb.mode |= LV_SB_MODE_HIDE; /*Set the hidden flag*/
    else if(sb_mode == LV_SB_MODE_UNHIDE)
        ext->sb.mode &= (~LV_SB_MODE_HIDE); /*Clear the hidden flag*/
    else {
        if(ext->sb.mode & LV_SB_MODE_HIDE) sb_mode |= LV_SB_MODE_HIDE;
        ext->sb.mode = sb_mode;
    }

    ext->sb.hor_draw = 0;
    ext->sb.ver_draw = 0;

    lv_page_sb_refresh(page);
    lv_obj_invalidate(page);
}

// 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 0x3def1
movq -0x8(%rbp), %rsi
leaq 0x2a212(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3deef
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x28(%rax), %al
shrb $0x2, %al
andb $0x7, %al
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3df1a
jmp 0x3dfe9
movzbl -0x9(%rbp), %eax
cmpl $0x4, %eax
jne 0x3df4b
movq -0x18(%rbp), %rax
movb 0x28(%rax), %cl
shrb $0x2, %cl
andb $0x7, %cl
movzbl %cl, %ecx
orl $0x4, %ecx
movb %cl, %dl
movb 0x28(%rax), %cl
andb $0x7, %dl
shlb $0x2, %dl
andb $-0x1d, %cl
orb %dl, %cl
movb %cl, 0x28(%rax)
jmp 0x3dfb7
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
jne 0x3df7c
movq -0x18(%rbp), %rax
movb 0x28(%rax), %cl
shrb $0x2, %cl
andb $0x7, %cl
movzbl %cl, %ecx
andl $-0x5, %ecx
movb %cl, %dl
movb 0x28(%rax), %cl
andb $0x7, %dl
shlb $0x2, %dl
andb $-0x1d, %cl
orb %dl, %cl
movb %cl, 0x28(%rax)
jmp 0x3dfb5
movq -0x18(%rbp), %rax
movb 0x28(%rax), %al
shrb $0x2, %al
andb $0x7, %al
movzbl %al, %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3df9d
movzbl -0x9(%rbp), %eax
orl $0x4, %eax
movb %al, -0x9(%rbp)
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x28(%rax), %cl
andb $0x7, %dl
shlb $0x2, %dl
andb $-0x1d, %cl
orb %dl, %cl
movb %cl, 0x28(%rax)
jmp 0x3dfb7
movq -0x18(%rbp), %rax
movb 0x28(%rax), %cl
andb $-0x2, %cl
orb $0x0, %cl
movb %cl, 0x28(%rax)
movq -0x18(%rbp), %rax
movb 0x28(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x3e1c0
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_set_style
void lv_page_set_style(lv_obj_t * page, lv_page_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(page, LV_OBJX_NAME);

    lv_page_ext_t * ext = lv_obj_get_ext_attr(page);

    switch(type) {
        case LV_PAGE_STYLE_BG: lv_obj_set_style(page, style); break;
        case LV_PAGE_STYLE_SCRL: lv_obj_set_style(ext->scrl, style); break;
        case LV_PAGE_STYLE_SB:
            ext->sb.style = style;
            lv_area_set_height(&ext->sb.hor_area, ext->sb.style->body.padding.inner);
            lv_area_set_width(&ext->sb.ver_area, ext->sb.style->body.padding.inner);
            lv_page_sb_refresh(page);
            lv_obj_refresh_ext_draw_pad(page);
            lv_obj_invalidate(page);
            break;
#if LV_USE_ANIMATION
        case LV_PAGE_STYLE_EDGE_FLASH: ext->edge_flash.style = style; break;
#endif
    }
}

// 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 0x3e025
movq -0x8(%rbp), %rsi
leaq 0x2a0de(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3e023
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x3, %rax
ja 0x3e0ec
movq -0x28(%rbp), %rax
leaq 0x2a6c1(%rip), %rcx     # 0x68710
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x3e0ec
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x9150
jmp 0x3e0ec
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rdi
addq $0x10, %rdi
addq $0x8, %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movswl 0x1e(%rax), %esi
callq 0x426b0
movq -0x20(%rbp), %rdi
addq $0x10, %rdi
addq $0x10, %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movswl 0x1e(%rax), %esi
callq 0x42680
movq -0x8(%rbp), %rdi
callq 0x3e1c0
movq -0x8(%rbp), %rdi
callq 0x9dc0
movq -0x8(%rbp), %rdi
callq 0x7430
jmp 0x3e0ec
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)