// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_core/lv_obj.c
// Function: lv_event_send_func
lv_res_t lv_event_send_func(lv_event_cb_t event_xcb, lv_obj_t * obj, lv_event_t event, const void * data)
{
    LV_ASSERT_OBJ(obj, LV_OBJX_NAME);

    /* Build a simple linked list from the objects used in the events
     * It's important to know if an this object was deleted by a nested event
     * called from this `even_cb`. */
    lv_event_temp_data_t event_temp_data;
    event_temp_data.obj     = obj;
    event_temp_data.deleted = false;
    event_temp_data.prev    = NULL;

    if(event_temp_data_head) {
        event_temp_data.prev = event_temp_data_head;
    }
    event_temp_data_head = &event_temp_data;

    const void * event_act_data_save = event_act_data;
    event_act_data                   = data;

    /*Call the input device's feedback callback if set*/
    lv_indev_t * indev_act = lv_indev_get_act();
    if(indev_act) {
        if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event);
    }

    /*Call the event callback itself*/
    if(event_xcb) event_xcb(obj, event);

    /*Restore the event data*/
    event_act_data = event_act_data_save;

    /*Remove this element from the list*/
    event_temp_data_head = event_temp_data_head->prev;

    if(event_temp_data.deleted) {
        return LV_RES_INV;
    }

    if(obj) {
        if(obj->parent_event && obj->par) {
            lv_res_t res = lv_event_send(obj->par, event, data);
            if(res != LV_RES_OK) {
                return LV_RES_INV;
            }
        }
    }

    return LV_RES_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x9b88
movq -0x18(%rbp), %rsi
leaq 0x5e57b(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x9b86
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
cmpq $0x0, 0x7f3dc(%rip)     # 0x88f80
je 0x9bb1
movq 0x7f3d3(%rip), %rax     # 0x88f80
movq %rax, -0x30(%rbp)
leaq -0x40(%rbp), %rax
movq %rax, 0x7f3c4(%rip)     # 0x88f80
movq 0x7f3c5(%rip), %rax     # 0x88f88
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
movq %rax, 0x7f3b6(%rip)     # 0x88f88
callq 0x4b70
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x9c01
movq -0x50(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x9bff
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x50(%rbp), %rdi
movzbl -0x19(%rbp), %esi
callq *%rax
jmp 0x9c01
cmpq $0x0, -0x10(%rbp)
je 0x9c16
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdi
movzbl -0x19(%rbp), %esi
callq *%rax
movq -0x48(%rbp), %rax
movq %rax, 0x7f367(%rip)     # 0x88f88
movq 0x7f358(%rip), %rax     # 0x88f80
movq 0x10(%rax), %rax
movq %rax, 0x7f34d(%rip)     # 0x88f80
testb $0x1, -0x38(%rbp)
je 0x9c3f
movb $0x0, -0x1(%rbp)
jmp 0x9c98
cmpq $0x0, -0x18(%rbp)
je 0x9c94
movq -0x18(%rbp), %rax
movw 0x58(%rax), %ax
shrw $0x7, %ax
andw $0x1, %ax
movzbl %al, %eax
cmpl $0x0, %eax
je 0x9c92
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x9c92
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movb -0x19(%rbp), %al
movq -0x28(%rbp), %rdx
movzbl %al, %esi
callq 0x7990
movb %al, -0x51(%rbp)
movzbl -0x51(%rbp), %eax
cmpl $0x1, %eax
je 0x9c90
movb $0x0, -0x1(%rbp)
jmp 0x9c98
jmp 0x9c92
jmp 0x9c94
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)