LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_set_cell_align
void lv_table_set_cell_align(lv_obj_t * table, uint16_t row, uint16_t col, lv_label_align_t align)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_align: invalid row or column");
        return;
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL) {
        ext->cell_data[cell]    = lv_mem_alloc(2); /*+1: trailing '\0; +1: format byte*/
        ext->cell_data[cell][0] = 0;
        ext->cell_data[cell][1] = '\0';
    }

    lv_table_cell_format_t format;
    format.format_byte      = ext->cell_data[cell][0];
    format.s.align          = align;
    ext->cell_data[cell][0] = format.format_byte;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movw %dx, %cx
movw %si, %dx
movq %rdi, -0x8(%rbp)
movw %dx, -0xa(%rbp)
movw %cx, -0xc(%rbp)
movb %al, -0xd(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1ae8e
movq -0x8(%rbp), %rsi
leaq 0x4d275(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1ae8c
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1aeba
movzwl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1aebf
jmp 0x1af61
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0xc(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1af29
movl $0x2, %edi
callq 0x44d20
movq %rax, %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, (%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, 0x1(%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x1d(%rbp)
movb -0xd(%rbp), %cl
movb -0x1d(%rbp), %al
andb $0x3, %cl
andb $-0x4, %al
orb %cl, %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %cl
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movb %cl, (%rax)
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_table.c
// Function: lv_table_set_cell_type
void lv_table_set_cell_type(lv_obj_t * table, uint16_t row, uint16_t col, uint8_t type)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_type: invalid row or column");
        return;
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL) {
        ext->cell_data[cell]    = lv_mem_alloc(2); /*+1: trailing '\0; +1: format byte*/
        ext->cell_data[cell][0] = 0;
        ext->cell_data[cell][1] = '\0';
    }

    if(type > 0) type--; /*User gives 1,2,3,4 but easier to handle 0, 1, 2, 3*/
    if(type >= LV_TABLE_CELL_STYLE_CNT) type = LV_TABLE_CELL_STYLE_CNT - 1;

    lv_table_cell_format_t format;
    format.format_byte      = ext->cell_data[cell][0];
    format.s.type           = type;
    ext->cell_data[cell][0] = format.format_byte;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movw %dx, %cx
movw %si, %dx
movq %rdi, -0x8(%rbp)
movw %dx, -0xa(%rbp)
movw %cx, -0xc(%rbp)
movb %al, -0xd(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1afae
movq -0x8(%rbp), %rsi
leaq 0x4d155(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1afac
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1afda
movzwl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1afdf
jmp 0x1b0a2
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0xc(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b049
movl $0x2, %edi
callq 0x44d20
movq %rax, %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, (%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, 0x1(%rax)
movzbl -0xd(%rbp), %eax
cmpl $0x0, %eax
jle 0x1b05a
movb -0xd(%rbp), %al
addb $-0x1, %al
movb %al, -0xd(%rbp)
movzbl -0xd(%rbp), %eax
cmpl $0x4, %eax
jl 0x1b067
movb $0x3, -0xd(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x1d(%rbp)
movb -0xd(%rbp), %cl
movb -0x1d(%rbp), %al
andb $0x3, %cl
shlb $0x3, %cl
andb $-0x19, %al
orb %cl, %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %cl
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movb %cl, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_set_cell_crop
void lv_table_set_cell_crop(lv_obj_t * table, uint16_t row, uint16_t col, bool crop)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_crop: invalid row or column");
        return;
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL) {
        ext->cell_data[cell]    = lv_mem_alloc(2); /*+1: trailing '\0; +1: format byte*/
        ext->cell_data[cell][0] = 0;
        ext->cell_data[cell][1] = '\0';
    }

    lv_table_cell_format_t format;
    format.format_byte      = ext->cell_data[cell][0];
    format.s.crop           = crop;
    ext->cell_data[cell][0] = format.format_byte;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movw %dx, %cx
movw %si, %dx
movq %rdi, -0x8(%rbp)
movw %dx, -0xa(%rbp)
movw %cx, -0xc(%rbp)
andb $0x1, %al
movb %al, -0xd(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b0f0
movq -0x8(%rbp), %rsi
leaq 0x4d013(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b0ee
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b11c
movzwl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b121
jmp 0x1b1c9
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0xc(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b18b
movl $0x2, %edi
callq 0x44d20
movq %rax, %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, (%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, 0x1(%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x1d(%rbp)
movb -0xd(%rbp), %cl
andb $0x1, %cl
movb -0x1d(%rbp), %al
andb $0x1, %cl
shlb $0x5, %cl
andb $-0x21, %al
orb %cl, %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %cl
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movb %cl, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_set_cell_merge_right
void lv_table_set_cell_merge_right(lv_obj_t * table, uint16_t row, uint16_t col, bool en)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_merge_right: invalid row or column");
        return;
    }

    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL) {
        ext->cell_data[cell]    = lv_mem_alloc(2); /*+1: trailing '\0; +1: format byte*/
        ext->cell_data[cell][0] = 0;
        ext->cell_data[cell][1] = '\0';
    }

    lv_table_cell_format_t format;
    format.format_byte      = ext->cell_data[cell][0];
    format.s.right_merge    = en ? 1 : 0;
    ext->cell_data[cell][0] = format.format_byte;
    refr_size(table);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movw %dx, %cx
movw %si, %dx
movq %rdi, -0x8(%rbp)
movw %dx, -0xa(%rbp)
movw %cx, -0xc(%rbp)
andb $0x1, %al
movb %al, -0xd(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b210
movq -0x8(%rbp), %rsi
leaq 0x4cef3(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b20e
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b23c
movzwl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b241
jmp 0x1b2fe
movzwl -0xa(%rbp), %eax
movq -0x18(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0xc(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b2ab
movl $0x2, %edi
callq 0x44d20
movq %rax, %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, (%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb $0x0, 0x1(%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x1d(%rbp)
movb -0xd(%rbp), %dl
xorl %eax, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movb %al, %cl
movb -0x1d(%rbp), %al
andb $0x1, %cl
shlb $0x2, %cl
andb $-0x5, %al
orb %cl, %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %cl
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x1c(%rbp), %edx
movq (%rax,%rdx,8), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rdi
callq 0x1acb0
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_table.c
// Function: lv_table_get_cell_value
const char * lv_table_get_cell_value(lv_obj_t * table, uint16_t row, uint16_t col)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_value: invalid row or column");
        return "";
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL) return "";

    return &ext->cell_data[cell][1]; /*Skip the format byte*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b349
movq -0x10(%rbp), %rsi
leaq 0x4cdba(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b347
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b375
movzwl -0x14(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b382
leaq 0x50d99(%rip), %rax     # 0x6c115
movq %rax, -0x8(%rbp)
jmp 0x1b3cf
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b3b8
leaq 0x50d63(%rip), %rax     # 0x6c115
movq %rax, -0x8(%rbp)
jmp 0x1b3cf
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
movq (%rax,%rcx,8), %rax
addq $0x1, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_get_col_width
lv_coord_t lv_table_get_col_width(lv_obj_t * table, uint16_t col_id)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    if(col_id >= LV_TABLE_COL_MAX) {
        LV_LOG_WARN("lv_table_set_col_width: too big 'col_id'. Must be < LV_TABLE_COL_MAX.");
        return 0;
    }

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    return ext->col_w[col_id];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movw %si, %ax
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b4b2
movq -0x10(%rbp), %rsi
leaq 0x4cc51(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b4b0
movzwl -0x12(%rbp), %eax
cmpl $0xc, %eax
jl 0x1b4c3
movw $0x0, -0x2(%rbp)
jmp 0x1b4e1
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movzwl -0x12(%rbp), %ecx
movw 0x30(%rax,%rcx,2), %ax
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
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_table.c
// Function: lv_table_get_cell_align
lv_label_align_t lv_table_get_cell_align(lv_obj_t * table, uint16_t row, uint16_t col)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_set_cell_align: invalid row or column");
        return LV_LABEL_ALIGN_LEFT; /*Just return with something*/
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL)
        return LV_LABEL_ALIGN_LEFT; /*Just return with something*/
    else {
        lv_table_cell_format_t format;
        format.format_byte = ext->cell_data[cell][0];
        return format.s.align;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b529
movq -0x10(%rbp), %rsi
leaq 0x4cbda(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b527
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b555
movzwl -0x14(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b55b
movb $0x0, -0x1(%rbp)
jmp 0x1b5a6
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b58a
movb $0x0, -0x1(%rbp)
jmp 0x1b5a6
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
andb $0x3, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_get_cell_type
lv_label_align_t lv_table_get_cell_type(lv_obj_t * table, uint16_t row, uint16_t col)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_get_cell_type: invalid row or column");
        return 1; /*Just return with something*/
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL)
        return 1; /*Just return with something*/
    else {
        lv_table_cell_format_t format;
        format.format_byte = ext->cell_data[cell][0];
        return format.s.type + 1; /*0,1,2,3 is stored but user sees 1,2,3,4*/
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b5e9
movq -0x10(%rbp), %rsi
leaq 0x4cb1a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b5e7
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b615
movzwl -0x14(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b61b
movb $0x1, -0x1(%rbp)
jmp 0x1b66f
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b64a
movb $0x1, -0x1(%rbp)
jmp 0x1b66f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
shrb $0x3, %al
andb $0x3, %al
movzbl %al, %eax
addl $0x1, %eax
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
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_table.c
// Function: lv_table_get_cell_crop
lv_label_align_t lv_table_get_cell_crop(lv_obj_t * table, uint16_t row, uint16_t col)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_get_cell_crop: invalid row or column");
        return false; /*Just return with something*/
    }
    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL)
        return false; /*Just return with something*/
    else {
        lv_table_cell_format_t format;
        format.format_byte = ext->cell_data[cell][0];
        return format.s.crop;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b6b9
movq -0x10(%rbp), %rsi
leaq 0x4ca4a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b6b7
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b6e5
movzwl -0x14(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b6eb
movb $0x0, -0x1(%rbp)
jmp 0x1b739
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b71a
movb $0x0, -0x1(%rbp)
jmp 0x1b739
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
shrb $0x5, %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_get_cell_merge_right
bool lv_table_get_cell_merge_right(lv_obj_t * table, uint16_t row, uint16_t col)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
    if(row >= ext->row_cnt || col >= ext->col_cnt) {
        LV_LOG_WARN("lv_table_get_cell_merge_right: invalid row or column");
        return false;
    }

    uint32_t cell = row * ext->col_cnt + col;

    if(ext->cell_data[cell] == NULL)
        return false;
    else {
        lv_table_cell_format_t format;
        format.format_byte = ext->cell_data[cell][0];
        return format.s.right_merge ? true : false;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movw %si, %cx
movq %rdi, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b789
movq -0x10(%rbp), %rsi
leaq 0x4c97a(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b787
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1b7b5
movzwl -0x14(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jl 0x1b7bb
movb $0x0, -0x1(%rbp)
jmp 0x1b821
movzwl -0x12(%rbp), %eax
movq -0x20(%rbp), %rcx
movzwl (%rcx), %ecx
imull %ecx, %eax
movzwl -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
cmpq $0x0, (%rax,%rcx,8)
jne 0x1b7ea
movb $0x0, -0x1(%rbp)
jmp 0x1b821
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x24(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movb (%rax), %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_table.c
// Function: lv_table_get_style
const lv_style_t * lv_table_get_style(const lv_obj_t * table, lv_table_style_t type)
{
    LV_ASSERT_OBJ(table, LV_OBJX_NAME);

    lv_table_ext_t * ext     = lv_obj_get_ext_attr(table);
    const lv_style_t * style = NULL;

    switch(type) {
        case LV_TABLE_STYLE_BG: style = lv_obj_get_style(table); break;
        case LV_TABLE_STYLE_CELL1: style = ext->cell_style[0]; break;
        case LV_TABLE_STYLE_CELL2: style = ext->cell_style[1]; break;
        case LV_TABLE_STYLE_CELL3: style = ext->cell_style[2]; break;
        case LV_TABLE_STYLE_CELL4: style = ext->cell_style[3]; break;
        default: return NULL;
    }

    return style;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1b861
movq -0x10(%rbp), %rsi
leaq 0x4c8a2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1b85f
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movzbl -0x11(%rbp), %eax
movq %rax, -0x30(%rbp)
subq $0x4, %rax
ja 0x1b8df
movq -0x30(%rbp), %rax
leaq 0x4cba5(%rip), %rcx     # 0x68434
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
callq 0xa080
movq %rax, -0x28(%rbp)
jmp 0x1b8e9
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x1b8e9
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x1b8e9
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x1b8e9
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x1b8e9
movq $0x0, -0x8(%rbp)
jmp 0x1b8f1
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%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_tabview.c
// Function: tab_btnm_event_cb
static void tab_btnm_event_cb(lv_obj_t * tab_btnm, lv_event_t event)
{
    if(event != LV_EVENT_CLICKED) return;

    uint16_t btn_id = lv_btnm_get_active_btn(tab_btnm);
    if(btn_id == LV_BTNM_BTN_NONE) return;

    lv_btnm_clear_btn_ctrl_all(tab_btnm, LV_BTNM_CTRL_TGL_STATE);
    lv_btnm_set_btn_ctrl(tab_btnm, btn_id, LV_BTNM_CTRL_TGL_STATE);

    lv_obj_t * tabview = lv_obj_get_parent(tab_btnm);

    uint32_t id_prev = lv_tabview_get_tab_act(tabview);
    lv_tabview_set_tab_act(tabview, btn_id, LV_ANIM_ON);
    uint32_t id_new = lv_tabview_get_tab_act(tabview);

    lv_res_t res = LV_RES_OK;
    if(id_prev != id_new) res = lv_event_send(tabview, LV_EVENT_VALUE_CHANGED, &id_new);

    if(res != LV_RES_OK) return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x6, %eax
je 0x1c5a0
jmp 0x1c646
movq -0x8(%rbp), %rdi
callq 0x37c40
movw %ax, -0xc(%rbp)
movzwl -0xc(%rbp), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x1c5bd
jmp 0x1c646
movq -0x8(%rbp), %rdi
movl $0x80, %esi
callq 0x37a00
movq -0x8(%rbp), %rdi
movl $0x80, %edx
movzwl -0xc(%rbp), %esi
callq 0x377b0
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1e280
movzwl %ax, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
movl $0x1, %edx
movzwl -0xc(%rbp), %esi
callq 0x1da50
movq -0x18(%rbp), %rdi
callq 0x1e280
movzwl %ax, %eax
movl %eax, -0x20(%rbp)
movb $0x1, -0x21(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x1c63b
movq -0x18(%rbp), %rdi
movl $0xe, %esi
leaq -0x20(%rbp), %rdx
callq 0x7990
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x1c646
jmp 0x1c646
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tabview.c
// Function: lv_tabview_get_tab
lv_obj_t * lv_tabview_get_tab(const lv_obj_t * tabview, uint16_t id)
{
    LV_ASSERT_OBJ(tabview, LV_OBJX_NAME);

    lv_tabview_ext_t * ext = lv_obj_get_ext_attr(tabview);
    uint16_t i             = 0;
    lv_obj_t * page        = lv_obj_get_child_back(ext->content, NULL);

    while(page != NULL && i != id) {
        i++;
        page = lv_obj_get_child_back(ext->content, page);
    }

    if(i == id) return page;

    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movw %si, %ax
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1cde2
movq -0x10(%rbp), %rsi
leaq 0x4b321(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1cde0
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movw $0x0, -0x22(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9e20
movq %rax, -0x30(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x30(%rbp)
movb %al, -0x31(%rbp)
je 0x1ce26
movzwl -0x22(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x1ce2f
jmp 0x1ce52
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x30(%rbp), %rsi
callq 0x9e20
movq %rax, -0x30(%rbp)
jmp 0x1ce0a
movzwl -0x22(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jne 0x1ce68
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1ce70
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tabview.c
// Function: tabpage_signal
static lv_res_t tabpage_signal(lv_obj_t * tab_page, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = page_signal(tab_page, sign, param);
    if(res != LV_RES_OK) return res;
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, "");

    lv_obj_t * cont    = lv_obj_get_parent(tab_page);
    lv_obj_t * tabview = lv_obj_get_parent(cont);

    if(lv_tabview_get_sliding(tabview) == false) return res;

    if(sign == LV_SIGNAL_PRESSED) {
        tabpage_pressed_handler(tabview, tab_page);
    } else if(sign == LV_SIGNAL_PRESSING) {
        tabpage_pressing_handler(tabview, tab_page);
    } else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) {
        tabpage_press_lost_handler(tabview, tab_page);
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x6c51b(%rip), %rax     # 0x89408
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x1cf14
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1cfc3
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x1cf35
movq -0x20(%rbp), %rdi
leaq 0x4f1ed(%rip), %rsi     # 0x6c115
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x1cfc3
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x71b0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x1e320
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1cf6a
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1cfc3
movzbl -0x11(%rbp), %eax
cmpl $0x8, %eax
jne 0x1cf82
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e470
jmp 0x1cfbd
movzbl -0x11(%rbp), %eax
cmpl $0x9, %eax
jne 0x1cf9a
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e4b0
jmp 0x1cfbb
movzbl -0x11(%rbp), %eax
cmpl $0xb, %eax
je 0x1cfac
movzbl -0x11(%rbp), %eax
cmpl $0xa, %eax
jne 0x1cfb9
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e810
jmp 0x1cfbb
jmp 0x1cfbd
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tabview.c
// Function: tabpage_scrl_signal
static lv_res_t tabpage_scrl_signal(lv_obj_t * tab_scrl, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = page_scrl_signal(tab_scrl, sign, param);
    if(res != LV_RES_OK) return res;
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, "");

    lv_obj_t * tab_page = lv_obj_get_parent(tab_scrl);
    lv_obj_t * cont     = lv_obj_get_parent(tab_page);
    lv_obj_t * tabview  = lv_obj_get_parent(cont);

    if(lv_tabview_get_sliding(tabview) == false) return res;

    if(sign == LV_SIGNAL_PRESSED) {
        tabpage_pressed_handler(tabview, tab_page);
    } else if(sign == LV_SIGNAL_PRESSING) {
        tabpage_pressing_handler(tabview, tab_page);
    } else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) {
        tabpage_press_lost_handler(tabview, tab_page);
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x6c423(%rip), %rax     # 0x89410
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x1d014
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1d0d0
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x1d035
movq -0x20(%rbp), %rdi
leaq 0x4f0ed(%rip), %rsi     # 0x6c115
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x1d0d0
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x71b0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x71b0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0x1e320
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1d077
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1d0d0
movzbl -0x11(%rbp), %eax
cmpl $0x8, %eax
jne 0x1d08f
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x1e470
jmp 0x1d0ca
movzbl -0x11(%rbp), %eax
cmpl $0x9, %eax
jne 0x1d0a7
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x1e4b0
jmp 0x1d0c8
movzbl -0x11(%rbp), %eax
cmpl $0xb, %eax
je 0x1d0b9
movzbl -0x11(%rbp), %eax
cmpl $0xa, %eax
jne 0x1d0c6
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x1e810
jmp 0x1d0c8
jmp 0x1d0ca
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tabview.c
// Function: lv_tabview_get_style
const lv_style_t * lv_tabview_get_style(const lv_obj_t * tabview, lv_tabview_style_t type)
{
    LV_ASSERT_OBJ(tabview, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    lv_tabview_ext_t * ext   = lv_obj_get_ext_attr(tabview);

    switch(type) {
        case LV_TABVIEW_STYLE_BG: style = lv_obj_get_style(tabview); break;
        case LV_TABVIEW_STYLE_BTN_BG: style = lv_btnm_get_style(ext->btns, LV_BTNM_STYLE_BG); break;
        case LV_TABVIEW_STYLE_BTN_REL: style = lv_btnm_get_style(ext->btns, LV_BTNM_STYLE_BTN_REL); break;
        case LV_TABVIEW_STYLE_BTN_PR: style = lv_btnm_get_style(ext->btns, LV_BTNM_STYLE_BTN_PR); break;
        case LV_TABVIEW_STYLE_BTN_TGL_REL: style = lv_btnm_get_style(ext->btns, LV_BTNM_STYLE_BTN_TGL_REL); break;
        case LV_TABVIEW_STYLE_BTN_TGL_PR: style = lv_btnm_get_style(ext->btns, LV_BTNM_STYLE_BTN_TGL_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 0x1e001
movq -0x8(%rbp), %rsi
leaq 0x4a102(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1dfff
movq $0x0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x6, %rax
ja 0x1e0bb
movq -0x28(%rbp), %rax
leaq 0x4a45d(%rip), %rcx     # 0x68490
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
xorl %esi, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x2, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x3, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x4, %esi
callq 0x37530
movq %rax, -0x18(%rbp)
jmp 0x1e0c3
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tabview.c
// Function: lv_tabview_set_btns_pos
void lv_tabview_set_btns_pos(lv_obj_t * tabview, lv_tabview_btns_pos_t btns_pos)
{
    LV_ASSERT_OBJ(tabview, LV_OBJX_NAME);

    lv_tabview_ext_t * ext = lv_obj_get_ext_attr(tabview);

    ext->btns_pos = btns_pos;
    tabview_realign(tabview);
}

// 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 0x1e1d1
movq -0x8(%rbp), %rsi
leaq 0x49f32(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1e1cf
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x2a(%rax), %cl
andb $0x3, %dl
shlb $0x5, %dl
andb $-0x61, %cl
orb %dl, %cl
movb %cl, 0x2a(%rax)
movq -0x8(%rbp), %rdi
callq 0x1d0e0
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_tabview.c
// Function: lv_tabview_set_btns_hidden
void lv_tabview_set_btns_hidden(lv_obj_t * tabview, bool en)
{
    LV_ASSERT_OBJ(tabview, LV_OBJX_NAME);

    lv_tabview_ext_t * ext = lv_obj_get_ext_attr(tabview);

    ext->btns_hide = en;
    tabview_realign(tabview);
}

// 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 0x1e243
movq -0x8(%rbp), %rsi
leaq 0x49ec0(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1e241
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movb -0x9(%rbp), %dl
andb $0x1, %dl
movq -0x18(%rbp), %rax
movb 0x2a(%rax), %cl
andb $0x1, %dl
shlb $0x4, %dl
andb $-0x11, %cl
orb %dl, %cl
movb %cl, 0x2a(%rax)
movq -0x8(%rbp), %rdi
callq 0x1d0e0
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_tileview.c
// Function: lv_tileview_signal
static lv_res_t lv_tileview_signal(lv_obj_t * tileview, lv_signal_t sign, void * param)
{
    lv_res_t res;

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

    if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x6a6db(%rip), %rax     # 0x89418
movq -0x10(%rbp), %rdi
movb -0x11(%rbp), %cl
movq -0x20(%rbp), %rdx
movzbl %cl, %esi
callq *%rax
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x1ed61
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x1ed90
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x1ed7f
movq -0x20(%rbp), %rdi
leaq 0x49742(%rip), %rsi     # 0x684b7
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x1ed90
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x1ed8a
jmp 0x1ed8a
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tileview.c
// Function: tileview_scrl_event_cb
static void tileview_scrl_event_cb(lv_obj_t * scrl, lv_event_t event)
{
    lv_obj_t * tileview = lv_obj_get_parent(scrl);

    /*Initialize some variables on PRESS*/
    if(event == LV_EVENT_PRESSED) {
        lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
        ext->drag_hor           = 0;
        ext->drag_ver           = 0;
        set_valid_drag_dirs(tileview);
    }
    /*Animate the tabview to the correct location on RELEASE*/
    else if(event == LV_EVENT_PRESS_LOST || event == LV_EVENT_RELEASED) {
        /* If the element was dragged and it moved the tileview finish the drag manually to
         * let the tileview to finish the move.*/
        lv_indev_t * indev      = lv_indev_get_act();
        lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
        if(lv_indev_is_dragging(indev) && (ext->drag_hor || ext->drag_ver)) {
            indev->proc.types.pointer.drag_in_prog = 0;
        }

        drag_end_handler(tileview);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
callq 0x71b0
movq %rax, -0x18(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x1f500
movq -0x18(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movb 0x60(%rax), %cl
andb $-0x11, %cl
orb $0x0, %cl
movb %cl, 0x60(%rax)
movq -0x20(%rbp), %rax
movb 0x60(%rax), %cl
andb $-0x21, %cl
orb $0x0, %cl
movb %cl, 0x60(%rax)
movq -0x18(%rbp), %rdi
callq 0x1fa80
jmp 0x1f57a
movzbl -0x9(%rbp), %eax
cmpl $0x2, %eax
je 0x1f512
movzbl -0x9(%rbp), %eax
cmpl $0x7, %eax
jne 0x1f578
callq 0x4b70
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0x4dc0
testb $0x1, %al
jne 0x1f537
jmp 0x1f56f
movq -0x30(%rbp), %rax
movb 0x60(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1f55f
movq -0x30(%rbp), %rax
movb 0x60(%rax), %al
shrb $0x5, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x1f56f
movq -0x28(%rbp), %rax
movb 0x68(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x68(%rax)
movq -0x18(%rbp), %rdi
callq 0x1fc60
jmp 0x1f57a
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_tileview.c
// Function: lv_tileview_add_element
void lv_tileview_add_element(lv_obj_t * tileview, lv_obj_t * element)
{
    LV_ASSERT_OBJ(tileview, LV_OBJX_NAME);
    LV_ASSERT_NULL(tileview);

    /* Let the objects event to propagate to the scrollable part of the tileview.
     * It is required the handle dargging of the tileview with the element.*/
    element->parent_event = 1;
    lv_obj_set_drag_parent(element, true);

    /* When adding a new element the coordinates may shift.
     * For example y=1 can become y=1 if an element is added to the top.
     * So be sure the current tile is correctly shown*/
    lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
    lv_tileview_set_tile_act(tileview, ext->act_id.x, ext->act_id.y, false);
}

// 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 0x1f5af
movq -0x8(%rbp), %rsi
leaq 0x48b54(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1f5ad
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1f5ce
movq -0x8(%rbp), %rsi
leaq 0x48b35(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1f5cc
movq -0x10(%rbp), %rax
movw 0x58(%rax), %cx
andw $0xff7f, %cx            # imm = 0xFF7F
orw $0x80, %cx
movw %cx, 0x58(%rax)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x9740
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movw 0x5c(%rax), %dx
movq -0x18(%rbp), %rax
xorl %ecx, %ecx
movswl %dx, %esi
movswl 0x5e(%rax), %edx
callq 0x1f630
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_tileview.c
// Function: lv_tileview_set_valid_positions
void lv_tileview_set_valid_positions(lv_obj_t * tileview, const lv_point_t valid_pos[], uint16_t valid_pos_cnt)
{
    LV_ASSERT_OBJ(tileview, LV_OBJX_NAME);
    LV_ASSERT_NULL(valid_pos);

    lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
    ext->valid_pos          = valid_pos;
    ext->valid_pos_cnt      = valid_pos_cnt;

    /*If valid pos. is selected do nothing*/
    uint16_t i;
    for(i = 0; i < valid_pos_cnt; i++) {
        if(valid_pos[i].x == ext->act_id.x && valid_pos[i].y == ext->act_id.y) {
            return;
        }
    }

    /*Set a valid position if now an invalid is selected*/
    if(valid_pos_cnt > 0) {
        lv_tileview_set_tile_act(tileview, valid_pos[0].x, valid_pos[0].y, LV_ANIM_OFF);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movw %dx, %ax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1f8a6
movq -0x8(%rbp), %rsi
leaq 0x4885d(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1f8a4
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x1f8c5
movq -0x10(%rbp), %rsi
leaq 0x4883e(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1f8c3
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x50(%rax)
movw -0x12(%rbp), %cx
movq -0x20(%rbp), %rax
movw %cx, 0x58(%rax)
movw $0x0, -0x22(%rbp)
movzwl -0x22(%rbp), %eax
movzwl -0x12(%rbp), %ecx
cmpl %ecx, %eax
jge 0x1f93f
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl (%rax,%rcx,4), %eax
movq -0x20(%rbp), %rcx
movswl 0x5c(%rcx), %ecx
cmpl %ecx, %eax
jne 0x1f92f
movq -0x10(%rbp), %rax
movzwl -0x22(%rbp), %ecx
movswl 0x2(%rax,%rcx,4), %eax
movq -0x20(%rbp), %rcx
movswl 0x5e(%rcx), %ecx
cmpl %ecx, %eax
jne 0x1f92f
jmp 0x1f965
jmp 0x1f931
movw -0x22(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x22(%rbp)
jmp 0x1f8f0
movzwl -0x12(%rbp), %eax
cmpl $0x0, %eax
jle 0x1f965
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movw (%rax), %dx
movq -0x10(%rbp), %rax
xorl %ecx, %ecx
movswl %dx, %esi
movswl 0x2(%rax), %edx
callq 0x1f630
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_tileview.c
// Function: lv_tileview_get_style
const lv_style_t * lv_tileview_get_style(const lv_obj_t * tileview, lv_tileview_style_t type)
{
    LV_ASSERT_OBJ(tileview, LV_OBJX_NAME);

    const lv_style_t * style = NULL;
    switch(type) {
        case LV_TILEVIEW_STYLE_MAIN: style = lv_obj_get_style(tileview); break;
        default: style = NULL;
    }

    return style;
}

// 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 0x1fa01
movq -0x8(%rbp), %rsi
leaq 0x48702(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x1f9ff
movq $0x0, -0x18(%rbp)
movb -0x9(%rbp), %al
testb %al, %al
jne 0x1fa21
jmp 0x1fa12
movq -0x8(%rbp), %rdi
callq 0xa080
movq %rax, -0x18(%rbp)
jmp 0x1fa29
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btn.c
// Function: lv_btn_set_style
void lv_btn_set_style(lv_obj_t * btn, lv_btn_style_t type, const lv_style_t * style)
{
    LV_ASSERT_OBJ(btn, LV_OBJX_NAME);

    lv_btn_ext_t * ext = lv_obj_get_ext_attr(btn);

    switch(type) {
        case LV_BTN_STYLE_REL: ext->styles[LV_BTN_STATE_REL] = style; break;
        case LV_BTN_STYLE_PR: ext->styles[LV_BTN_STATE_PR] = style; break;
        case LV_BTN_STYLE_TGL_REL: ext->styles[LV_BTN_STATE_TGL_REL] = style; break;
        case LV_BTN_STYLE_TGL_PR: ext->styles[LV_BTN_STATE_TGL_PR] = style; break;
        case LV_BTN_STYLE_INA: ext->styles[LV_BTN_STATE_INA] = style; break;
    }

    /*Refresh the object with the new style*/
    lv_obj_set_style(btn, ext->styles[ext->state]);
}

// 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 0x20615
movq -0x8(%rbp), %rsi
leaq 0x47aee(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x20613
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x20(%rbp)
movzbl -0x9(%rbp), %eax
movq %rax, -0x28(%rbp)
subq $0x4, %rax
ja 0x20688
movq -0x28(%rbp), %rax
leaq 0x47e89(%rip), %rcx     # 0x684c4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x20688
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x20688
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x20688
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x20688
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq -0x20(%rbp), %rcx
movb 0x30(%rcx), %cl
andb $0x7, %cl
movzbl %cl, %ecx
movq 0x8(%rax,%rcx,8), %rsi
callq 0x9150
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_btn.c
// Function: lv_btn_set_state
void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state)
{
    LV_ASSERT_OBJ(btn, LV_OBJX_NAME);

    lv_btn_ext_t * ext = lv_obj_get_ext_attr(btn);
    if(ext->state != state) {
        ext->state = state;
        lv_obj_set_style(btn, ext->styles[state]);
    }
}

// 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 0x20761
movq -0x8(%rbp), %rsi
leaq 0x479a2(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x2075f
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movb 0x30(%rax), %al
andb $0x7, %al
movzbl %al, %eax
movzbl -0x9(%rbp), %ecx
cmpl %ecx, %eax
je 0x207ad
movb -0x9(%rbp), %dl
movq -0x18(%rbp), %rax
movb 0x30(%rax), %cl
andb $0x7, %dl
andb $-0x8, %cl
orb %dl, %cl
movb %cl, 0x30(%rax)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rax
movzbl -0x9(%rbp), %ecx
movq 0x8(%rax,%rcx,8), %rsi
callq 0x9150
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)