// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_draw/lv_draw_rect.c
// Function: lv_draw_shadow_full_straight
static void lv_draw_shadow_full_straight(const lv_area_t * coords, const lv_area_t * mask, const lv_style_t * style,
                                         const lv_opa_t * map)
{
    bool aa           = lv_disp_get_antialiasing(lv_refr_get_disp_refreshing());
    lv_coord_t radius = style->body.radius;
    lv_coord_t swidth = style->body.shadow.width;
    lv_coord_t width  = lv_area_get_width(coords);
    lv_coord_t height = lv_area_get_height(coords);

    radius = lv_draw_cont_radius_corr(radius, width, height);
    radius += aa;

    lv_area_t right_area;
    right_area.x1 = coords->x2 + 1 - aa;
    right_area.y1 = coords->y1 + radius + aa;
    right_area.x2 = right_area.x1;
    right_area.y2 = coords->y2 - radius - aa;

    lv_area_t left_area;
    left_area.x1 = coords->x1 - 1 + aa;
    left_area.y1 = coords->y1 + radius + aa;
    left_area.x2 = left_area.x1;
    left_area.y2 = coords->y2 - radius - aa;

    lv_area_t top_area;
    top_area.x1 = coords->x1 + radius + aa;
    top_area.y1 = coords->y1 - 1 + aa;
    top_area.x2 = coords->x2 - radius - aa;
    top_area.y2 = top_area.y1;

    lv_area_t bottom_area;
    bottom_area.x1 = coords->x1 + radius + aa;
    bottom_area.y1 = coords->y2 + 1 - aa;
    bottom_area.x2 = coords->x2 - radius - aa;
    bottom_area.y2 = bottom_area.y1;

    lv_opa_t opa_act;
    int16_t d;
    for(d = 1 /*+ LV_ANTIALIAS*/; d <= swidth /* - LV_ANTIALIAS*/; d++) {
        opa_act = map[d];

        lv_draw_fill(&right_area, mask, style->body.shadow.color, opa_act);
        right_area.x1++;
        right_area.x2++;

        lv_draw_fill(&left_area, mask, style->body.shadow.color, opa_act);
        left_area.x1--;
        left_area.x2--;

        lv_draw_fill(&top_area, mask, style->body.shadow.color, opa_act);
        top_area.y1--;
        top_area.y2--;

        lv_draw_fill(&bottom_area, mask, style->body.shadow.color, opa_act);
        bottom_area.y1++;
        bottom_area.y2++;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
callq 0xafe0
movq %rax, %rdi
callq 0xdb00
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x18(%rbp), %rax
movw 0x6(%rax), %ax
movw %ax, -0x24(%rbp)
movq -0x18(%rbp), %rax
movw 0x12(%rax), %ax
movw %ax, -0x26(%rbp)
movq -0x8(%rbp), %rdi
callq 0x5ab30
movw %ax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x5ab10
movw %ax, -0x2a(%rbp)
movw -0x24(%rbp), %cx
movw -0x28(%rbp), %ax
movzwl %cx, %edi
movswl %ax, %esi
movswl -0x2a(%rbp), %edx
callq 0x5e0e0
movw %ax, -0x24(%rbp)
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movswl -0x24(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x32(%rbp)
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %eax
movswl -0x24(%rbp), %ecx
addl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x30(%rbp)
movw -0x32(%rbp), %ax
movw %ax, -0x2e(%rbp)
movq -0x8(%rbp), %rax
movswl 0x6(%rax), %eax
movswl -0x24(%rbp), %ecx
subl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movswl (%rax), %eax
subl $0x1, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x3a(%rbp)
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %eax
movswl -0x24(%rbp), %ecx
addl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x38(%rbp)
movw -0x3a(%rbp), %ax
movw %ax, -0x36(%rbp)
movq -0x8(%rbp), %rax
movswl 0x6(%rax), %eax
movswl -0x24(%rbp), %ecx
subl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x34(%rbp)
movq -0x8(%rbp), %rax
movswl (%rax), %eax
movswl -0x24(%rbp), %ecx
addl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x42(%rbp)
movq -0x8(%rbp), %rax
movswl 0x2(%rax), %eax
subl $0x1, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movswl 0x4(%rax), %eax
movswl -0x24(%rbp), %ecx
subl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x3e(%rbp)
movw -0x40(%rbp), %ax
movw %ax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movswl (%rax), %eax
movswl -0x24(%rbp), %ecx
addl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
movw %ax, -0x4a(%rbp)
movq -0x8(%rbp), %rax
movswl 0x6(%rax), %eax
addl $0x1, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movswl 0x4(%rax), %eax
movswl -0x24(%rbp), %ecx
subl %ecx, %eax
movb -0x21(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movw %ax, -0x46(%rbp)
movw -0x48(%rbp), %ax
movw %ax, -0x44(%rbp)
movw $0x1, -0x4e(%rbp)
movswl -0x4e(%rbp), %eax
movswl -0x26(%rbp), %ecx
cmpl %ecx, %eax
jg 0x5f208
movq -0x20(%rbp), %rax
movswq -0x4e(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x4b(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
movb -0x4b(%rbp), %al
leaq -0x32(%rbp), %rdi
movzwl 0x10(%rcx), %edx
movzbl %al, %ecx
callq 0x58ea0
movw -0x32(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x32(%rbp)
movw -0x2e(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x2e(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
movb -0x4b(%rbp), %al
leaq -0x3a(%rbp), %rdi
movzwl 0x10(%rcx), %edx
movzbl %al, %ecx
callq 0x58ea0
movw -0x3a(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x3a(%rbp)
movw -0x36(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x36(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
movb -0x4b(%rbp), %al
leaq -0x42(%rbp), %rdi
movzwl 0x10(%rcx), %edx
movzbl %al, %ecx
callq 0x58ea0
movw -0x40(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x40(%rbp)
movw -0x3c(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x3c(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
movb -0x4b(%rbp), %al
leaq -0x4a(%rbp), %rdi
movzwl 0x10(%rcx), %edx
movzbl %al, %ecx
callq 0x58ea0
movw -0x48(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x48(%rbp)
movw -0x44(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x44(%rbp)
movw -0x4e(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x4e(%rbp)
jmp 0x5f10c
addq $0x50, %rsp
popq %rbp
retq
nop