// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_draw/lv_draw_arc.c
// Function: lv_draw_arc
void lv_draw_arc(lv_coord_t center_x, lv_coord_t center_y, uint16_t radius, const lv_area_t * mask,
                 uint16_t start_angle, uint16_t end_angle, const lv_style_t * style, lv_opa_t opa_scale)
{
    lv_coord_t thickness = style->line.width;
    if(thickness > radius) thickness = radius;

#if LV_ANTIALIAS
    thickness--;
    radius--;
#endif

    lv_coord_t r_out = radius;
    lv_coord_t r_in  = r_out - thickness;
    int16_t deg_base;
    int16_t deg;
    lv_coord_t x_start[4];
    lv_coord_t x_end[4];

    lv_color_t color = style->line.color;
    lv_opa_t opa = opa_scale == LV_OPA_COVER ? style->body.opa : (uint16_t)((uint16_t)style->body.opa * opa_scale) >> 8;

    bool (*deg_test)(uint16_t, uint16_t, uint16_t);
    if(start_angle <= end_angle)
        deg_test = deg_test_norm;
    else
        deg_test = deg_test_inv;

    int middle_r_out = r_out;
#if !LV_ANTIALIAS
    thickness--;
    middle_r_out = r_out - 1;
#endif
    if(deg_test(270, start_angle, end_angle))
        hor_line(center_x - middle_r_out, center_y, mask, thickness, color, opa); /*Left Middle*/
    if(deg_test(90, start_angle, end_angle))
        hor_line(center_x + r_in, center_y, mask, thickness, color, opa); /*Right Middle*/
    if(deg_test(180, start_angle, end_angle))
        ver_line(center_x, center_y - middle_r_out, mask, thickness, color, opa); /*Top Middle*/
    if(deg_test(0, start_angle, end_angle))
        ver_line(center_x, center_y + r_in, mask, thickness, color, opa); /*Bottom middle*/

    uint32_t r_out_sqr = r_out * r_out;
    uint32_t r_in_sqr  = r_in * r_in;
#if LV_ANTIALIAS
    uint32_t r_out_aa_sqr = (r_out + 1) * (r_out + 1);
    uint32_t r_in_aa_sqr  = (r_in - 1) * (r_in - 1);
#endif
    int16_t xi;
    int16_t yi;
    for(yi = -r_out; yi < 0; yi++) {
        x_start[0] = LV_COORD_MIN;
        x_start[1] = LV_COORD_MIN;
        x_start[2] = LV_COORD_MIN;
        x_start[3] = LV_COORD_MIN;
        x_end[0]   = LV_COORD_MIN;
        x_end[1]   = LV_COORD_MIN;
        x_end[2]   = LV_COORD_MIN;
        x_end[3]   = LV_COORD_MIN;
        int xe     = 0;
        for(xi = -r_out; xi < 0; xi++) {

            uint32_t r_act_sqr = xi * xi + yi * yi;
#if LV_ANTIALIAS
            if(r_act_sqr > r_out_aa_sqr) {
                continue;
            }
#else
            if(r_act_sqr > r_out_sqr) continue;
#endif

            deg_base = lv_atan2(xi, yi) - 180;

#if LV_ANTIALIAS
            int opa2 = -1;
            if(r_act_sqr > r_out_sqr) {
                opa2 = LV_OPA_100 * (r_out + 1) - lv_sqrt(LV_OPA_100 * LV_OPA_100 * r_act_sqr);
                if(opa2 < LV_OPA_0)
                    opa2 = LV_OPA_0;
                else if(opa2 > LV_OPA_100)
                    opa2 = LV_OPA_100;
            } else if(r_act_sqr < r_in_sqr) {
                if(xe == 0) xe = xi;
                opa2 = lv_sqrt(LV_OPA_100 * LV_OPA_100 * r_act_sqr) - LV_OPA_100 * (r_in - 1);
                if(opa2 < LV_OPA_0)
                    opa2 = LV_OPA_0;
                else if(opa2 > LV_OPA_100)
                    opa2 = LV_OPA_100;
                if(r_act_sqr < r_in_aa_sqr)
                    break; /*No need to continue the iteration in x once we found the inner edge of the
                              arc*/
            }
            if(opa2 != -1) {
                if(deg_test(180 + deg_base, start_angle, end_angle)) {
                    lv_draw_px(center_x + xi, center_y + yi, mask, color, opa2);
                }
                if(deg_test(360 - deg_base, start_angle, end_angle)) {
                    lv_draw_px(center_x + xi, center_y - yi, mask, color, opa2);
                }
                if(deg_test(180 - deg_base, start_angle, end_angle)) {
                    lv_draw_px(center_x - xi, center_y + yi, mask, color, opa2);
                }
                if(deg_test(deg_base, start_angle, end_angle)) {
                    lv_draw_px(center_x - xi, center_y - yi, mask, color, opa2);
                }
                continue;
            }
#endif

            deg = 180 + deg_base;
            if(deg_test(deg, start_angle, end_angle)) {
                if(x_start[0] == LV_COORD_MIN) x_start[0] = xi;
            } else if(x_start[0] != LV_COORD_MIN && x_end[0] == LV_COORD_MIN) {
                x_end[0] = xi - 1;
            }

            deg = 360 - deg_base;
            if(deg_test(deg, start_angle, end_angle)) {
                if(x_start[1] == LV_COORD_MIN) x_start[1] = xi;
            } else if(x_start[1] != LV_COORD_MIN && x_end[1] == LV_COORD_MIN) {
                x_end[1] = xi - 1;
            }

            deg = 180 - deg_base;
            if(deg_test(deg, start_angle, end_angle)) {
                if(x_start[2] == LV_COORD_MIN) x_start[2] = xi;
            } else if(x_start[2] != LV_COORD_MIN && x_end[2] == LV_COORD_MIN) {
                x_end[2] = xi - 1;
            }

            deg = deg_base;
            if(deg_test(deg, start_angle, end_angle)) {
                if(x_start[3] == LV_COORD_MIN) x_start[3] = xi;
            } else if(x_start[3] != LV_COORD_MIN && x_end[3] == LV_COORD_MIN) {
                x_end[3] = xi - 1;
            }

            if(r_act_sqr < r_in_sqr) {
                xe = xi;
                break; /*No need to continue the iteration in x once we found the inner edge of the
                          arc*/
            }
        }

        if(x_start[0] != LV_COORD_MIN) {
            if(x_end[0] == LV_COORD_MIN) x_end[0] = xe - 1;
            hor_line(center_x + x_start[0], center_y + yi, mask, x_end[0] - x_start[0], color, opa);
        }

        if(x_start[1] != LV_COORD_MIN) {
            if(x_end[1] == LV_COORD_MIN) x_end[1] = xe - 1;
            hor_line(center_x + x_start[1], center_y - yi, mask, x_end[1] - x_start[1], color, opa);
        }

        if(x_start[2] != LV_COORD_MIN) {
            if(x_end[2] == LV_COORD_MIN) x_end[2] = xe - 1;
            hor_line(center_x - x_end[2], center_y + yi, mask, LV_MATH_ABS(x_end[2] - x_start[2]), color, opa);
        }

        if(x_start[3] != LV_COORD_MIN) {
            if(x_end[3] == LV_COORD_MIN) x_end[3] = xe - 1;
            hor_line(center_x - x_end[3], center_y - yi, mask, LV_MATH_ABS(x_end[3] - x_start[3]), color, opa);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movl %r8d, -0x7c(%rbp)
movq %rcx, %rax
movl -0x7c(%rbp), %ecx
movq %rax, -0x78(%rbp)
movl %edx, %eax
movq -0x78(%rbp), %rdx
movl %eax, -0x6c(%rbp)
movl %esi, %eax
movl -0x6c(%rbp), %esi
movl %eax, -0x68(%rbp)
movl %edi, %r8d
movl -0x68(%rbp), %edi
movw %r9w, %ax
movb 0x18(%rbp), %r9b
movq 0x10(%rbp), %r9
movw %r8w, -0x2(%rbp)
movw %di, -0x4(%rbp)
movw %si, -0x6(%rbp)
movq %rdx, -0x10(%rbp)
movw %cx, -0x12(%rbp)
movw %ax, -0x14(%rbp)
movq 0x10(%rbp), %rax
movw 0x3e(%rax), %ax
movw %ax, -0x16(%rbp)
movswl -0x16(%rbp), %eax
movzwl -0x6(%rbp), %ecx
cmpl %ecx, %eax
jle 0x63545
movw -0x6(%rbp), %ax
movw %ax, -0x16(%rbp)
movw -0x16(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x16(%rbp)
movw -0x6(%rbp), %ax
addw $-0x1, %ax
movw %ax, -0x6(%rbp)
movw -0x6(%rbp), %ax
movw %ax, -0x18(%rbp)
movswl -0x18(%rbp), %eax
movswl -0x16(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0x1a(%rbp)
movq 0x10(%rbp), %rax
movw 0x3c(%rax), %ax
movw %ax, -0x30(%rbp)
movzbl 0x18(%rbp), %eax
cmpl $0xff, %eax
jne 0x63597
movq 0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, -0x80(%rbp)
jmp 0x635b2
movq 0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
movzwl %ax, %eax
movzbl 0x18(%rbp), %ecx
imull %ecx, %eax
movzwl %ax, %eax
sarl $0x8, %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movb %al, -0x31(%rbp)
movzwl -0x12(%rbp), %eax
movzwl -0x14(%rbp), %ecx
cmpl %ecx, %eax
jg 0x635d1
leaq 0x885(%rip), %rax       # 0x63e50
movq %rax, -0x40(%rbp)
jmp 0x635dc
leaq 0x8c8(%rip), %rax       # 0x63ea0
movq %rax, -0x40(%rbp)
movswl -0x18(%rbp), %eax
movl %eax, -0x44(%rbp)
movq -0x40(%rbp), %rax
movw -0x12(%rbp), %cx
movl $0x10e, %edi            # imm = 0x10E
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x635ff
jmp 0x6362f
movswl -0x2(%rbp), %eax
subl -0x44(%rbp), %eax
movw %ax, %di
movw -0x4(%rbp), %si
movq -0x10(%rbp), %rdx
movw -0x16(%rbp), %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
movq -0x40(%rbp), %rax
movw -0x12(%rbp), %cx
movl $0x5a, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x6364b
jmp 0x6367e
movswl -0x2(%rbp), %eax
movswl -0x1a(%rbp), %ecx
addl %ecx, %eax
movw %ax, %di
movw -0x4(%rbp), %si
movq -0x10(%rbp), %rdx
movw -0x16(%rbp), %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
movq -0x40(%rbp), %rax
movw -0x12(%rbp), %cx
movl $0xb4, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x6369a
jmp 0x636ca
movw -0x2(%rbp), %di
movswl -0x4(%rbp), %eax
subl -0x44(%rbp), %eax
movw %ax, %si
movq -0x10(%rbp), %rdx
movw -0x16(%rbp), %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63f60
movq -0x40(%rbp), %rax
movw -0x12(%rbp), %cx
xorl %edi, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x636e3
jmp 0x63716
movw -0x2(%rbp), %di
movswl -0x4(%rbp), %eax
movswl -0x1a(%rbp), %ecx
addl %ecx, %eax
movw %ax, %si
movq -0x10(%rbp), %rdx
movw -0x16(%rbp), %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63f60
movswl -0x18(%rbp), %eax
movswl -0x18(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x48(%rbp)
movswl -0x1a(%rbp), %eax
movswl -0x1a(%rbp), %ecx
imull %ecx, %eax
movl %eax, -0x4c(%rbp)
movswl -0x18(%rbp), %eax
addl $0x1, %eax
movswl -0x18(%rbp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x50(%rbp)
movswl -0x1a(%rbp), %eax
subl $0x1, %eax
movswl -0x1a(%rbp), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x54(%rbp)
movswl -0x18(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movw %ax, -0x58(%rbp)
movswl -0x58(%rbp), %eax
cmpl $0x0, %eax
jge 0x63e43
movw $0x83e8, -0x26(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x24(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x22(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x20(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x2e(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x2c(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x2a(%rbp)    # imm = 0x83E8
movw $0x83e8, -0x28(%rbp)    # imm = 0x83E8
movl $0x0, -0x5c(%rbp)
movswl -0x18(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movw %ax, -0x56(%rbp)
movswl -0x56(%rbp), %eax
cmpl $0x0, %eax
jge 0x63bea
movswl -0x56(%rbp), %eax
movswl -0x56(%rbp), %ecx
imull %ecx, %eax
movswl -0x58(%rbp), %ecx
movswl -0x58(%rbp), %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x50(%rbp), %eax
jbe 0x637eb
jmp 0x63bd9
movswl -0x56(%rbp), %edi
movswl -0x58(%rbp), %esi
callq 0x473d0
movzwl %ax, %eax
subl $0xb4, %eax
movw %ax, -0x1c(%rbp)
movl $0xffffffff, -0x64(%rbp) # imm = 0xFFFFFFFF
movl -0x60(%rbp), %eax
cmpl -0x48(%rbp), %eax
jbe 0x63862
movswl -0x18(%rbp), %eax
addl $0x1, %eax
imull $0xff, %eax, %eax
movl %eax, -0x84(%rbp)
imull $0xfe01, -0x60(%rbp), %edi # imm = 0xFE01
callq 0x47560
movl %eax, %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
cmpl $0x0, -0x64(%rbp)
jge 0x6384e
movl $0x0, -0x64(%rbp)
jmp 0x63860
cmpl $0xff, -0x64(%rbp)
jle 0x6385e
movl $0xff, -0x64(%rbp)
jmp 0x63860
jmp 0x638c7
movl -0x60(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jae 0x638c5
cmpl $0x0, -0x5c(%rbp)
jne 0x63877
movswl -0x56(%rbp), %eax
movl %eax, -0x5c(%rbp)
imull $0xfe01, -0x60(%rbp), %edi # imm = 0xFE01
callq 0x47560
movswl -0x1a(%rbp), %ecx
subl $0x1, %ecx
imull $0xff, %ecx, %ecx
subl %ecx, %eax
movl %eax, -0x64(%rbp)
cmpl $0x0, -0x64(%rbp)
jge 0x638a4
movl $0x0, -0x64(%rbp)
jmp 0x638b6
cmpl $0xff, -0x64(%rbp)
jle 0x638b4
movl $0xff, -0x64(%rbp)
jmp 0x638b6
movl -0x60(%rbp), %eax
cmpl -0x54(%rbp), %eax
jae 0x638c3
jmp 0x63bea
jmp 0x638c5
jmp 0x638c7
cmpl $-0x1, -0x64(%rbp)
je 0x63a3b
movq -0x40(%rbp), %rax
movswl -0x1c(%rbp), %ecx
addl $0xb4, %ecx
movw %cx, %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x638f8
jmp 0x6392c
movswl -0x2(%rbp), %eax
movswl -0x56(%rbp), %ecx
addl %ecx, %eax
movw %ax, %si
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x10(%rbp), %rdx
movl -0x64(%rbp), %eax
movswl %si, %edi
movswl %cx, %esi
movzwl -0x30(%rbp), %ecx
movzbl %al, %r8d
callq 0x58ba0
movq -0x40(%rbp), %rax
movswl -0x1c(%rbp), %edx
movl $0x168, %ecx            # imm = 0x168
subl %edx, %ecx
movw %cx, %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63954
jmp 0x63988
movswl -0x2(%rbp), %eax
movswl -0x56(%rbp), %ecx
addl %ecx, %eax
movw %ax, %si
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x10(%rbp), %rdx
movl -0x64(%rbp), %eax
movswl %si, %edi
movswl %cx, %esi
movzwl -0x30(%rbp), %ecx
movzbl %al, %r8d
callq 0x58ba0
movq -0x40(%rbp), %rax
movswl -0x1c(%rbp), %edx
movl $0xb4, %ecx
subl %edx, %ecx
movw %cx, %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x639b0
jmp 0x639e4
movswl -0x2(%rbp), %eax
movswl -0x56(%rbp), %ecx
subl %ecx, %eax
movw %ax, %si
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x10(%rbp), %rdx
movl -0x64(%rbp), %eax
movswl %si, %edi
movswl %cx, %esi
movzwl -0x30(%rbp), %ecx
movzbl %al, %r8d
callq 0x58ba0
movq -0x40(%rbp), %rax
movw -0x1c(%rbp), %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63a02
jmp 0x63a36
movswl -0x2(%rbp), %eax
movswl -0x56(%rbp), %ecx
subl %ecx, %eax
movw %ax, %si
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x10(%rbp), %rdx
movl -0x64(%rbp), %eax
movswl %si, %edi
movswl %cx, %esi
movzwl -0x30(%rbp), %ecx
movzbl %al, %r8d
callq 0x58ba0
jmp 0x63bd9
movswl -0x1c(%rbp), %eax
addl $0xb4, %eax
movw %ax, -0x1e(%rbp)
movq -0x40(%rbp), %rax
movw -0x1e(%rbp), %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63a66
jmp 0x63a7b
movswl -0x26(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63a79
movw -0x56(%rbp), %ax
movw %ax, -0x26(%rbp)
jmp 0x63a9e
movswl -0x26(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63a9c
movswl -0x2e(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63a9c
movswl -0x56(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2e(%rbp)
jmp 0x63a9e
movswl -0x1c(%rbp), %ecx
movl $0x168, %eax            # imm = 0x168
subl %ecx, %eax
movw %ax, -0x1e(%rbp)
movq -0x40(%rbp), %rax
movw -0x1e(%rbp), %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63acb
jmp 0x63ae0
movswl -0x24(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63ade
movw -0x56(%rbp), %ax
movw %ax, -0x24(%rbp)
jmp 0x63b03
movswl -0x24(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63b01
movswl -0x2c(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63b01
movswl -0x56(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2c(%rbp)
jmp 0x63b03
movswl -0x1c(%rbp), %ecx
movl $0xb4, %eax
subl %ecx, %eax
movw %ax, -0x1e(%rbp)
movq -0x40(%rbp), %rax
movw -0x1e(%rbp), %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63b30
jmp 0x63b45
movswl -0x22(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63b43
movw -0x56(%rbp), %ax
movw %ax, -0x22(%rbp)
jmp 0x63b68
movswl -0x22(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63b66
movswl -0x2a(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63b66
movswl -0x56(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2a(%rbp)
jmp 0x63b68
movw -0x1c(%rbp), %ax
movw %ax, -0x1e(%rbp)
movq -0x40(%rbp), %rax
movw -0x1e(%rbp), %dx
movw -0x12(%rbp), %cx
movzwl %dx, %edi
movzwl %cx, %esi
movzwl -0x14(%rbp), %edx
callq *%rax
testb $0x1, %al
jne 0x63b8e
jmp 0x63ba3
movswl -0x20(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63ba1
movw -0x56(%rbp), %ax
movw %ax, -0x20(%rbp)
jmp 0x63bc6
movswl -0x20(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63bc4
movswl -0x28(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63bc4
movswl -0x56(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x28(%rbp)
jmp 0x63bc6
movl -0x60(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jae 0x63bd7
movswl -0x56(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x63bea
jmp 0x63bd9
movw -0x56(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x56(%rbp)
jmp 0x637b6
movswl -0x26(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63c4f
movswl -0x2e(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63c0a
movl -0x5c(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2e(%rbp)
movswl -0x2(%rbp), %eax
movswl -0x26(%rbp), %ecx
addl %ecx, %eax
movw %ax, %di
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
addl %ecx, %eax
movw %ax, %si
movq -0x10(%rbp), %rdx
movswl -0x2e(%rbp), %eax
movswl -0x26(%rbp), %ecx
subl %ecx, %eax
movw %ax, %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
movswl -0x24(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63cb4
movswl -0x2c(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63c6f
movl -0x5c(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2c(%rbp)
movswl -0x2(%rbp), %eax
movswl -0x24(%rbp), %ecx
addl %ecx, %eax
movw %ax, %di
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
subl %ecx, %eax
movw %ax, %si
movq -0x10(%rbp), %rdx
movswl -0x2c(%rbp), %eax
movswl -0x24(%rbp), %ecx
subl %ecx, %eax
movw %ax, %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
movswl -0x22(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63d72
movswl -0x2a(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63cd8
movl -0x5c(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x2a(%rbp)
movswl -0x2(%rbp), %eax
movswl -0x2a(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0x94(%rbp)
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0x92(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movswl -0x2a(%rbp), %eax
movswl -0x22(%rbp), %ecx
subl %ecx, %eax
cmpl $0x0, %eax
jle 0x63d26
movswl -0x2a(%rbp), %eax
movswl -0x22(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0x98(%rbp)
jmp 0x63d3a
movswl -0x2a(%rbp), %ecx
movswl -0x22(%rbp), %eax
subl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x98(%rbp)
movq -0x90(%rbp), %rdx
movw -0x92(%rbp), %si
movw -0x94(%rbp), %di
movl -0x98(%rbp), %eax
movw %ax, %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
movswl -0x20(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
je 0x63e30
movswl -0x28(%rbp), %eax
cmpl $0xffff83e8, %eax       # imm = 0xFFFF83E8
jne 0x63d96
movl -0x5c(%rbp), %eax
subl $0x1, %eax
movw %ax, -0x28(%rbp)
movswl -0x2(%rbp), %eax
movswl -0x28(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0xa4(%rbp)
movswl -0x4(%rbp), %eax
movswl -0x58(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0xa2(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movswl -0x28(%rbp), %eax
movswl -0x20(%rbp), %ecx
subl %ecx, %eax
cmpl $0x0, %eax
jle 0x63de4
movswl -0x28(%rbp), %eax
movswl -0x20(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xa8(%rbp)
jmp 0x63df8
movswl -0x28(%rbp), %ecx
movswl -0x20(%rbp), %eax
subl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdx
movw -0xa2(%rbp), %si
movw -0xa4(%rbp), %di
movl -0xa8(%rbp), %eax
movw %ax, %cx
movb -0x31(%rbp), %al
movswl %di, %edi
movswl %si, %esi
movswl %cx, %ecx
movzwl -0x30(%rbp), %r8d
movzbl %al, %r9d
callq 0x63ef0
jmp 0x63e32
movw -0x58(%rbp), %ax
addw $0x1, %ax
movw %ax, -0x58(%rbp)
jmp 0x63766
addq $0xb0, %rsp
popq %rbp
retq
nopl (%rax)