LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: indev_proc_reset_query_handler
static void indev_proc_reset_query_handler(lv_indev_t * indev)
{
    if(indev->proc.reset_query) {
        indev->proc.types.pointer.act_obj           = NULL;
        indev->proc.types.pointer.last_obj          = NULL;
        indev->proc.types.pointer.last_pressed      = NULL;
        indev->proc.types.pointer.drag_limit_out    = 0;
        indev->proc.types.pointer.drag_in_prog      = 0;
        indev->proc.long_pr_sent                    = 0;
        indev->proc.pr_timestamp                    = 0;
        indev->proc.longpr_rep_timestamp            = 0;
        indev->proc.types.pointer.drag_sum.x        = 0;
        indev->proc.types.pointer.drag_sum.y        = 0;
        indev->proc.types.pointer.drag_throw_vect.x = 0;
        indev->proc.types.pointer.drag_throw_vect.y = 0;
        indev->proc.reset_query                     = 0;
        indev_obj_act                               = NULL;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movb 0x78(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3d48
movq -0x8(%rbp), %rax
movq $0x0, 0x50(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x58(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x60(%rax)
movq -0x8(%rbp), %rax
movb 0x68(%rax), %cl
andb $-0x2, %cl
orb $0x0, %cl
movb %cl, 0x68(%rax)
movq -0x8(%rbp), %rax
movb 0x68(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x68(%rax)
movq -0x8(%rbp), %rax
movb 0x78(%rax), %cl
andb $-0x2, %cl
orb $0x0, %cl
movb %cl, 0x78(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x70(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x74(%rax)
movq -0x8(%rbp), %rax
movw $0x0, 0x44(%rax)
movq -0x8(%rbp), %rax
movw $0x0, 0x46(%rax)
movq -0x8(%rbp), %rax
movw $0x0, 0x48(%rax)
movq -0x8(%rbp), %rax
movw $0x0, 0x4a(%rax)
movq -0x8(%rbp), %rax
movb 0x78(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x78(%rax)
movq $0x0, 0x85228(%rip) # 0x88f70
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: indev_pointer_proc
static void indev_pointer_proc(lv_indev_t * i, lv_indev_data_t * data)
{
    /*Move the cursor if set and moved*/
    if(i->cursor != NULL &&
       (i->proc.types.pointer.last_point.x != data->point.x || i->proc.types.pointer.last_point.y != data->point.y)) {
        lv_obj_set_pos(i->cursor, data->point.x, data->point.y);
    }

    i->proc.types.pointer.act_point.x = data->point.x;
    i->proc.types.pointer.act_point.y = data->point.y;

    if(i->proc.state == LV_INDEV_STATE_PR) {
        indev_proc_press(&i->proc);
    } else {
        indev_proc_release(&i->proc);
    }

    i->proc.types.pointer.last_point.x = i->proc.types.pointer.act_point.x;
    i->proc.types.pointer.last_point.y = i->proc.types.pointer.act_point.y;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0x3db7
movq -0x8(%rbp), %rax
movswl 0x3c(%rax), %eax
movq -0x10(%rbp), %rcx
movswl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x3d95
movq -0x8(%rbp), %rax
movswl 0x3e(%rax), %eax
movq -0x10(%rbp), %rcx
movswl 0x2(%rcx), %ecx
cmpl %ecx, %eax
je 0x3db7
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rdi
movq -0x10(%rbp), %rax
movw (%rax), %cx
movq -0x10(%rbp), %rax
movswl %cx, %esi
movswl 0x2(%rax), %edx
callq 0x71f0
movq -0x10(%rbp), %rax
movw (%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x38(%rax)
movq -0x10(%rbp), %rax
movw 0x2(%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3a(%rax)
movq -0x8(%rbp), %rax
movzbl 0x30(%rax), %eax
cmpl $0x1, %eax
jne 0x3df2
movq -0x8(%rbp), %rdi
addq $0x30, %rdi
callq 0x4f00
jmp 0x3dff
movq -0x8(%rbp), %rdi
addq $0x30, %rdi
callq 0x55e0
movq -0x8(%rbp), %rax
movw 0x38(%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3c(%rax)
movq -0x8(%rbp), %rax
movw 0x3a(%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3e(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: indev_button_proc
static void indev_button_proc(lv_indev_t * i, lv_indev_data_t * data)
{
    i->proc.types.pointer.act_point.x = i->btn_points[data->btn_id].x;
    i->proc.types.pointer.act_point.y = i->btn_points[data->btn_id].y;

    /*Still the same point is pressed*/
    if(i->proc.types.pointer.last_point.x == i->proc.types.pointer.act_point.x &&
       i->proc.types.pointer.last_point.y == i->proc.types.pointer.act_point.y && data->state == LV_INDEV_STATE_PR) {
        indev_proc_press(&i->proc);
    } else {
        /*If a new point comes always make a release*/
        indev_proc_release(&i->proc);
    }

    i->proc.types.pointer.last_point.x = i->proc.types.pointer.act_point.x;
    i->proc.types.pointer.last_point.y = i->proc.types.pointer.act_point.y;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
movw (%rax,%rcx,4), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x38(%rax)
movq -0x8(%rbp), %rax
movq 0x90(%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
movw 0x2(%rax,%rcx,4), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3a(%rax)
movq -0x8(%rbp), %rax
movswl 0x3c(%rax), %eax
movq -0x8(%rbp), %rcx
movswl 0x38(%rcx), %ecx
cmpl %ecx, %eax
jne 0x4b31
movq -0x8(%rbp), %rax
movswl 0x3e(%rax), %eax
movq -0x8(%rbp), %rcx
movswl 0x3a(%rcx), %ecx
cmpl %ecx, %eax
jne 0x4b31
movq -0x10(%rbp), %rax
movzbl 0xe(%rax), %eax
cmpl $0x1, %eax
jne 0x4b31
movq -0x8(%rbp), %rdi
addq $0x30, %rdi
callq 0x4f00
jmp 0x4b3e
movq -0x8(%rbp), %rdi
addq $0x30, %rdi
callq 0x55e0
movq -0x8(%rbp), %rax
movw 0x38(%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3c(%rax)
movq -0x8(%rbp), %rax
movw 0x3a(%rax), %cx
movq -0x8(%rbp), %rax
movw %cx, 0x3e(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: lv_indev_set_cursor
void lv_indev_set_cursor(lv_indev_t * indev, lv_obj_t * cur_obj)
{
    if(indev->driver.type != LV_INDEV_TYPE_POINTER) return;

    indev->cursor = cur_obj;
    lv_obj_set_parent(indev->cursor, lv_disp_get_layer_sys(indev->driver.disp));
    lv_obj_set_pos(indev->cursor, indev->proc.types.pointer.act_point.x, indev->proc.types.pointer.act_point.y);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x4c5e
jmp 0x4cb8
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x80(%rax)
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x6420
movq -0x18(%rbp), %rdi
movq %rax, %rsi
callq 0x7d50
movq -0x8(%rbp), %rax
movq 0x80(%rax), %rdi
movq -0x8(%rbp), %rax
movw 0x38(%rax), %cx
movq -0x8(%rbp), %rax
movswl %cx, %esi
movswl 0x3a(%rax), %edx
callq 0x71f0
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: lv_indev_get_point
void lv_indev_get_point(const lv_indev_t * indev, lv_point_t * point)
{
    if(indev->driver.type != LV_INDEV_TYPE_POINTER && indev->driver.type != LV_INDEV_TYPE_BUTTON) {
        point->x = -1;
        point->y = -1;
    } else {
        point->x = indev->proc.types.pointer.act_point.x;
        point->y = indev->proc.types.pointer.act_point.y;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x4d69
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x3, %eax
je 0x4d69
movq -0x10(%rbp), %rax
movw $0xffff, (%rax)         # imm = 0xFFFF
movq -0x10(%rbp), %rax
movw $0xffff, 0x2(%rax)      # imm = 0xFFFF
jmp 0x4d88
movq -0x8(%rbp), %rax
movw 0x38(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movw 0x3a(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x2(%rax)
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_indev.c
// Function: lv_indev_get_vect
void lv_indev_get_vect(const lv_indev_t * indev, lv_point_t * point)
{
    if(indev == NULL) {
        point->x = 0;
        point->y = 0;
        return;
    }

    if(indev->driver.type != LV_INDEV_TYPE_POINTER && indev->driver.type != LV_INDEV_TYPE_BUTTON) {
        point->x = 0;
        point->y = 0;
    } else {
        point->x = indev->proc.types.pointer.vect.x;
        point->y = indev->proc.types.pointer.vect.y;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x4e48
movq -0x10(%rbp), %rax
movw $0x0, (%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x2(%rax)
jmp 0x4e94
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0x4e75
movq -0x8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x3, %eax
je 0x4e75
movq -0x10(%rbp), %rax
movw $0x0, (%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x2(%rax)
jmp 0x4e94
movq -0x8(%rbp), %rax
movw 0x40(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, (%rax)
movq -0x8(%rbp), %rax
movw 0x42(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x2(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_get_scr_act
lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_scr_act: no display registered to get its top layer");
        return NULL;
    }

    return disp->act_scr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x635c
callq 0xdad0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x636d
movq $0x0, -0x8(%rbp)
jmp 0x6379
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_get_layer_top
lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_layer_top: no display registered to get its top layer");
        return NULL;
    }

    return disp->top_layer;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x63ec
callq 0xdad0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x63fd
movq $0x0, -0x8(%rbp)
jmp 0x6409
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_get_layer_sys
lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_layer_sys: no display registered to get its top layer");
        return NULL;
    }

    return disp->sys_layer;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x643c
callq 0xdad0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x644d
movq $0x0, -0x8(%rbp)
jmp 0x6459
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_assign_screen
void lv_disp_assign_screen(lv_disp_t * disp, lv_obj_t * scr)
{
    if(lv_obj_get_parent(scr) != NULL) {
        LV_LOG_WARN("lv_disp_assign_screen: try to assign a non-screen object");
        return;
    }

    lv_disp_t * old_disp = lv_obj_get_disp(scr);

    if(old_disp == disp) return;

    lv_ll_chg_list(&old_disp->scr_ll, &disp->scr_ll, scr, true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x71b0
cmpq $0x0, %rax
je 0x6491
jmp 0x64c8
movq -0x10(%rbp), %rdi
callq 0x7a40
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x8(%rbp), %rax
jne 0x64aa
jmp 0x64c8
movq -0x18(%rbp), %rdi
addq $0x48, %rdi
movq -0x8(%rbp), %rsi
addq $0x48, %rsi
movq -0x10(%rbp), %rdx
movl $0x1, %ecx
callq 0x45970
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_get_refr_task
lv_task_t * lv_disp_get_refr_task(lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_disp_get_refr_task: no display registered");
        return NULL;
    }

    return disp->refr_task;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x64ec
callq 0xdad0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x64fd
movq $0x0, -0x8(%rbp)
jmp 0x6509
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_get_inactive_time
uint32_t lv_disp_get_inactive_time(const lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_disp_get_inactive_time: no display registered");
        return 0;
    }

    if(disp) return lv_tick_elaps(disp->last_activity_time);

    lv_disp_t * d;
    uint32_t t = UINT32_MAX;
    d          = lv_disp_get_next(NULL);
    while(d) {
        t = LV_MATH_MIN(t, lv_tick_elaps(d->last_activity_time));
        d = lv_disp_get_next(d);
    }

    return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x653c
callq 0xdad0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x654f
movl $0x0, -0x4(%rbp)
jmp 0x65d8
cmpq $0x0, -0x10(%rbp)
je 0x656a
movq -0x10(%rbp), %rax
movl 0x19c(%rax), %edi
callq 0xe010
movl %eax, -0x4(%rbp)
jmp 0x65d8
movl $0xffffffff, -0x1c(%rbp) # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edi
callq 0xdb80
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x65d2
movl -0x1c(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movl 0x19c(%rax), %edi
callq 0xe010
movl %eax, %ecx
movl -0x20(%rbp), %eax
cmpl %ecx, %eax
jae 0x65ab
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x65bd
movq -0x18(%rbp), %rax
movl 0x19c(%rax), %edi
callq 0xe010
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
callq 0xdb80
movq %rax, -0x18(%rbp)
jmp 0x657e
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_disp.c
// Function: lv_disp_trig_activity
void lv_disp_trig_activity(lv_disp_t * disp)
{
    if(!disp) disp = lv_disp_get_default();
    if(!disp) {
        LV_LOG_WARN("lv_disp_trig_activity: no display registered");
        return;
    }

    disp->last_activity_time = lv_tick_get();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x660c
callq 0xdad0
movq %rax, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x6615
jmp 0x6626
callq 0xdfe0
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x19c(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_signal
static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
{
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);

    lv_res_t res = LV_RES_OK;

    if(sign == LV_SIGNAL_CHILD_CHG) {
        /*Return 'invalid' if the child change signal is not enabled*/
        if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV;
    } else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
        const lv_style_t * style = lv_obj_get_style(obj);
        if(style->body.shadow.width > obj->ext_draw_pad) obj->ext_draw_pad = style->body.shadow.width;
    } else if(sign == LV_SIGNAL_STYLE_CHG) {
        lv_obj_refresh_ext_draw_pad(obj);
    }
    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)
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x6f67
movq -0x20(%rbp), %rdi
leaq 0x611bd(%rip), %rsi     # 0x68117
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x6fea
movb $0x1, -0x21(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x1, %eax
jne 0x6f92
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0xa7d0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x6f90
movb $0x0, -0x21(%rbp)
jmp 0x6fe4
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0x6fce
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movswl 0x12(%rax), %eax
movq -0x10(%rbp), %rcx
movswl 0x5c(%rcx), %ecx
cmpl %ecx, %eax
jle 0x6fcc
movq -0x30(%rbp), %rax
movw 0x12(%rax), %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0x6fe2
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x6fe0
movq -0x10(%rbp), %rdi
callq 0x9dc0
jmp 0x6fe2
jmp 0x6fe4
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_core/lv_obj.c
// Function: lv_obj_set_pos
void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    /*Convert x and y to absolute coordinates*/
    lv_obj_t * par = obj->par;

    x = x + par->coords.x1;
    y = y + par->coords.y1;

    /*Calculate and set the movement*/
    lv_point_t diff;
    diff.x = x - obj->coords.x1;
    diff.y = y - obj->coords.y1;

    /* Do nothing if the position is not changed */
    /* It is very important else recursive positioning can
     * occur without position change*/
    if(diff.x == 0 && diff.y == 0) return;

    /*Invalidate the original area*/
    lv_obj_invalidate(obj);

    /*Save the original coordinates*/
    lv_area_t ori;
    lv_obj_get_coords(obj, &ori);

    obj->coords.x1 += diff.x;
    obj->coords.y1 += diff.y;
    obj->coords.x2 += diff.x;
    obj->coords.y2 += diff.y;

    refresh_children_position(obj, diff.x, diff.y);

    /*Inform the object about its new coordinates*/
    obj->signal_cb(obj, LV_SIGNAL_CORD_CHG, &ori);

    /*Send a signal to the parent too*/
    par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj);

    /*Invalidate the new area*/
    lv_obj_invalidate(obj);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %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 0x7229
movq -0x8(%rbp), %rsi
leaq 0x60eda(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7227
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movswl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movswl 0x20(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0xa(%rbp)
movswl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movswl 0x22(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movq -0x8(%rbp), %rcx
movswl 0x20(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x1c(%rbp)
movswl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x1a(%rbp)
movswl -0x1c(%rbp), %eax
cmpl $0x0, %eax
jne 0x7293
movswl -0x1a(%rbp), %eax
cmpl $0x0, %eax
jne 0x7293
jmp 0x733c
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0x7fb0
movswl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movswl 0x20(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x20(%rax)
movswl -0x1a(%rbp), %edx
movq -0x8(%rbp), %rax
movswl 0x22(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x22(%rax)
movswl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movswl 0x24(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x24(%rax)
movswl -0x1a(%rbp), %edx
movq -0x8(%rbp), %rax
movswl 0x26(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x26(%rax)
movq -0x8(%rbp), %rdi
movw -0x1c(%rbp), %ax
movswl %ax, %esi
movswl -0x1a(%rbp), %edx
callq 0x8000
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x2, %esi
leaq -0x24(%rbp), %rdx
callq *%rax
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rdx
movl $0x1, %esi
callq *%rax
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_x
lv_coord_t lv_obj_get_x(const lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_coord_t rel_x;
    lv_obj_t * parent = lv_obj_get_parent(obj);
    if(parent) {
        rel_x             = obj->coords.x1 - parent->coords.x1;
    } else {
        rel_x = obj->coords.x1;
    }
    return rel_x;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x737b
movq -0x8(%rbp), %rsi
leaq 0x60d88(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7379
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x73a7
movq -0x8(%rbp), %rax
movswl 0x20(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x20(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0xa(%rbp)
jmp 0x73b3
movq -0x8(%rbp), %rax
movw 0x20(%rax), %ax
movw %ax, -0xa(%rbp)
movw -0xa(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_y
lv_coord_t lv_obj_get_y(const lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_coord_t rel_y;
    lv_obj_t * parent = lv_obj_get_parent(obj);
   if(parent) {
       rel_y             = obj->coords.y1 - parent->coords.y1;
   } else {
       rel_y = obj->coords.y1;
   }
    return rel_y;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x73eb
movq -0x8(%rbp), %rsi
leaq 0x60d18(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x73e9
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x7417
movq -0x8(%rbp), %rax
movswl 0x22(%rax), %eax
movq -0x18(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0xa(%rbp)
jmp 0x7423
movq -0x8(%rbp), %rax
movw 0x22(%rax), %ax
movw %ax, -0xa(%rbp)
movw -0xa(%rbp), %ax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_event_send
lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, const void * data)
{
    if(obj == NULL) return LV_RES_OK;

    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_res_t res;
    res = lv_event_send_func(obj->event_cb, obj, event, data);
    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)
cmpq $0x0, -0x10(%rbp)
jne 0x79b3
movb $0x1, -0x1(%rbp)
jmp 0x79f6
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x79d2
movq -0x10(%rbp), %rsi
leaq 0x60731(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x79d0
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x10(%rbp), %rsi
movb -0x11(%rbp), %al
movq -0x20(%rbp), %rcx
movzbl %al, %edx
callq 0x9b50
movb %al, -0x21(%rbp)
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_core/lv_obj.c
// Function: lv_event_mark_deleted
static void lv_event_mark_deleted(lv_obj_t * obj)
{
    lv_event_temp_data_t * t = event_temp_data_head;

    while(t) {
        if(t->obj == obj) t->deleted = true;
        t = t->prev;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq 0x81571(%rip), %rax     # 0x88f80
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x7a3d
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq -0x8(%rbp), %rax
jne 0x7a2f
movq -0x10(%rbp), %rax
movb $0x1, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x7a13
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_disp
lv_disp_t * lv_obj_get_disp(const lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    const lv_obj_t * scr;

    if(obj->par == NULL)
        scr = obj; /*`obj` is a screen*/
    else
        scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/

    lv_disp_t * d;
    LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d)
    {
        lv_obj_t * s;
        LV_LL_READ(d->scr_ll, s)
        {
            if(s == scr) return d;
        }
    }

    LV_LOG_WARN("lv_scr_get_disp: screen not found")
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7a6b
movq -0x10(%rbp), %rsi
leaq 0x60698(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7a69
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x7a7f
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x7a8c
movq -0x10(%rbp), %rdi
callq 0x7cf0
movq %rax, -0x18(%rbp)
leaq 0x89b35(%rip), %rdi     # 0x915c8
callq 0x45660
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x7b00
movq -0x20(%rbp), %rdi
addq $0x48, %rdi
callq 0x45660
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x7ae8
movq -0x28(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x7acf
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7b08
jmp 0x7ad1
movq -0x20(%rbp), %rdi
addq $0x48, %rdi
movq -0x28(%rbp), %rsi
callq 0x458a0
movq %rax, -0x28(%rbp)
jmp 0x7ab4
jmp 0x7aea
movq -0x20(%rbp), %rsi
leaq 0x89ad3(%rip), %rdi     # 0x915c8
callq 0x458a0
movq %rax, -0x20(%rbp)
jmp 0x7a9c
movq $0x0, -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_core/lv_obj.c
// Function: lv_obj_clean
void lv_obj_clean(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
    lv_obj_t * child = lv_obj_get_child(obj, NULL);
    lv_obj_t * child_next;
    while(child) {
        /* Read the next child before deleting the current
         * because the next couldn't be read from a deleted (invalid) node*/
        child_next = lv_obj_get_child(obj, child);
        lv_obj_del(child);
        child = child_next;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7bdb
movq -0x8(%rbp), %rsi
leaq 0x60528(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7bd9
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x7c17
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7c20
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x75c0
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x7bec
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_child
lv_obj_t * lv_obj_get_child(const lv_obj_t * obj, const lv_obj_t * child)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_obj_t * result = NULL;

    if(child == NULL) {
        result = lv_ll_get_head(&obj->child_ll);
    } else {
        result = lv_ll_get_next(&obj->child_ll, child);
    }

    return result;
}

// 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 0x7c4f
movq -0x8(%rbp), %rsi
leaq 0x604b4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7c4d
movq $0x0, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7c71
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
callq 0x45660
movq %rax, -0x18(%rbp)
jmp 0x7c86
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
callq 0x458a0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_screen
lv_obj_t * lv_obj_get_screen(const lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    const lv_obj_t * par = obj;
    const lv_obj_t * act_p;

    do {
        act_p = par;
        par   = lv_obj_get_parent(act_p);
    } while(par != NULL);

    return (lv_obj_t *)act_p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7d1b
movq -0x8(%rbp), %rsi
leaq 0x603e8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7d19
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7d23
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_set_parent
void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
    LV_ASSERT_OBJ(parent, LV_OBJX_NAME);

    if(obj->par == NULL) {
        LV_LOG_WARN("Can't set the parent of a screen");
        return;
    }

    if(parent == NULL) {
        LV_LOG_WARN("Can't set parent == NULL to an object");
        return;
    }

    lv_obj_invalidate(obj);

    lv_point_t old_pos;
    old_pos.x = lv_obj_get_x(obj);
    old_pos.y = lv_obj_get_y(obj);

    lv_obj_t * old_par = obj->par;

    lv_ll_chg_list(&obj->par->child_ll, &parent->child_ll, obj, true);
    obj->par = parent;
    lv_obj_set_pos(obj, old_pos.x, old_pos.y);

    /*Notify the original parent because one of its children is lost*/
    old_par->signal_cb(old_par, LV_SIGNAL_CHILD_CHG, NULL);

    /*Notify the new parent about the child*/
    parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj);

    lv_obj_invalidate(obj);
}

// 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 0x7d7f
movq -0x8(%rbp), %rsi
leaq 0x60384(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7d7d
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7d9e
movq -0x10(%rbp), %rsi
leaq 0x60365(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7d9c
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x7dad
jmp 0x7e5e
cmpq $0x0, -0x10(%rbp)
jne 0x7db9
jmp 0x7e5e
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
callq 0x7350
movw %ax, -0x14(%rbp)
movq -0x8(%rbp), %rdi
callq 0x73c0
movw %ax, -0x12(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movq -0x8(%rbp), %rdx
movl $0x1, %ecx
callq 0x45970
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movw -0x14(%rbp), %ax
movswl %ax, %esi
movswl -0x12(%rbp), %edx
callq 0x71f0
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x20(%rbp), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq *%rax
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rdx
movl $0x1, %esi
callq *%rax
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_move_foreground
void lv_obj_move_foreground(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_obj_t * parent = lv_obj_get_parent(obj);

    /*Do nothing of already in the foreground*/
    if(lv_ll_get_head(&parent->child_ll) == obj) return;

    lv_obj_invalidate(parent);

    lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true);

    /*Notify the new parent about the child*/
    parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj);

    lv_obj_invalidate(parent);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7e9b
movq -0x8(%rbp), %rsi
leaq 0x60268(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7e99
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x45660
cmpq -0x8(%rbp), %rax
jne 0x7ebd
jmp 0x7f04
movq -0x10(%rbp), %rdi
callq 0x7430
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movq -0x8(%rbp), %rdx
movl $0x1, %ecx
callq 0x45970
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rdx
movl $0x1, %esi
callq *%rax
movq -0x10(%rbp), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_move_background
void lv_obj_move_background(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_obj_t * parent = lv_obj_get_parent(obj);

    /*Do nothing of already in the background*/
    if(lv_ll_get_tail(&parent->child_ll) == obj) return;

    lv_obj_invalidate(parent);

    lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, false);

    /*Notify the new parent about the child*/
    parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj);

    lv_obj_invalidate(parent);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x7f3b
movq -0x8(%rbp), %rsi
leaq 0x601c8(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x7f39
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x458e0
cmpq -0x8(%rbp), %rax
jne 0x7f5d
jmp 0x7fa1
movq -0x10(%rbp), %rdi
callq 0x7430
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
movq -0x8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x45970
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rdx
movl $0x1, %esi
callq *%rax
movq -0x10(%rbp), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: refresh_children_position
static void refresh_children_position(lv_obj_t * obj, lv_coord_t x_diff, lv_coord_t y_diff)
{
    lv_obj_t * i;
    LV_LL_READ(obj->child_ll, i)
    {
        i->coords.x1 += x_diff;
        i->coords.y1 += y_diff;
        i->coords.x2 += x_diff;
        i->coords.y2 += y_diff;

        refresh_children_position(i, x_diff, y_diff);
    }
}

// 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
addq $0x8, %rdi
callq 0x45660
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x80a5
movswl -0xa(%rbp), %edx
movq -0x18(%rbp), %rax
movswl 0x20(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x20(%rax)
movswl -0xc(%rbp), %edx
movq -0x18(%rbp), %rax
movswl 0x22(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x22(%rax)
movswl -0xa(%rbp), %edx
movq -0x18(%rbp), %rax
movswl 0x24(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x24(%rax)
movswl -0xc(%rbp), %edx
movq -0x18(%rbp), %rax
movswl 0x26(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x26(%rax)
movq -0x18(%rbp), %rdi
movw -0xa(%rbp), %ax
movswl %ax, %esi
movswl -0xc(%rbp), %edx
callq 0x8000
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
callq 0x458a0
movq %rax, -0x18(%rbp)
jmp 0x802b
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_realign
void lv_obj_realign(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

#if LV_USE_OBJ_REALIGN
    if(obj->realign.origo_align)
        lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
    else
        lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs);
#else
    (void)obj;
    LV_LOG_WARN("lv_obj_realaign: no effect because LV_USE_OBJ_REALIGN = 0");
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x83bb
movq -0x8(%rbp), %rsi
leaq 0x5fd48(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x83b9
movq -0x8(%rbp), %rax
movb 0x6d(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x83fb
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rsi
movq -0x8(%rbp), %rax
movb 0x6c(%rax), %dl
movq -0x8(%rbp), %rax
movw 0x68(%rax), %cx
movq -0x8(%rbp), %rax
movzbl %dl, %edx
movswl %cx, %ecx
movswl 0x6a(%rax), %r8d
callq 0x8b70
jmp 0x842a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rsi
movq -0x8(%rbp), %rax
movb 0x6c(%rax), %dl
movq -0x8(%rbp), %rax
movw 0x68(%rax), %cx
movq -0x8(%rbp), %rax
movzbl %dl, %edx
movswl %cx, %ecx
movswl 0x6a(%rax), %r8d
callq 0x8500
addq $0x10, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_set_style
void lv_obj_set_style(lv_obj_t * obj, const lv_style_t * style)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);
    LV_ASSERT_STYLE(style);

    obj->style_p = style;

    /*Send a signal about style change to every children with NULL style*/
    refresh_children_style(obj);

    /*Notify the object about the style change too*/
    lv_obj_refresh_style(obj);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x917f
movq -0x8(%rbp), %rsi
leaq 0x5ef84(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x917d
movq -0x10(%rbp), %rdi
callq 0xd2e0
testb $0x1, %al
jne 0x919e
movq -0x10(%rbp), %rsi
leaq 0x5ef72(%rip), %rdi     # 0x68109
callq 0xd410
jmp 0x919c
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x8(%rbp), %rdi
callq 0x91d0
movq -0x8(%rbp), %rdi
callq 0x9250
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: refresh_children_style
static void refresh_children_style(lv_obj_t * obj)
{
    lv_obj_t * child = lv_obj_get_child(obj, NULL);
    while(child != NULL) {
        if(child->style_p == NULL) {
            refresh_children_style(child); /*Check children too*/
            lv_obj_refresh_style(child);   /*Notify the child about the style change*/
        } else if(child->style_p->glass) {
            /*Children with 'glass' parent might be effected if their style == NULL*/
            refresh_children_style(child);
        }
        child = lv_obj_get_child(obj, child);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x9241
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x9213
movq -0x10(%rbp), %rdi
callq 0x91d0
movq -0x10(%rbp), %rdi
callq 0x9250
jmp 0x922e
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movb (%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x922c
movq -0x10(%rbp), %rdi
callq 0x91d0
jmp 0x922e
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7c20
movq %rax, -0x10(%rbp)
jmp 0x91ed
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_refresh_style
void lv_obj_refresh_style(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_obj_invalidate(obj);
    obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL);
    lv_obj_invalidate(obj);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x927b
movq -0x8(%rbp), %rsi
leaq 0x5ee88(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x9279
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x4, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq *%rax
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_report_style_mod
void lv_obj_report_style_mod(lv_style_t * style)
{
    LV_ASSERT_STYLE(style);

    lv_disp_t * d = lv_disp_get_next(NULL);

    while(d) {
        lv_obj_t * i;
        LV_LL_READ(d->scr_ll, i)
        {
            if(i->style_p == style || style == NULL) {
                lv_obj_refresh_style(i);
            }

            report_style_mod_core(style, i);
        }
        d = lv_disp_get_next(d);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd2e0
testb $0x1, %al
jne 0x92db
movq -0x8(%rbp), %rsi
leaq 0x5ee35(%rip), %rdi     # 0x68109
callq 0xd410
jmp 0x92d9
xorl %eax, %eax
movl %eax, %edi
callq 0xdb80
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x9358
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x45660
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x9349
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x931c
cmpq $0x0, -0x8(%rbp)
jne 0x9325
movq -0x18(%rbp), %rdi
callq 0x9250
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9360
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
movq -0x18(%rbp), %rsi
callq 0x458a0
movq %rax, -0x18(%rbp)
jmp 0x9300
movq -0x10(%rbp), %rdi
callq 0xdb80
movq %rax, -0x10(%rbp)
jmp 0x92e8
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: report_style_mod_core
static void report_style_mod_core(void * style_p, lv_obj_t * obj)
{
    lv_obj_t * i;
    LV_LL_READ(obj->child_ll, i)
    {
        if(i->style_p == style_p || style_p == NULL) {
            refresh_children_style(i);
            lv_obj_refresh_style(i);
        }

        report_style_mod_core(style_p, i);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x45660
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x93d3
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x939d
cmpq $0x0, -0x8(%rbp)
jne 0x93af
movq -0x18(%rbp), %rdi
callq 0x91d0
movq -0x18(%rbp), %rdi
callq 0x9250
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9360
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
callq 0x458a0
movq %rax, -0x18(%rbp)
jmp 0x9381
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_set_hidden
void lv_obj_set_hidden(lv_obj_t * obj, bool en)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    if(!obj->hidden) lv_obj_invalidate(obj); /*Invalidate when not hidden (hidden objects are ignored) */

    obj->hidden = en == false ? 0 : 1;

    if(!obj->hidden) lv_obj_invalidate(obj); /*Invalidate when not hidden (hidden objects are ignored) */

    lv_obj_t * par = lv_obj_get_parent(obj);
    par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj);
}

// 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 0x9413
movq -0x8(%rbp), %rsi
leaq 0x5ecf0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x9411
movq -0x8(%rbp), %rax
movw 0x58(%rax), %ax
shrw $0x4, %ax
andw $0x1, %ax
cmpb $0x0, %al
jne 0x9430
movq -0x8(%rbp), %rdi
callq 0x7430
movb -0x9(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovel %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x58(%rax), %cx
andw $0x1, %dx
shlw $0x4, %dx
andw $-0x11, %cx
orw %dx, %cx
movw %cx, 0x58(%rax)
movq -0x8(%rbp), %rax
movw 0x58(%rax), %ax
shrw $0x4, %ax
andw $0x1, %ax
cmpb $0x0, %al
jne 0x9485
movq -0x8(%rbp), %rdi
callq 0x7430
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rdx
movl $0x1, %esi
callq *%rax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_set_base_dir
void lv_obj_set_base_dir(lv_obj_t * obj, lv_bidi_dir_t dir)
{
    if(dir != LV_BIDI_DIR_LTR && dir != LV_BIDI_DIR_RTL &&
       dir != LV_BIDI_DIR_AUTO && dir != LV_BIDI_DIR_INHERIT) {

        LV_LOG_WARN("lv_obj_set_base_dir: invalid base dir");
        return;
    }

    obj->base_dir = dir;
    lv_signal_send(obj, LV_SIGNAL_BASE_DIR_CHG, NULL);

    /* Notify the children about the parent base dir has changed.
     * (The children might have `LV_BIDI_DIR_INHERIT`)*/
    base_dir_refr_children(obj);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
je 0x9878
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
je 0x9878
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x9878
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
je 0x9878
jmp 0x98b8
movb -0x9(%rbp), %cl
movq -0x8(%rbp), %rax
movzbl %cl, %ecx
movw %cx, %dx
movw 0x58(%rax), %cx
andw $0x3, %dx
shlw $0xa, %dx
andw $0xf3ff, %cx            # imm = 0xF3FF
orw %dx, %cx
movw %cx, 0x58(%rax)
movq -0x8(%rbp), %rdi
movl $0x5, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x98c0
movq -0x8(%rbp), %rdi
callq 0x9920
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: base_dir_refr_children
static void base_dir_refr_children(lv_obj_t * obj)
{
    lv_obj_t * child;
    child = lv_obj_get_child(obj, NULL);

    while(child) {
        if(child->base_dir == LV_BIDI_DIR_INHERIT) {
            lv_signal_send(child, LV_SIGNAL_BASE_DIR_CHG, NULL);
            base_dir_refr_children(child);
        }

        child = lv_obj_get_child(obj, child);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7c20
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x998a
movq -0x10(%rbp), %rax
movw 0x58(%rax), %ax
shrw $0xa, %ax
andw $0x3, %ax
movzbl %al, %eax
cmpl $0x3, %eax
jne 0x9977
movq -0x10(%rbp), %rdi
movl $0x5, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x98c0
movq -0x10(%rbp), %rdi
callq 0x9920
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x7c20
movq %rax, -0x10(%rbp)
jmp 0x993d
addq $0x10, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_refresh_ext_draw_pad
void lv_obj_refresh_ext_draw_pad(lv_obj_t * obj)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    obj->ext_draw_pad = 0;
    obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL);

    lv_obj_invalidate(obj);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x9deb
movq -0x8(%rbp), %rsi
leaq 0x5e318(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x9de9
movq -0x8(%rbp), %rax
movw $0x0, 0x5c(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x6, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq *%rax
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_obj_get_child_back
lv_obj_t * lv_obj_get_child_back(const lv_obj_t * obj, const lv_obj_t * child)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    lv_obj_t * result = NULL;

    if(child == NULL) {
        result = lv_ll_get_tail(&obj->child_ll);
    } else {
        result = lv_ll_get_prev(&obj->child_ll, child);
    }

    return result;
}

// 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 0x9e4f
movq -0x8(%rbp), %rsi
leaq 0x5e2b4(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x9e4d
movq $0x0, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x9e71
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
callq 0x458e0
movq %rax, -0x18(%rbp)
jmp 0x9e86
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
callq 0x45690
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq