LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_get_style
const lv_style_t * lv_page_get_style(const lv_obj_t * page, lv_page_style_t type)
{
    LV_ASSERT_OBJ(page, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_page_ext_t * ext      = lv_obj_get_ext_attr(page);

    switch(type) {
        case LV_PAGE_STYLE_BG: style = lv_obj_get_style(page); break;
        case LV_PAGE_STYLE_SCRL: style = lv_obj_get_style(ext->scrl); break;
        case LV_PAGE_STYLE_SB: style = ext->sb.style; break;
#if LV_USE_ANIMATION
        case LV_PAGE_STYLE_EDGE_FLASH: style = ext->edge_flash.style; break;
#endif
        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 0x3e131
movq -0x8(%rbp), %rsi
leaq 0x29fd2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3e12f
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x3, %rax
ja 0x3e1a6
movq -0x28(%rbp), %rax
leaq 0x2a5c1(%rip), %rcx     # 0x68720
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x3e1ae
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x3e1ae
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x3e1ae
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x3e1ae
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_get_fit_width
lv_coord_t lv_page_get_fit_width(lv_obj_t * page)
{
    LV_ASSERT_OBJ(page, LV_OBJX_NAME);

    const lv_style_t * bg_style   = lv_page_get_style(page, LV_PAGE_STYLE_BG);
    const lv_style_t * scrl_style = lv_page_get_style(page, LV_PAGE_STYLE_SCRL);

    return lv_obj_get_width(page) - bg_style->body.padding.left - bg_style->body.padding.right -
           scrl_style->body.padding.left - scrl_style->body.padding.right;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3ec8b
movq -0x8(%rbp), %rsi
leaq 0x29478(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3ec89
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x3e100
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8310
cwtl
movq -0x10(%rbp), %rcx
movswl 0x1a(%rcx), %ecx
subl %ecx, %eax
movq -0x10(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
movq -0x18(%rbp), %rcx
movswl 0x1a(%rcx), %ecx
subl %ecx, %eax
movq -0x18(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
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_page.c
// Function: lv_page_get_fit_height
lv_coord_t lv_page_get_fit_height(lv_obj_t * page)
{
    LV_ASSERT_OBJ(page, LV_OBJX_NAME);

    const lv_style_t * bg_style   = lv_page_get_style(page, LV_PAGE_STYLE_BG);
    const lv_style_t * scrl_style = lv_page_get_style(page, LV_PAGE_STYLE_SCRL);

    return lv_obj_get_height(page) - bg_style->body.padding.top - bg_style->body.padding.bottom -
           scrl_style->body.padding.top - scrl_style->body.padding.bottom;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3ed1b
movq -0x8(%rbp), %rsi
leaq 0x293e8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3ed19
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x3e100
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x8350
cwtl
movq -0x10(%rbp), %rcx
movswl 0x16(%rcx), %ecx
subl %ecx, %eax
movq -0x10(%rbp), %rcx
movswl 0x18(%rcx), %ecx
subl %ecx, %eax
movq -0x18(%rbp), %rcx
movswl 0x16(%rcx), %ecx
subl %ecx, %eax
movq -0x18(%rbp), %rcx
movswl 0x18(%rcx), %ecx
subl %ecx, %eax
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_page.c
// Function: lv_page_on_edge
bool lv_page_on_edge(lv_obj_t * page, lv_page_edge_t edge)
{
    const lv_style_t * page_style = lv_obj_get_style(page);
    lv_obj_t * scrl               = lv_page_get_scrl(page);
    lv_area_t page_coords;
    lv_area_t scrl_coords;

    lv_obj_get_coords(scrl, &scrl_coords);
    lv_obj_get_coords(page, &page_coords);

    if((edge & LV_PAGE_EDGE_TOP) && scrl_coords.y1 == page_coords.y1 + page_style->body.padding.top) return true;
    if((edge & LV_PAGE_EDGE_BOTTOM) && scrl_coords.y2 == page_coords.y2 - page_style->body.padding.bottom) return true;
    if((edge & LV_PAGE_EDGE_LEFT) && scrl_coords.x1 == page_coords.x1 + page_style->body.padding.left) return true;
    if((edge & LV_PAGE_EDGE_RIGHT) && scrl_coords.x2 == page_coords.x2 - page_style->body.padding.right) return true;

    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3e970
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x7fb0
movq -0x10(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x7fb0
movzbl -0x11(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3edee
movswl -0x36(%rbp), %eax
movswl -0x2e(%rbp), %ecx
movq -0x20(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
jne 0x3edee
movb $0x1, -0x1(%rbp)
jmp 0x3ee6a
movzbl -0x11(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x3ee16
movswl -0x32(%rbp), %eax
movswl -0x2a(%rbp), %ecx
movq -0x20(%rbp), %rdx
movswl 0x18(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jne 0x3ee16
movb $0x1, -0x1(%rbp)
jmp 0x3ee6a
movzbl -0x11(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x3ee3e
movswl -0x38(%rbp), %eax
movswl -0x30(%rbp), %ecx
movq -0x20(%rbp), %rdx
movswl 0x1a(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
jne 0x3ee3e
movb $0x1, -0x1(%rbp)
jmp 0x3ee6a
movzbl -0x11(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3ee66
movswl -0x34(%rbp), %eax
movswl -0x2c(%rbp), %ecx
movq -0x20(%rbp), %rdx
movswl 0x1c(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jne 0x3ee66
movb $0x1, -0x1(%rbp)
jmp 0x3ee6a
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %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_page.c
// Function: lv_page_scroll_hor
void lv_page_scroll_hor(lv_obj_t * page, lv_coord_t dist)
{
    lv_obj_t * scrl = lv_page_get_scrl(page);

#if LV_USE_ANIMATION
    lv_anim_t a;
    a.var            = scrl;
    a.start          = lv_obj_get_x(scrl);
    a.end            = a.start + dist;
    a.exec_cb        = (lv_anim_exec_xcb_t)lv_obj_set_x;
    a.path_cb        = lv_anim_path_linear;
    a.ready_cb       = NULL;
    a.act_time       = 0;
    a.time           = LV_PAGE_SCROLL_ANIM_TIME;
    a.playback       = 0;
    a.playback_pause = 0;
    a.repeat         = 0;
    a.repeat_pause   = 0;
    lv_anim_create(&a);
#else
    lv_obj_set_x(scrl, lv_obj_get_x(scrl) + dist);
#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 0x3e970
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
callq 0x7350
cwtl
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movswl -0xa(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
leaq -0x37268(%rip), %rax    # 0x80b0
movq %rax, -0x48(%rbp)
leaq 0x510d(%rip), %rax      # 0x44430
movq %rax, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
movw $0x0, -0x26(%rbp)
movw $0xc8, -0x28(%rbp)
movb -0x20(%rbp), %al
andb $-0x2, %al
orb $0x0, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x24(%rbp)
movb -0x20(%rbp), %al
andb $-0x3, %al
orb $0x0, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x22(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x444a0
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_scroll_ver
void lv_page_scroll_ver(lv_obj_t * page, lv_coord_t dist)
{
    lv_obj_t * scrl = lv_page_get_scrl(page);

#if LV_USE_ANIMATION
    lv_anim_t a;
    a.var            = scrl;
    a.start          = lv_obj_get_y(scrl);
    a.end            = a.start + dist;
    a.exec_cb        = (lv_anim_exec_xcb_t)lv_obj_set_y;
    a.path_cb        = lv_anim_path_linear;
    a.ready_cb       = NULL;
    a.act_time       = 0;
    a.time           = LV_PAGE_SCROLL_ANIM_TIME;
    a.playback       = 0;
    a.playback_pause = 0;
    a.repeat         = 0;
    a.repeat_pause   = 0;
    lv_anim_create(&a);
#else
    lv_obj_set_y(scrl, lv_obj_get_y(scrl) + dist);
#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 0x3e970
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rdi
callq 0x73c0
cwtl
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movswl -0xa(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
leaq -0x37298(%rip), %rax    # 0x8120
movq %rax, -0x48(%rbp)
leaq 0x506d(%rip), %rax      # 0x44430
movq %rax, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
movw $0x0, -0x26(%rbp)
movw $0xc8, -0x28(%rbp)
movb -0x20(%rbp), %al
andb $-0x2, %al
orb $0x0, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x24(%rbp)
movb -0x20(%rbp), %al
andb $-0x3, %al
orb $0x0, %al
movb %al, -0x20(%rbp)
movw $0x0, -0x22(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x444a0
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_start_edge_flash
void lv_page_start_edge_flash(lv_obj_t * page)
{
#if LV_USE_ANIMATION
    lv_page_ext_t * ext = lv_obj_get_ext_attr(page);
    if(ext->edge_flash.enabled) {
        lv_anim_t a;
        a.var            = page;
        a.start          = 0;
        a.end            = LV_PAGE_END_FLASH_SIZE;
        a.exec_cb        = (lv_anim_exec_xcb_t)edge_flash_anim;
        a.path_cb        = lv_anim_path_linear;
        a.ready_cb       = edge_flash_anim_end;
        a.act_time       = 0;
        a.time           = LV_PAGE_END_ANIM_TIME;
        a.playback       = 1;
        a.playback_pause = LV_PAGE_END_ANIM_WAIT_TIME;
        a.repeat         = 0;
        a.repeat_pause   = 0;
        lv_anim_create(&a);
    }
#else
    (void)page; /*Unused*/
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3f4a2
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x19, -0x24(%rbp)
leaq 0x5d(%rip), %rax        # 0x3f4b0
movq %rax, -0x40(%rbp)
leaq 0x4fd2(%rip), %rax      # 0x44430
movq %rax, -0x38(%rbp)
leaq 0x87(%rip), %rax        # 0x3f4f0
movq %rax, -0x30(%rbp)
movw $0x0, -0x1e(%rbp)
movw $0x12c, -0x20(%rbp)     # imm = 0x12C
movb -0x18(%rbp), %al
andb $-0x2, %al
orb $0x1, %al
movb %al, -0x18(%rbp)
movw $0x12c, -0x1c(%rbp)     # imm = 0x12C
movb -0x18(%rbp), %al
andb $-0x3, %al
orb $0x0, %al
movb %al, -0x18(%rbp)
movw $0x0, -0x1a(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x444a0
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: edge_flash_anim_end
static void edge_flash_anim_end(lv_anim_t * a)
{
    lv_page_ext_t * ext       = lv_obj_get_ext_attr(a->var);
    ext->edge_flash.top_ip    = 0;
    ext->edge_flash.bottom_ip = 0;
    ext->edge_flash.left_ip   = 0;
    ext->edge_flash.right_ip  = 0;
    lv_obj_invalidate(a->var);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x40(%rax)
movq -0x10(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x5, %cl
orb $0x0, %cl
movb %cl, 0x40(%rax)
movq -0x10(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x11, %cl
orb $0x0, %cl
movb %cl, 0x40(%rax)
movq -0x10(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x9, %cl
orb $0x0, %cl
movb %cl, 0x40(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_sw.c
// Function: lv_sw_set_style
void lv_sw_set_style(lv_obj_t * sw, lv_sw_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(sw, LV_OBJX_NAME);

    lv_sw_ext_t * ext = lv_obj_get_ext_attr(sw);

    switch(type) {
        case LV_SLIDER_STYLE_BG: lv_slider_set_style(sw, LV_SLIDER_STYLE_BG, style); break;
        case LV_SLIDER_STYLE_INDIC: lv_bar_set_style(sw, LV_SLIDER_STYLE_INDIC, style); break;
        case LV_SW_STYLE_KNOB_OFF:
            ext->style_knob_off = style;
            if(lv_sw_get_state(sw) == 0) lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, style);
            break;
        case LV_SW_STYLE_KNOB_ON:
            ext->style_knob_on = style;
            if(lv_sw_get_state(sw) != 0) lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, style);
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x3fe25
movq -0x8(%rbp), %rsi
leaq 0x282de(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3fe23
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x3, %rax
ja 0x3fee3
movq -0x28(%rbp), %rax
leaq 0x288e9(%rip), %rcx     # 0x68738
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x302e0
jmp 0x3fee3
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x1, %esi
callq 0xf300
jmp 0x3fee3
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x3fef0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3feae
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x302e0
jmp 0x3fee3
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rdi
callq 0x3fef0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3fee1
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x2, %esi
callq 0x302e0
jmp 0x3fee3
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_sw.c
// Function: lv_sw_on
void lv_sw_on(lv_obj_t * sw, lv_anim_enable_t anim)
{
    LV_ASSERT_OBJ(sw, LV_OBJX_NAME);

#if LV_USE_ANIMATION == 0
    anim = LV_ANIM_OFF;
#endif
    lv_sw_ext_t * ext = lv_obj_get_ext_attr(sw);
    lv_slider_set_value(sw, LV_SW_MAX_VALUE, anim);
    lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, ext->style_knob_on);
}

// 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 0x3ff61
movq -0x8(%rbp), %rsi
leaq 0x281a2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x3ff5f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0x64, %esi
movzbl -0x9(%rbp), %edx
callq 0x3ffa0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdx
movl $0x2, %esi
callq 0x302e0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_sw.c
// Function: lv_sw_off
void lv_sw_off(lv_obj_t * sw, lv_anim_enable_t anim)
{
    LV_ASSERT_OBJ(sw, LV_OBJX_NAME);

#if LV_USE_ANIMATION == 0
    anim = LV_ANIM_OFF;
#endif
    lv_sw_ext_t * ext = lv_obj_get_ext_attr(sw);
    lv_slider_set_value(sw, 0, anim);
    lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB, ext->style_knob_off);
}

// 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 0x40011
movq -0x8(%rbp), %rsi
leaq 0x280f2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x4000f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
movzbl -0x9(%rbp), %edx
callq 0x3ffa0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
movl $0x2, %esi
callq 0x302e0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_sw.c
// Function: lv_sw_toggle
bool lv_sw_toggle(lv_obj_t * sw, lv_anim_enable_t anim)
{
    LV_ASSERT_OBJ(sw, LV_OBJX_NAME);

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

    bool state = lv_sw_get_state(sw);
    if(state)
        lv_sw_off(sw, anim);
    else
        lv_sw_on(sw, anim);

    return !state;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x40081
movq -0x8(%rbp), %rsi
leaq 0x28082(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x4007f
movq -0x8(%rbp), %rdi
callq 0x3fef0
andb $0x1, %al
movb %al, -0xa(%rbp)
testb $0x1, -0xa(%rbp)
je 0x400a4
movq -0x8(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x3ffe0
jmp 0x400b1
movq -0x8(%rbp), %rdi
movzbl -0x9(%rbp), %esi
callq 0x3ff30
movb -0xa(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_sw.c
// Function: lv_sw_get_style
const lv_style_t * lv_sw_get_style(const lv_obj_t * sw, lv_sw_style_t type)
{
    LV_ASSERT_OBJ(sw, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_sw_ext_t * ext        = lv_obj_get_ext_attr(sw);

    switch(type) {
        case LV_SW_STYLE_BG: style = lv_slider_get_style(sw, LV_SLIDER_STYLE_BG); break;
        case LV_SW_STYLE_INDIC: style = lv_slider_get_style(sw, LV_SLIDER_STYLE_INDIC); break;
        case LV_SW_STYLE_KNOB_OFF: style = ext->style_knob_off; break;
        case LV_SW_STYLE_KNOB_ON: style = ext->style_knob_on; 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 0x40151
movq -0x8(%rbp), %rsi
leaq 0x27fb2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x4014f
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x3, %rax
ja 0x401c9
movq -0x28(%rbp), %rax
leaq 0x285c9(%rip), %rcx     # 0x68748
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x30560
movq %rax, -0x18(%rbp)
jmp 0x401d1
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x30560
movq %rax, -0x18(%rbp)
jmp 0x401d1
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x401d1
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x401d1
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_win.c
// Function: lv_win_add_btn
lv_obj_t * lv_win_add_btn(lv_obj_t * win, const void * img_src)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);
    LV_ASSERT_NULL(img_src);

    lv_win_ext_t * ext = lv_obj_get_ext_attr(win);

    lv_obj_t * btn = lv_btn_create(ext->header, NULL);
    lv_btn_set_style(btn, LV_BTN_STYLE_REL, ext->style_btn_rel);
    lv_btn_set_style(btn, LV_BTN_STYLE_PR, ext->style_btn_pr);
    lv_obj_set_size(btn, ext->btn_size, ext->btn_size);

    lv_obj_t * img = lv_img_create(btn, NULL);
    lv_obj_set_click(img, false);
    lv_img_set_src(img, img_src);

    lv_win_realign(win);

    return btn;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x40c7f
movq -0x8(%rbp), %rsi
leaq 0x27484(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40c7d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x40c9e
movq -0x10(%rbp), %rsi
leaq 0x27465(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40c9c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fe90
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdx
xorl %esi, %esi
callq 0x205e0
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdx
movl $0x1, %esi
callq 0x205e0
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rax
movw 0x28(%rax), %cx
movq -0x18(%rbp), %rax
movswl %cx, %esi
movswl 0x28(%rax), %edx
callq 0x8180
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x39cb0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0x94b0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3a2c0
movq -0x8(%rbp), %rdi
callq 0x409d0
movq -0x20(%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_win.c
// Function: lv_win_close_event_cb
void lv_win_close_event_cb(lv_obj_t * btn, lv_event_t event)
{
    LV_ASSERT_OBJ(btn, "lv_btn");

    if(event == LV_EVENT_RELEASED) {
        lv_obj_t * win = lv_win_get_from_btn(btn);

        lv_obj_del(win);
    }
}

// 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 0x40d81
movq -0x8(%rbp), %rsi
leaq 0x27382(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40d7f
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
jne 0x40da0
movq -0x8(%rbp), %rdi
callq 0x40db0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x75c0
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_win.c
// Function: lv_win_get_from_btn
lv_obj_t * lv_win_get_from_btn(const lv_obj_t * ctrl_btn)
{
    LV_ASSERT_OBJ(ctrl_btn, "lv_btn");

    lv_obj_t * header = lv_obj_get_parent(ctrl_btn);
    lv_obj_t * win    = lv_obj_get_parent(header);

    return win;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x40ddb
movq -0x8(%rbp), %rsi
leaq 0x27328(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40dd9
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_win.c
// Function: lv_win_set_title
void lv_win_set_title(lv_obj_t * win, const char * title)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);
    LV_ASSERT_STR(title);

    lv_win_ext_t * ext = lv_obj_get_ext_attr(win);

    lv_label_set_text(ext->title, title);
    lv_win_realign(win);
}

// 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 0x40e2f
movq -0x8(%rbp), %rsi
leaq 0x272d4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40e2d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x40e4e
movq -0x10(%rbp), %rsi
leaq 0x272b5(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40e4c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x2a630
movq -0x8(%rbp), %rdi
callq 0x409d0
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_win.c
// Function: lv_win_set_btn_size
void lv_win_set_btn_size(lv_obj_t * win, lv_coord_t size)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);

    lv_win_ext_t * ext = lv_obj_get_ext_attr(win);
    if(ext->btn_size == size) return;

    ext->btn_size = size;

    lv_win_realign(win);
}

// 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 0x40eb2
movq -0x8(%rbp), %rsi
leaq 0x27251(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40eb0
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movswl 0x28(%rax), %eax
movswl -0xa(%rbp), %ecx
cmpl %ecx, %eax
jne 0x40ed1
jmp 0x40ee6
movw -0xa(%rbp), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x28(%rax)
movq -0x8(%rbp), %rdi
callq 0x409d0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_win.c
// Function: lv_win_set_content_size
void lv_win_set_content_size(lv_obj_t * win, lv_coord_t w, lv_coord_t h)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);

    lv_win_ext_t * ext = lv_obj_get_ext_attr(win);
    h += lv_obj_get_height(ext->header);

    lv_obj_set_size(win, w, h);
}

// 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 0x40f29
movq -0x8(%rbp), %rsi
leaq 0x271da(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x40f27
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x8350
movswl %ax, %ecx
movswl -0xc(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movw -0xa(%rbp), %ax
movswl %ax, %esi
movswl -0xc(%rbp), %edx
callq 0x8180
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_win.c
// Function: lv_win_set_drag
void lv_win_set_drag(lv_obj_t * win, bool en)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);

    lv_win_ext_t * ext    = lv_obj_get_ext_attr(win);
    lv_obj_t * win_header = ext->header;
    lv_obj_set_drag_parent(win_header, en);
    lv_obj_set_drag(win, en);
}

// 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 0x41133
movq -0x8(%rbp), %rsi
leaq 0x26fd0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x41131
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x9740
movq -0x8(%rbp), %rdi
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x95a0
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_win.c
// Function: lv_win_get_width
lv_coord_t lv_win_get_width(lv_obj_t * win)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);

    lv_win_ext_t * ext            = lv_obj_get_ext_attr(win);
    lv_obj_t * scrl               = lv_page_get_scrl(ext->page);
    const lv_style_t * style_scrl = lv_obj_get_style(scrl);

    return lv_obj_get_width(scrl) - style_scrl->body.padding.left - style_scrl->body.padding.right;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x4136b
movq -0x8(%rbp), %rsi
leaq 0x26d98(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x41369
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x3e970
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa080
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x8310
cwtl
movq -0x20(%rbp), %rcx
movswl 0x1a(%rcx), %ecx
subl %ecx, %eax
movq -0x20(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_win.c
// Function: lv_win_get_style
const lv_style_t * lv_win_get_style(const lv_obj_t * win, lv_win_style_t type)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_win_ext_t * ext       = lv_obj_get_ext_attr(win);

    switch(type) {
        case LV_WIN_STYLE_BG: style = lv_obj_get_style(win); break;
        case LV_WIN_STYLE_CONTENT: style = lv_page_get_style(ext->page, LV_PAGE_STYLE_SCRL); break;
        case LV_WIN_STYLE_SB: style = lv_page_get_style(ext->page, LV_PAGE_STYLE_SB); break;
        case LV_WIN_STYLE_HEADER: style = lv_obj_get_style(ext->header); break;
        case LV_WIN_STYLE_BTN_REL: style = ext->style_btn_rel; break;
        case LV_WIN_STYLE_BTN_PR: style = ext->style_btn_pr; 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 0x413f1
movq -0x8(%rbp), %rsi
leaq 0x26d12(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x413ef
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 0x41498
movq -0x28(%rbp), %rax
leaq 0x27355(%rip), %rcx     # 0x68778
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x2, %esi
callq 0x3e100
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x414a0
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_win.c
// Function: lv_win_focus
void lv_win_focus(lv_obj_t * win, lv_obj_t * obj, lv_anim_enable_t anim_en)
{
    LV_ASSERT_OBJ(win, LV_OBJX_NAME);
    LV_ASSERT_OBJ(obj, "");


    lv_win_ext_t * ext = lv_obj_get_ext_attr(win);
    lv_page_focus(ext->page, obj, anim_en);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x414e4
movq -0x8(%rbp), %rsi
leaq 0x26c1f(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x414e2
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x41503
movq -0x10(%rbp), %rsi
leaq 0x26c00(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x41501
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movzbl -0x11(%rbp), %edx
callq 0x3eec0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: decompress
static void decompress(const uint8_t * in, uint8_t * out, lv_coord_t w, lv_coord_t h, uint8_t bpp)
{
    uint32_t wrp = 0;
    uint8_t wr_size = bpp;
    if(bpp == 3) wr_size = 4;

    rle_init(in, bpp);

    uint8_t * line_buf = lv_draw_get_buf(w * 2);
    uint8_t * line_buf1 = line_buf;
    uint8_t * line_buf2 = line_buf + w;

    decompress_line(line_buf1, w);

    lv_coord_t y;
    lv_coord_t x;
    for(x = 0; x < w; x++) {
        bits_write(out,wrp, line_buf1[x], bpp);
        wrp += wr_size;
    }

    for(y = 1; y < h; y++) {
        decompress_line(line_buf2, w);

        for(x = 0; x < w; x++) {
            line_buf1[x] = line_buf2[x] ^ line_buf1[x];
            bits_write(out,wrp, line_buf1[x], bpp);
            wrp += wr_size;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %dx, -0x12(%rbp)
movw %cx, -0x14(%rbp)
movb %al, -0x15(%rbp)
movl $0x0, -0x1c(%rbp)
movb -0x15(%rbp), %al
movb %al, -0x1d(%rbp)
movzbl -0x15(%rbp), %eax
cmpl $0x3, %eax
jne 0x41ba8
movb $0x4, -0x1d(%rbp)
movq -0x8(%rbp), %rdi
movzbl -0x15(%rbp), %esi
callq 0x420f0
movswl -0x12(%rbp), %edi
shll %edi
callq 0x5a6a0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movswl -0x12(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
movswl -0x12(%rbp), %esi
callq 0x42140
movw $0x0, -0x3c(%rbp)
movswl -0x3c(%rbp), %eax
movswl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jge 0x41c34
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
movq -0x30(%rbp), %rax
movswq -0x3c(%rbp), %rcx
movb (%rax,%rcx), %al
movzbl %al, %edx
movzbl -0x15(%rbp), %ecx
callq 0x42190
movzbl -0x1d(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movw -0x3c(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x3c(%rbp)
jmp 0x41bf1
movw $0x1, -0x3a(%rbp)
movswl -0x3a(%rbp), %eax
movswl -0x14(%rbp), %ecx
cmpl %ecx, %eax
jge 0x41cdd
movq -0x38(%rbp), %rdi
movswl -0x12(%rbp), %esi
callq 0x42140
movw $0x0, -0x3c(%rbp)
movswl -0x3c(%rbp), %eax
movswl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jge 0x41cca
movq -0x38(%rbp), %rax
movswq -0x3c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x30(%rbp), %rcx
movswq -0x3c(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
xorl %ecx, %eax
movb %al, %dl
movq -0x30(%rbp), %rax
movswq -0x3c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
movq -0x30(%rbp), %rax
movswq -0x3c(%rbp), %rcx
movb (%rax,%rcx), %al
movzbl %al, %edx
movzbl -0x15(%rbp), %ecx
callq 0x42190
movzbl -0x1d(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movw -0x3c(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x3c(%rbp)
jmp 0x41c5d
jmp 0x41ccc
movw -0x3a(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x3a(%rbp)
jmp 0x41c3a
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: lv_font_get_glyph_dsc_fmt_txt
bool lv_font_get_glyph_dsc_fmt_txt(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next)
{
    lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;
    uint32_t gid = get_glyph_dsc_id(font, unicode_letter);
    if(!gid) return false;

    int8_t kvalue = 0;
    if(fdsc->kern_dsc) {
        uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next);
        if(gid_next) {
            kvalue = get_kern_value(font, gid, gid_next);
        }
    }

    /*Put together a glyph dsc*/
    const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid];

    int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4);

    uint32_t adv_w = gdsc->adv_w + kv;
    adv_w  = (adv_w + (1 << 3)) >> 4;

    dsc_out->adv_w = adv_w;
    dsc_out->box_h = gdsc->box_h;
    dsc_out->box_w = gdsc->box_w;
    dsc_out->ofs_x = gdsc->ofs_x;
    dsc_out->ofs_y = gdsc->ofs_y;
    dsc_out->bpp   = (uint8_t)fdsc->bpp;

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x41820
movl %eax, -0x2c(%rbp)
cmpl $0x0, -0x2c(%rbp)
jne 0x41d30
movb $0x0, -0x1(%rbp)
jmp 0x41e10
movb $0x0, -0x2d(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x41d68
movq -0x10(%rbp), %rdi
movl -0x20(%rbp), %esi
callq 0x41820
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
je 0x41d66
movq -0x10(%rbp), %rdi
movl -0x2c(%rbp), %esi
movl -0x34(%rbp), %edx
callq 0x41e20
movb %al, -0x2d(%rbp)
jmp 0x41d68
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x2c(%rbp), %ecx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movsbl -0x2d(%rbp), %eax
movq -0x28(%rbp), %rcx
movzwl 0x20(%rcx), %ecx
imull %ecx, %eax
sarl $0x4, %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movl (%rax), %eax
shrl $0x14, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
addl $0x8, %eax
shrl $0x4, %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movq -0x40(%rbp), %rax
movb 0x5(%rax), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x40(%rbp), %rax
movb 0x4(%rax), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x40(%rbp), %rax
movb 0x6(%rax), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x4(%rax)
movq -0x40(%rbp), %rax
movb 0x7(%rax), %cl
movq -0x18(%rbp), %rax
movb %cl, 0x5(%rax)
movq -0x28(%rbp), %rax
movw 0x22(%rax), %ax
shrw $0xa, %ax
andw $0x7, %ax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x6(%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: kern_pair_8_compare
static int32_t kern_pair_8_compare(const void * ref, const void * element)
{
    const uint8_t * ref8_p = ref;
    const uint8_t * element8_p = element;

    /*If the MSB is different it will matter. If not return the diff. of the LSB*/
    if(ref8_p[0] != element8_p[0]) return (int32_t)ref8_p[0] - element8_p[0];
    else return (int32_t) ref8_p[1] - element8_p[1];

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
movq -0x28(%rbp), %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
je 0x42073
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
movq -0x28(%rbp), %rcx
movzbl (%rcx), %ecx
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x42088
movq -0x20(%rbp), %rax
movzbl 0x1(%rax), %eax
movq -0x28(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
subl %ecx, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: kern_pair_16_compare
static int32_t kern_pair_16_compare(const void * ref, const void * element)
{
    const uint16_t * ref16_p = ref;
    const uint16_t * element16_p = element;

    /*If the MSB is different it will matter. If not return the diff. of the LSB*/
    if(ref16_p[0] != element16_p[0]) return (int32_t)ref16_p[0] - element16_p[0];
    else return (int32_t) ref16_p[1] - element16_p[1];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movzwl (%rax), %eax
movq -0x28(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
je 0x420d3
movq -0x20(%rbp), %rax
movzwl (%rax), %eax
movq -0x28(%rbp), %rcx
movzwl (%rcx), %ecx
subl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x420e8
movq -0x20(%rbp), %rax
movzwl 0x2(%rax), %eax
movq -0x28(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
subl %ecx, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: rle_init
static void rle_init(const uint8_t * in,  uint8_t bpp)
{
    rle_in = in;
    rle_bpp = bpp;
    rle_state = RLE_STATE_SINGLE;
    rle_rdp = 0;
    rle_prev_v = 0;
    rle_cnt = 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, 0x47457(%rip)     # 0x89560
movb -0x9(%rbp), %al
movb %al, 0x47456(%rip)      # 0x89568
movl $0x0, 0x47450(%rip)     # 0x8956c
movl $0x0, 0x4744a(%rip)     # 0x89570
movb $0x0, 0x47447(%rip)     # 0x89574
movb $0x0, 0x47441(%rip)     # 0x89575
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: bits_write
static void bits_write(uint8_t * out, uint32_t bit_pos, uint8_t val, uint8_t len)
{
    if(len == 3) {
        len = 4;
        switch(val) {
        case 0: val = 0; break;
        case 1: val = 2; break;
        case 2: val = 4; break;
        case 3: val = 6; break;
        case 4: val = 9; break;
        case 5: val = 11; break;
        case 6: val = 13; break;
        case 7: val = 15; break;
        }
    }

    uint16_t byte_pos = bit_pos >> 3;
    bit_pos = bit_pos & 0x7;
    bit_pos = 8 - bit_pos - len;

    uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
    out[byte_pos] &= ((~bit_mask) << bit_pos);
    out[byte_pos] |= (val << bit_pos);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movb %cl, -0xd(%rbp)
movb %al, -0xe(%rbp)
movzbl -0xe(%rbp), %eax
cmpl $0x3, %eax
jne 0x42204
movb $0x4, -0xe(%rbp)
movzbl -0xd(%rbp), %eax
movq %rax, -0x20(%rbp)
subq $0x7, %rax
ja 0x42202
movq -0x20(%rbp), %rax
leaq 0x265e5(%rip), %rcx     # 0x687b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x0, -0xd(%rbp)
jmp 0x42202
movb $0x2, -0xd(%rbp)
jmp 0x42202
movb $0x4, -0xd(%rbp)
jmp 0x42202
movb $0x6, -0xd(%rbp)
jmp 0x42202
movb $0x9, -0xd(%rbp)
jmp 0x42202
movb $0xb, -0xd(%rbp)
jmp 0x42202
movb $0xd, -0xd(%rbp)
jmp 0x42202
movb $0xf, -0xd(%rbp)
jmp 0x42204
movl -0xc(%rbp), %eax
shrl $0x3, %eax
movw %ax, -0x10(%rbp)
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0xc(%rbp)
movl $0x8, %eax
subl -0xc(%rbp), %eax
movzbl -0xe(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xc(%rbp)
movzbl -0xe(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movzwl %ax, %eax
subl $0x1, %eax
movb %al, -0x11(%rbp)
movzbl -0x11(%rbp), %esi
xorl $-0x1, %esi
movl -0xc(%rbp), %ecx
shll %cl, %esi
movq -0x8(%rbp), %rax
movzwl -0x10(%rbp), %ecx
movzbl (%rax,%rcx), %edx
andl %esi, %edx
movb %dl, (%rax,%rcx)
movzbl -0xd(%rbp), %esi
movl -0xc(%rbp), %ecx
shll %cl, %esi
movq -0x8(%rbp), %rax
movzwl -0x10(%rbp), %ecx
movzbl (%rax,%rcx), %edx
orl %esi, %edx
movb %dl, (%rax,%rcx)
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_font/lv_font_fmt_txt.c
// Function: get_bits
static uint8_t get_bits(const uint8_t * in, uint32_t bit_pos, uint8_t len)
{
    uint8_t res = 0;
    uint32_t byte_pos = bit_pos >> 3;
    bit_pos = bit_pos & 0x7;
    uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
    uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1];

    res = (in16 >> (16 - bit_pos - len)) & bit_mask;
    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movb %al, -0xd(%rbp)
movb $0x0, -0xe(%rbp)
movl -0xc(%rbp), %eax
shrl $0x3, %eax
movl %eax, -0x14(%rbp)
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0xc(%rbp)
movzbl -0xd(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movzwl %ax, %eax
subl $0x1, %eax
movb %al, -0x15(%rbp)
movq -0x8(%rbp), %rax
movl -0x14(%rbp), %ecx
movzbl (%rax,%rcx), %eax
shll $0x8, %eax
movq -0x8(%rbp), %rcx
movl -0x14(%rbp), %edx
addl $0x1, %edx
movl %edx, %edx
movzbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movw %ax, -0x18(%rbp)
movzwl -0x18(%rbp), %eax
movl $0x10, %ecx
subl -0xc(%rbp), %ecx
movzbl -0xd(%rbp), %edx
subl %edx, %ecx
sarl %cl, %eax
movzbl -0x15(%rbp), %ecx
andl %ecx, %eax
movb %al, -0xe(%rbp)
movb -0xe(%rbp), %al
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_misc/lv_circ.c
// Function: lv_circ_next
void lv_circ_next(lv_point_t * c, lv_coord_t * tmp)
{
    c->y++;

    if(*tmp <= 0) {
        (*tmp) += 2 * c->y + 1; /*Change in decision criterion for y -> y+1*/
    } else {
        c->x--;
        (*tmp) += 2 * (c->y - c->x) + 1; /*Change for y -> y+1, x -> x-1*/
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movw 0x2(%rax), %cx
addw $0x1, %cx
movw %cx, 0x2(%rax)
movq -0x10(%rbp), %rax
movswl (%rax), %eax
cmpl $0x0, %eax
jg 0x425f3
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %edx
shll %edx
addl $0x1, %edx
movq -0x10(%rbp), %rax
movswl (%rax), %ecx
addl %edx, %ecx
movw %cx, (%rax)
jmp 0x42623
movq -0x8(%rbp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %edx
movq -0x8(%rbp), %rax
movswl (%rax), %eax
subl %eax, %edx
shll %edx
addl $0x1, %edx
movq -0x10(%rbp), %rax
movswl (%rax), %ecx
addl %edx, %ecx
movw %cx, (%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_misc/lv_area.c
// Function: lv_area_set
void lv_area_set(lv_area_t * area_p, lv_coord_t x1, lv_coord_t y1, lv_coord_t x2, lv_coord_t y2)
{
    area_p->x1 = x1;
    area_p->y1 = y1;
    area_p->x2 = x2;
    area_p->y2 = y2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movw %r8w, %ax
movq %rdi, -0x8(%rbp)
movw %si, -0xa(%rbp)
movw %dx, -0xc(%rbp)
movw %cx, -0xe(%rbp)
movw %ax, -0x10(%rbp)
movw -0xa(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, (%rax)
movw -0xc(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x2(%rax)
movw -0xe(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x4(%rax)
movw -0x10(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x6(%rax)
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_misc/lv_area.c
// Function: lv_area_set_pos
void lv_area_set_pos(lv_area_t * area_p, lv_coord_t x, lv_coord_t y)
{
    lv_coord_t w = lv_area_get_width(area_p);
    lv_coord_t h = lv_area_get_height(area_p);
    area_p->x1   = x;
    area_p->y1   = y;
    lv_area_set_width(area_p, w);
    lv_area_set_height(area_p, h);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x8(%rbp)
movw %cx, -0xa(%rbp)
movw %ax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
callq 0x42750
movw %ax, -0xe(%rbp)
movq -0x8(%rbp), %rdi
callq 0x42770
movw %ax, -0x10(%rbp)
movw -0xa(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, (%rax)
movw -0xc(%rbp), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x8(%rbp), %rdi
movswl -0xe(%rbp), %esi
callq 0x42680
movq -0x8(%rbp), %rdi
movswl -0x10(%rbp), %esi
callq 0x426b0
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_misc/lv_area.c
// Function: lv_area_intersect
bool lv_area_intersect(lv_area_t * res_p, const lv_area_t * a1_p, const lv_area_t * a2_p)
{
    /* Get the smaller area from 'a1_p' and 'a2_p' */
    res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1);
    res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1);
    res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2);
    res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2);

    /*If x1 or y1 greater then x2 or y2 then the areas union is empty*/
    bool union_ok = true;
    if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) {
        union_ok = false;
    }

    return union_ok;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movswl (%rax), %eax
movq -0x18(%rbp), %rcx
movswl (%rcx), %ecx
cmpl %ecx, %eax
jle 0x427fe
movq -0x10(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x20(%rbp)
jmp 0x42808
movq -0x18(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movswl 0x2(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jle 0x42836
movq -0x10(%rbp), %rax
movswl 0x2(%rax), %eax
movl %eax, -0x24(%rbp)
jmp 0x42841
movq -0x18(%rbp), %rax
movswl 0x2(%rax), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x10(%rbp), %rax
movswl 0x4(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x4(%rcx), %ecx
cmpl %ecx, %eax
jge 0x42870
movq -0x10(%rbp), %rax
movswl 0x4(%rax), %eax
movl %eax, -0x28(%rbp)
jmp 0x4287b
movq -0x18(%rbp), %rax
movswl 0x4(%rax), %eax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, 0x4(%rax)
movq -0x10(%rbp), %rax
movswl 0x6(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x6(%rcx), %ecx
cmpl %ecx, %eax
jge 0x428aa
movq -0x10(%rbp), %rax
movswl 0x6(%rax), %eax
movl %eax, -0x2c(%rbp)
jmp 0x428b5
movq -0x18(%rbp), %rax
movswl 0x6(%rax), %eax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, 0x6(%rax)
movb $0x1, -0x19(%rbp)
movq -0x8(%rbp), %rax
movswl (%rax), %eax
movq -0x8(%rbp), %rcx
movswl 0x4(%rcx), %ecx
cmpl %ecx, %eax
jg 0x428ee
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %eax
movq -0x8(%rbp), %rcx
movswl 0x6(%rcx), %ecx
cmpl %ecx, %eax
jle 0x428f2
movb $0x0, -0x19(%rbp)
movb -0x19(%rbp), %al
andb $0x1, %al
popq %rbp
retq
nopl (%rax)