// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_kb.c
// Function: lv_kb_def_event_cb
void lv_kb_def_event_cb(lv_obj_t * kb, lv_event_t event)
{
    LV_ASSERT_OBJ(kb, LV_OBJX_NAME);

    if(event != LV_EVENT_VALUE_CHANGED) return;

    lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
    uint16_t btn_id   = lv_btnm_get_active_btn(kb);
    if(btn_id == LV_BTNM_BTN_NONE) return;
    if(lv_btnm_get_btn_ctrl(kb, btn_id, LV_BTNM_CTRL_HIDDEN | LV_BTNM_CTRL_INACTIVE)) return;
    if(lv_btnm_get_btn_ctrl(kb, btn_id, LV_BTNM_CTRL_NO_REPEAT) && event == LV_EVENT_LONG_PRESSED_REPEAT) return;

    const char * txt = lv_btnm_get_active_btn_text(kb);
    if(txt == NULL) return;

    /*Do the corresponding action according to the text of the button*/
    if(strcmp(txt, "abc") == 0) {
        lv_btnm_set_map(kb, kb_map_lc);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_lc_map);
        return;
    } else if(strcmp(txt, "ABC") == 0) {
        lv_btnm_set_map(kb, kb_map_uc);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_uc_map);
        return;
    } else if(strcmp(txt, "1#") == 0) {
        lv_btnm_set_map(kb, kb_map_spec);
        lv_btnm_set_ctrl_map(kb, kb_ctrl_spec_map);
        return;
    } else if(strcmp(txt, LV_SYMBOL_CLOSE) == 0) {
        if(kb->event_cb != lv_kb_def_event_cb) {
            lv_res_t res = lv_event_send(kb, LV_EVENT_CANCEL, NULL);
            if(res != LV_RES_OK) return;
        } else {
            lv_kb_set_ta(kb, NULL); /*De-assign the text area  to hide it cursor if needed*/
            lv_obj_del(kb);
            return;
        }
        return;
    } else if(strcmp(txt, LV_SYMBOL_OK) == 0) {
        if(kb->event_cb != lv_kb_def_event_cb) {
            lv_res_t res = lv_event_send(kb, LV_EVENT_APPLY, NULL);
            if(res != LV_RES_OK) return;
        } else {
            lv_kb_set_ta(kb, NULL); /*De-assign the text area to hide it cursor if needed*/
        }
        return;
    }

    /*Add the characters to the text area if set*/
    if(ext->ta == NULL) return;

    if(strcmp(txt, "Enter") == 0 || strcmp(txt, LV_SYMBOL_NEW_LINE) == 0)
        lv_ta_add_char(ext->ta, '\n');
    else if(strcmp(txt, LV_SYMBOL_LEFT) == 0)
        lv_ta_cursor_left(ext->ta);
    else if(strcmp(txt, LV_SYMBOL_RIGHT) == 0)
        lv_ta_cursor_right(ext->ta);
    else if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0)
        lv_ta_del_char(ext->ta);
    else if(strcmp(txt, "+/-") == 0) {
        uint16_t cur        = lv_ta_get_cursor_pos(ext->ta);
        const char * ta_txt = lv_ta_get_text(ext->ta);
        if(ta_txt[0] == '-') {
            lv_ta_set_cursor_pos(ext->ta, 1);
            lv_ta_del_char(ext->ta);
            lv_ta_add_char(ext->ta, '+');
            lv_ta_set_cursor_pos(ext->ta, cur);
        } else if(ta_txt[0] == '+') {
            lv_ta_set_cursor_pos(ext->ta, 1);
            lv_ta_del_char(ext->ta);
            lv_ta_add_char(ext->ta, '-');
            lv_ta_set_cursor_pos(ext->ta, cur);
        } else {
            lv_ta_set_cursor_pos(ext->ta, 0);
            lv_ta_add_char(ext->ta, '-');
            lv_ta_set_cursor_pos(ext->ta, cur + 1);
        }
    } else {
        lv_ta_add_text(ext->ta, txt);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x153f1
movq -0x8(%rbp), %rsi
leaq 0x52d12(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x153ef
movzbl -0x9(%rbp), %eax
cmpl $0xe, %eax
je 0x153ff
jmp 0x157fc
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x37c40
movw %ax, -0x1a(%rbp)
movzwl -0x1a(%rbp), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x15429
jmp 0x157fc
movq -0x8(%rbp), %rdi
movl $0x28, %edx
movzwl -0x1a(%rbp), %esi
callq 0x37e50
testb $0x1, %al
jne 0x15441
jmp 0x15446
jmp 0x157fc
movq -0x8(%rbp), %rdi
movl $0x10, %edx
movzwl -0x1a(%rbp), %esi
callq 0x37e50
testb $0x1, %al
jne 0x1545e
jmp 0x1546c
movzbl -0x9(%rbp), %eax
cmpl $0x5, %eax
jne 0x1546c
jmp 0x157fc
movq -0x8(%rbp), %rdi
callq 0x37c90
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x15485
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52e80(%rip), %rsi     # 0x68310
callq 0x20d0
cmpl $0x0, %eax
jne 0x154bf
movq -0x8(%rbp), %rdi
leaq 0x66bfb(%rip), %rsi     # 0x7c0a0
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x52d3b(%rip), %rsi     # 0x681f0
callq 0x37640
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52e4a(%rip), %rsi     # 0x68314
callq 0x20d0
cmpl $0x0, %eax
jne 0x154f9
movq -0x8(%rbp), %rdi
leaq 0x66dd1(%rip), %rsi     # 0x7c2b0
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x52d81(%rip), %rsi     # 0x68270
callq 0x37640
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52e14(%rip), %rsi     # 0x68318
callq 0x20d0
cmpl $0x0, %eax
jne 0x15533
movq -0x8(%rbp), %rdi
leaq 0x66ef7(%rip), %rsi     # 0x7c410
callq 0x36c80
movq -0x8(%rbp), %rdi
leaq 0x52d97(%rip), %rsi     # 0x682c0
callq 0x37640
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52ddd(%rip), %rsi     # 0x6831b
callq 0x20d0
cmpl $0x0, %eax
jne 0x1559e
movq -0x8(%rbp), %rax
leaq -0x193(%rip), %rcx      # 0x153c0
cmpq %rcx, 0x28(%rax)
je 0x1557e
movq -0x8(%rbp), %rdi
movl $0x12, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x29(%rbp)
movzbl -0x29(%rbp), %eax
cmpl $0x1, %eax
je 0x1557c
jmp 0x157fc
jmp 0x15599
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x158f0
movq -0x8(%rbp), %rdi
callq 0x75c0
jmp 0x157fc
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52d76(%rip), %rsi     # 0x6831f
callq 0x20d0
cmpl $0x0, %eax
jne 0x155fb
movq -0x8(%rbp), %rax
leaq -0x1fe(%rip), %rcx      # 0x153c0
cmpq %rcx, 0x28(%rax)
je 0x155e9
movq -0x8(%rbp), %rdi
movl $0x11, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x2a(%rbp)
movzbl -0x2a(%rbp), %eax
cmpl $0x1, %eax
je 0x155e7
jmp 0x157fc
jmp 0x155f6
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x158f0
jmp 0x157fc
jmp 0x155fd
jmp 0x155ff
jmp 0x15601
jmp 0x15603
movq -0x18(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x15613
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52d05(%rip), %rsi     # 0x68323
callq 0x20d0
cmpl $0x0, %eax
je 0x1563d
movq -0x28(%rbp), %rdi
leaq 0x52cf6(%rip), %rsi     # 0x68329
callq 0x20d0
cmpl $0x0, %eax
jne 0x15654
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0xa, %esi
callq 0x31fa0
jmp 0x157fc
movq -0x28(%rbp), %rdi
leaq 0x52cce(%rip), %rsi     # 0x6832d
callq 0x20d0
cmpl $0x0, %eax
jne 0x1567b
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34450
jmp 0x157fa
movq -0x28(%rbp), %rdi
leaq 0x52cab(%rip), %rsi     # 0x68331
callq 0x20d0
cmpl $0x0, %eax
jne 0x156a2
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x343f0
jmp 0x157f8
movq -0x28(%rbp), %rdi
leaq 0x52c88(%rip), %rsi     # 0x68335
callq 0x20d0
cmpl $0x0, %eax
jne 0x156c9
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x32c90
jmp 0x157f6
movq -0x28(%rbp), %rdi
leaq 0x52c65(%rip), %rsi     # 0x68339
callq 0x20d0
cmpl $0x0, %eax
jne 0x157e3
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x32ab0
movw %ax, -0x2c(%rbp)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x34010
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x15757
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0x1, %esi
callq 0x32770
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x32c90
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0x2b, %esi
callq 0x31fa0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movswl -0x2c(%rbp), %esi
callq 0x32770
jmp 0x157e1
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x157a7
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0x1, %esi
callq 0x32770
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x32c90
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0x2d, %esi
callq 0x31fa0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movswl -0x2c(%rbp), %esi
callq 0x32770
jmp 0x157df
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
xorl %esi, %esi
callq 0x32770
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movl $0x2d, %esi
callq 0x31fa0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movzwl -0x2c(%rbp), %eax
addl $0x1, %eax
movswl %ax, %esi
callq 0x32770
jmp 0x157e1
jmp 0x157f4
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0x32270
jmp 0x157f6
jmp 0x157f8
jmp 0x157fa
jmp 0x157fc
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)