// File: /workspace/github_c_makefile_star2_O3/OnionIoT[P]lv_example/lvgl/src/lv_draw/lv_draw_line.c
// Function: lv_draw_line
void lv_draw_line(const lv_point_t * point1, const lv_point_t * point2, const lv_area_t * mask,
                  const lv_style_t * style, lv_opa_t opa_scale)
{

    if(style->line.width == 0) return;
    if(point1->x == point2->x && point1->y == point2->y) return;

    /*Return if the points are out of the mask*/
    if(point1->x < mask->x1 - style->line.width && point2->x < mask->x1 - style->line.width) return;
    if(point1->x > mask->x2 + style->line.width && point2->x > mask->x2 + style->line.width) return;
    if(point1->y < mask->y1 - style->line.width && point2->y < mask->y1 - style->line.width) return;
    if(point1->y > mask->y2 + style->line.width && point2->y > mask->y2 + style->line.width) return;

    line_draw_t main_line;
    lv_point_t p1;
    lv_point_t p2;

    /*If the line if rather vertical then be sure y1 < y2 else x1 < x2*/

    if(LV_MATH_ABS(point1->x - point2->x) > LV_MATH_ABS(point1->y - point2->y)) {

        /*Steps less in y then x -> rather horizontal*/
        if(point1->x < point2->x) {
            p1.x = point1->x;
            p1.y = point1->y;
            p2.x = point2->x;
            p2.y = point2->y;
        } else {
            p1.x = point2->x;
            p1.y = point2->y;
            p2.x = point1->x;
            p2.y = point1->y;
        }
    } else {
        /*Steps less in x then y -> rather vertical*/
        if(point1->y < point2->y) {
            p1.x = point1->x;
            p1.y = point1->y;
            p2.x = point2->x;
            p2.y = point2->y;
        } else {
            p1.x = point2->x;
            p1.y = point2->y;
            p2.x = point1->x;
            p2.y = point1->y;
        }
    }

    line_init(&main_line, &p1, &p2);

    /*Special case draw a horizontal line*/
    if(main_line.p1.y == main_line.p2.y) {
        line_draw_hor(&main_line, mask, style, opa_scale);
    }
    /*Special case draw a vertical line*/
    else if(main_line.p1.x == main_line.p2.x) {
        line_draw_ver(&main_line, mask, style, opa_scale);
    }
    /*Arbitrary skew line*/
    else {
        bool dir_ori = false;
#if LV_ANTIALIAS
        bool aa = lv_disp_get_antialiasing(lv_refr_get_disp_refreshing());
        if(aa) {
            lv_point_t p_tmp;

            if(main_line.hor) {
                if(main_line.p1.y < main_line.p2.y) {
                    dir_ori = true;
                    p_tmp.x = main_line.p2.x;
                    p_tmp.y = main_line.p2.y - 1;
                    line_init(&main_line, &p1, &p_tmp);
                    main_line.sy = LV_MATH_ABS(main_line.sy); /*The sign can change if the line becomes horizontal*/
                } else if(main_line.p1.y > main_line.p2.y) {
                    dir_ori = false;
                    p_tmp.x = main_line.p2.x;
                    p_tmp.y = main_line.p2.y + 1;
                    line_init(&main_line, &p1, &p_tmp);
                    main_line.sy = -LV_MATH_ABS(main_line.sy); /*The sign can change if the line becomes horizontal*/
                }
            } else {
                if(main_line.p1.x < main_line.p2.x) {
                    dir_ori = true;
                    p_tmp.x = main_line.p2.x - 1;
                    p_tmp.y = main_line.p2.y;
                    line_init(&main_line, &p1, &p_tmp);
                    main_line.sx = LV_MATH_ABS(main_line.sx); /*The sign can change if the line becomes vertical*/
                } else if(main_line.p1.x > main_line.p2.x) {
                    dir_ori = false;
                    p_tmp.x = main_line.p2.x + 1;
                    p_tmp.y = main_line.p2.y;
                    line_init(&main_line, &p1, &p_tmp);
                    main_line.sx = -LV_MATH_ABS(main_line.sx); /*The sign can change if the line becomes vertical*/
                }
            }
        }
#endif
        line_draw_skew(&main_line, dir_ori, mask, style, opa_scale);
    }
}

// Assembly:
movswl 0x3e(%rcx), %eax
testl %eax, %eax
je 0x3b0bb
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movl %r8d, %ebp
movq %rcx, %r15
movzwl (%rdi), %r9d
movzwl (%rsi), %r10d
cmpw %r10w, %r9w
jne 0x3ad70
movzwl 0x2(%rdi), %ecx
cmpw 0x2(%rsi), %cx
je 0x3b0ad
movswl %r9w, %r14d
movswl %r10w, %ecx
movswl (%rdx), %r8d
subl %eax, %r8d
cmpl %r14d, %r8d
setg %r11b
cmpl %ecx, %r8d
setg %r8b
testb %r8b, %r11b
jne 0x3b0ad
movswl 0x4(%rdx), %r8d
addl %eax, %r8d
cmpl %r14d, %r8d
setl %r11b
cmpl %ecx, %r8d
setl %r8b
testb %r8b, %r11b
jne 0x3b0ad
movzwl 0x2(%rdi), %edi
movswl %di, %r13d
movswl 0x2(%rdx), %r8d
subl %eax, %r8d
cmpl %r13d, %r8d
jle 0x3add8
movswl 0x2(%rsi), %r11d
cmpl %r11d, %r8d
jg 0x3b0ad
movswl 0x6(%rdx), %r8d
addl %eax, %r8d
cmpl %r13d, %r8d
setl %r12b
movzwl 0x2(%rsi), %r11d
movswl %r11w, %esi
cmpl %esi, %r8d
setl %r8b
testb %r8b, %r12b
jne 0x3b0ad
movl %r14d, %r8d
subl %ecx, %r8d
movl %r8d, %r12d
negl %r12d
cmovsl %r8d, %r12d
movl %esi, %ebx
movl %r13d, 0x40(%rsp)
movl %r13d, %r8d
subl %esi, %r8d
movl %r8d, %r13d
negl %r13d
cmovsl %r8d, %r13d
cmpl %r13d, %r12d
movq %rdx, 0x48(%rsp)
movl %esi, 0x4(%rsp)
movw %r11w, 0x8(%rsp)
jbe 0x3ae5c
cmpw %r10w, %r9w
jl 0x3ae62
movl %esi, 0x38(%rsp)
movl 0x40(%rsp), %r8d
movl %ecx, %r13d
movl %r14d, %r12d
movl %ebx, %edx
movl %r10d, %r11d
movl %edi, %ebx
movl %r9d, %esi
jmp 0x3ae7b
cmpw %r11w, %di
jge 0x3ae41
movl 0x40(%rsp), %edx
movl %edx, 0x38(%rsp)
movl %esi, %r8d
movl %r14d, %r13d
movl %ecx, %r12d
movl %edi, %edx
movl %r9d, %r11d
movl %r10d, %esi
subl %r13d, %r12d
movw %r11w, 0x16(%rsp)
movw %dx, 0x18(%rsp)
movw %si, 0x1a(%rsp)
movw %bx, 0x1c(%rsp)
movl %r12d, %r13d
negl %r13d
cmovsl %r12d, %r13d
movw %r13w, 0x22(%rsp)
xorl %r12d, %r12d
movl %esi, 0x30(%rsp)
cmpw %r11w, %si
setg %r12b
leal -0x1(,%r12,2), %r12d
movw %r12w, 0x24(%rsp)
subl 0x38(%rsp), %r8d
movl %r8d, %r12d
negl %r12d
cmovsl %r8d, %r12d
movw %r12w, 0x26(%rsp)
xorl %r8d, %r8d
movl %ebx, 0x38(%rsp)
cmpw %dx, %bx
setg %r8b
leal -0x1(%r8,%r8), %r8d
movw %r8w, 0x28(%rsp)
movswl %r12w, %ebx
movl %ebx, %r8d
negl %r8d
cmpw %bx, %r13w
movswl %r13w, %ebx
cmovlel %r8d, %ebx
setg 0x2e(%rsp)
movl %ebx, %r8d
shrl $0x1f, %r8d
addl %ebx, %r8d
shrl %r8d
movw %r8w, 0x2a(%rsp)
movw $0x0, 0x2c(%rsp)
movw %r11w, 0x1e(%rsp)
movw %dx, 0x20(%rsp)
cmpw %di, 0x8(%rsp)
jne 0x3af5d
movl %edx, %r9d
cmpb $-0x1, %bpl
movq 0x48(%rsp), %rsi
je 0x3aff2
movzbl %bpl, %edi
movzbl 0x40(%r15), %r8d
imull %edi, %r8d
shrl $0x8, %r8d
jmp 0x3aff6
movl %r11d, %ebx
cmpw %r10w, %r9w
jne 0x3af84
cmpb $-0x1, %bpl
je 0x3b047
movzbl %bpl, %edx
movzbl 0x40(%r15), %ecx
imull %edx, %ecx
shrl $0x8, %ecx
jmp 0x3b04b
movl %edx, %r14d
callq 0x7293
movq %rax, %rdi
callq 0x8595
xorl %edi, %edi
testb %al, %al
je 0x3b105
cmpw %r12w, %r13w
jle 0x3b0bc
movl 0x38(%rsp), %eax
cmpw %r14w, %ax
movl %ebx, %esi
jle 0x3b7b7
leaq 0xe(%rsp), %rcx
movl 0x30(%rsp), %edi
movw %di, (%rcx)
decl %eax
movw %ax, 0x2(%rcx)
leaq 0x16(%rsp), %r13
movq %r13, %rdi
movl %r14d, %edx
callq 0x3bf98
movzwl 0x12(%r13), %eax
movl %eax, %ecx
negw %cx
cmovsw %ax, %cx
movw %cx, 0x12(%r13)
jmp 0x3b100
movb 0x40(%r15), %r8b
movl 0x38(%rsp), %edx
decl %eax
movswl %ax, %edi
andl $0x1, %eax
sarl %edi
addl %edi, %eax
subl %eax, %r9d
addl %edi, %edx
cmpl %ecx, %r14d
movl %ecx, %eax
cmovll %r14d, %eax
leaq 0xe(%rsp), %rdi
movw %ax, (%rdi)
cmovgl %r14d, %ecx
movw %cx, 0x4(%rdi)
movswl %r9w, %eax
movswl %dx, %ecx
cmpl %ecx, %eax
movl %ecx, %edx
cmovll %eax, %edx
movw %dx, 0x2(%rdi)
cmovgl %eax, %ecx
movw %cx, 0x6(%rdi)
movl 0x3c(%r15), %edx
movzbl %r8b, %ecx
jmp 0x3b0a8
movb 0x40(%r15), %cl
movl 0x40(%rsp), %r9d
decl %eax
movswl %ax, %edx
andl $0x1, %eax
sarl %edx
subl %edx, %ebx
movl 0x30(%rsp), %esi
addl %eax, %esi
addl %edx, %esi
movswl %bx, %eax
movswl %si, %edx
cmpl %edx, %eax
movl %edx, %r8d
cmovll %eax, %r8d
leaq 0xe(%rsp), %rdi
movw %r8w, (%rdi)
cmovgl %eax, %edx
movw %dx, 0x4(%rdi)
movl 0x4(%rsp), %edx
cmpl %edx, %r9d
movl %edx, %eax
cmovll %r9d, %eax
movw %ax, 0x2(%rdi)
cmovgl %r9d, %edx
movw %dx, 0x6(%rdi)
movl 0x3c(%r15), %edx
movzbl %cl, %ecx
movq 0x48(%rsp), %rsi
callq 0x35793
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %ebx, %esi
movl 0x30(%rsp), %eax
cmpw %si, %ax
jle 0x3b7fd
decl %eax
leaq 0xe(%rsp), %rcx
movw %ax, (%rcx)
movl 0x38(%rsp), %eax
movw %ax, 0x2(%rcx)
leaq 0x16(%rsp), %r13
movq %r13, %rdi
movl %r14d, %edx
callq 0x3bf98
movzwl 0xe(%r13), %eax
movl %eax, %ecx
negw %cx
cmovsw %ax, %cx
movw %cx, 0xe(%r13)
movl $0x1, %edi
movl %edi, %ebx
cmpb $-0x1, %bpl
je 0x3b122
movzbl %bpl, %eax
movzbl 0x40(%r15), %ecx
imull %eax, %ecx
shrl $0x8, %ecx
movl %ecx, 0x8(%rsp)
jmp 0x3b12a
movb 0x40(%r15), %al
movl %eax, 0x8(%rsp)
callq 0x7293
movq %rax, %rdi
callq 0x8595
movb %al, 0x30(%rsp)
movswl 0x1a(%rsp), %eax
movswl 0x16(%rsp), %ecx
movl %eax, %edx
subl %ecx, %edx
movl %edx, 0x4(%rsp)
movswl 0x1c(%rsp), %edx
movswl 0x18(%rsp), %esi
movl %edx, %r13d
subl %esi, %r13d
movb 0x2e(%rsp), %dil
cmpb $0x1, %dil
movb %dil, 0x40(%rsp)
movl %ebx, 0x54(%rsp)
jne 0x3b17d
addl %ebx, %edx
cmpl %esi, %edx
jg 0x3b183
negl 0x4(%rsp)
jmp 0x3b186
addl %ebx, %eax
cmpl %ecx, %eax
jg 0x3b177
negl %r13d
movq %r15, 0x70(%rsp)
movswl 0x3e(%r15), %ebx
leal (%rbx,%rbx), %ebp
movswl %bp, %eax
movq %rax, %r14
leal (,%rax,4), %edi
callq 0x36748
movq %rax, %r12
movzbl 0x8(%rsp), %r15d
movq %rbx, 0x38(%rsp)
testl %ebx, %ebx
movl %r15d, 0x8(%rsp)
je 0x3b5a2
shll $0x4, %r13d
movl 0x4(%rsp), %edi
shll $0x4, %edi
movl %r13d, %r8d
negw %r8w
cmovsw %r13w, %r8w
xorl %ecx, %ecx
testw %r13w, %r13w
setg %dl
movl %edi, %eax
negw %ax
cmovsw %di, %ax
xorl %r10d, %r10d
movl %edi, %esi
testw %di, %di
setg %dil
cmpw $0x2, %bp
jl 0x3b2ca
movb %dl, %cl
leal -0x1(,%rcx,2), %ecx
movl %ecx, 0x4(%rsp)
movb %dil, %r10b
movq 0x38(%rsp), %rdx
imull %edx, %edx
decl %r14d
movswl %ax, %ecx
movl %ecx, %edi
negl %edi
cmpw %cx, %r8w
movswl %r8w, %r8d
cmovgl %r8d, %edi
leal -0x1(,%r10,2), %r11d
shrl %edi
movl %r8d, 0x34(%rsp)
movl %r8d, %r10d
negl %r10d
xorl %r8d, %r8d
movswl %r11w, %r9d
movl %r9d, 0x58(%rsp)
xorl %ebp, %ebp
xorl %r15d, %r15d
movswq %r8w, %rbx
movw %r15w, (%r12,%rbx,4)
movw %bp, 0x2(%r12,%rbx,4)
movswl %r15w, %ebx
imull %ebx, %ebx
movswl %bp, %r11d
imull %r11d, %r11d
addl %ebx, %r11d
cmpl %edx, %r11d
jae 0x3b6ef
cmpw %r13w, %r15w
jne 0x3b28f
cmpw %si, %bp
jne 0x3b28f
movl %r13d, %r15d
movl %esi, %ebp
jmp 0x3b2be
movswl %di, %r11d
cmpl %r10d, %r11d
movl $0x0, %ebx
cmovgl 0x4(%rsp), %ebx
movl $0x0, %r9d
cmovgl %ecx, %r9d
addl %ebx, %r15d
subl %r9d, %edi
cmpw %ax, %r11w
jge 0x3b2be
addl 0x34(%rsp), %edi
addl 0x58(%rsp), %ebp
incl %r8d
movswl %r8w, %r9d
cmpl %r9d, %r14d
jg 0x3b253
movq 0x38(%rsp), %rax
movl %eax, %edx
movb 0x40(%rsp), %dil
testw %dx, %dx
setg %al
movl %eax, 0x68(%rsp)
movq 0x70(%rsp), %r14
movl %edx, 0x64(%rsp)
jle 0x3b61b
movswq %dx, %rax
movl %edx, %esi
movzwl -0x4(%r12,%rax,4), %ecx
movl %ecx, %edx
shrl $0xf, %edx
addl %ecx, %edx
movswl %dx, %r8d
sarl %r8d
negl %r8d
movzwl -0x2(%r12,%rax,4), %eax
movl %eax, %ecx
shrl $0xf, %ecx
addl %eax, %ecx
movswl %cx, %r9d
sarl %r9d
negl %r9d
movzwl %si, %r10d
movb 0x2e(%rsp), %dil
movzwl 0x24(%rsp), %eax
movw %ax, 0x6e(%rsp)
movzwl 0x28(%rsp), %eax
movw %ax, 0x6c(%rsp)
xorl %r15d, %r15d
movb 0x30(%rsp), %r11b
xorb $0x1, %r11b
xorl %eax, %eax
movb %dil, 0x40(%rsp)
movl %r8d, 0x4(%rsp)
movl %r9d, 0x34(%rsp)
movq %r10, 0x58(%rsp)
movb %r11b, 0x54(%rsp)
movzwl (%r12,%r15,4), %edx
addw %r8w, %dx
movw %dx, (%r12,%r15,4)
movzwl 0x2(%r12,%r15,4), %ecx
addw %r9w, %cx
movw %cx, 0x2(%r12,%r15,4)
testq %r15, %r15
sete %sil
orb %r11b, %sil
jne 0x3b590
testb $0x1, %dil
je 0x3b425
cmpw %dx, -0x4(%r12,%r15,4)
je 0x3b590
movswq %ax, %rbp
movzwl 0x2(%r12,%rbp,4), %esi
movl %ecx, %r13d
subl %esi, %r13d
movzwl 0x16(%rsp), %eax
movzwl 0x18(%rsp), %edx
addw (%r12,%rbp,4), %ax
decl %eax
cmpw $0x0, 0x6c(%rsp)
js 0x3b4ab
addl %esi, %edx
movswl %dx, %esi
movl 0x3c(%r14), %r8d
movswl %ax, %edi
movswl %r13w, %r13d
movl %r13d, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x36833
movzwl 0x1a(%rsp), %eax
addw (%r12,%rbp,4), %ax
incl %eax
movzwl 0x2(%r12,%rbp,4), %ecx
addw 0x1c(%rsp), %cx
negl %r13d
movswl %ax, %edi
movswl %r13w, %edx
movswl %cx, %esi
jmp 0x3b4f7
cmpw %cx, -0x2(%r12,%r15,4)
je 0x3b590
movswq %ax, %rbp
movzwl (%r12,%rbp,4), %ecx
movl %edx, %r13d
subl %ecx, %r13d
movzwl 0x16(%rsp), %eax
cmpw $0x0, 0x6e(%rsp)
js 0x3b50a
addl %ecx, %eax
movzwl 0x18(%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
decl %ecx
movswl %ax, %edi
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movswl %r13w, %r13d
movl %r13d, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x368cc
movzwl (%r12,%rbp,4), %eax
addw 0x1a(%rsp), %ax
movzwl 0x1c(%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
incl %ecx
negl %r13d
movswl %cx, %esi
movswl %r13w, %edx
movswl %ax, %edi
jmp 0x3b563
addl %edx, %ecx
incl %ecx
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movswl %ax, %edi
movswl %r13w, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x36833
movzwl 0x1a(%rsp), %eax
addw (%r12,%rbp,4), %ax
incl %eax
movl %r13d, %ecx
addw 0x1c(%rsp), %cx
addw 0x2(%r12,%rbp,4), %cx
incl %ecx
negl %r13d
movswl %ax, %edi
movswl %cx, %esi
movswl %r13w, %edx
movl 0x3c(%r14), %r8d
movq 0x48(%rsp), %rcx
movl %ebx, %r9d
callq 0x36833
jmp 0x3b574
addl %edx, %eax
incl %eax
movzwl 0x18(%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
decl %ecx
movswl %ax, %edi
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movswl %r13w, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x368cc
movl %r13d, %eax
addw 0x1a(%rsp), %ax
addw (%r12,%rbp,4), %ax
incl %eax
movzwl 0x1c(%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
incl %ecx
negl %r13d
movswl %ax, %edi
movswl %cx, %esi
movswl %r13w, %edx
movl 0x3c(%r14), %r8d
movq 0x48(%rsp), %rcx
movl %ebx, %r9d
callq 0x368cc
movl %r15d, %eax
movb 0x40(%rsp), %dil
movl 0x4(%rsp), %r8d
movl 0x34(%rsp), %r9d
movq 0x58(%rsp), %r10
movb 0x54(%rsp), %r11b
incq %r15
cmpq %r15, %r10
jne 0x3b367
movswq %ax, %r15
jmp 0x3b61e
movzbl 0x30(%rsp), %eax
movq %rax, 0x38(%rsp)
movb 0x40(%rsp), %dil
movl 0x54(%rsp), %esi
testb %dil, %dil
movq 0x70(%rsp), %r14
je 0x3b5d8
movswl 0x18(%rsp), %eax
movswl 0x1c(%rsp), %ecx
addl %ecx, %esi
cmpl %eax, %esi
jg 0x3b5ee
movq %r12, %rax
addq $0x2, %rax
jmp 0x3b5eb
movswl 0x16(%rsp), %ecx
movswl 0x1a(%rsp), %eax
addl %eax, %esi
movq %r12, %rax
cmpl %ecx, %esi
jg 0x3b5ee
decw (%rax)
movl $0x0, 0x68(%rsp)
movl $0x0, %esi
movl $0x0, 0x34(%rsp)
movl $0x0, 0x4(%rsp)
cmpb $0x0, 0x30(%rsp)
jne 0x3b8f5
jmp 0x3b91d
xorl %r15d, %r15d
cmpb $0x0, 0x30(%rsp)
je 0x3b6d1
movb 0x2e(%rsp), %cl
movswq 0x38(%rsp), %rax
movzwl 0x3c(%r14), %r8d
movb %cl, 0x40(%rsp)
cmpb $0x1, %cl
jne 0x3b72b
movzwl -0x2(%r12,%rax,4), %edx
movzwl 0x2(%r12,%r15,4), %esi
movl %edx, %r13d
subl %esi, %r13d
movzwl 0x28(%rsp), %edi
movzwl 0x16(%rsp), %eax
movzwl 0x18(%rsp), %ecx
addw (%r12,%r15,4), %ax
decl %eax
movl %edi, %ebp
addl %r13d, %ebp
testw %di, %di
js 0x3b842
addl %esi, %ecx
movswl %cx, %esi
movswl %ax, %edi
movswl %bp, %r13d
movl %r13d, %edx
movq 0x48(%rsp), %rbp
movq %rbp, %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x36833
movzwl 0x1a(%rsp), %eax
addw (%r12,%r15,4), %ax
incl %eax
movzwl 0x2(%r12,%r15,4), %ecx
movl %ebx, %r15d
addw 0x1c(%rsp), %cx
negl %r13d
movswl %ax, %edi
movswl %r13w, %edx
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movq %rbp, %rcx
jmp 0x3b88e
movl $0x0, 0x34(%rsp)
movl $0x0, 0x4(%rsp)
movl 0x8(%rsp), %r15d
movl 0x64(%rsp), %esi
jmp 0x3b91d
movb 0x30(%rsp), %cl
movzbl %cl, %eax
movl %r8d, %edx
subl %eax, %edx
cmpw $0x1, %dx
movl %edx, %eax
adcl $0x0, %eax
testb %cl, %cl
cmovel %r8d, %eax
movq %rax, 0x38(%rsp)
testw %dx, %dx
movl 0x8(%rsp), %r15d
movb 0x40(%rsp), %dil
movl 0x54(%rsp), %esi
jne 0x3b2d6
jmp 0x3b5b5
movzwl -0x4(%r12,%rax,4), %edx
movzwl (%r12,%r15,4), %esi
movl %edx, %r13d
subl %esi, %r13d
movzwl 0x24(%rsp), %edi
movzwl 0x16(%rsp), %ecx
movzwl 0x18(%rsp), %eax
addw 0x2(%r12,%r15,4), %ax
decl %eax
movl %edi, %ebp
addl %r13d, %ebp
testw %di, %di
js 0x3b898
addl %esi, %ecx
movswl %cx, %edi
movswl %ax, %esi
movswl %bp, %r13d
movl %r13d, %edx
movq 0x48(%rsp), %rbp
movq %rbp, %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x368cc
movzwl (%r12,%r15,4), %eax
addw 0x1a(%rsp), %ax
movzwl 0x1c(%rsp), %ecx
addw 0x2(%r12,%r15,4), %cx
movl %ebx, %r15d
incl %ecx
negl %r13d
movswl %cx, %esi
movswl %r13w, %edx
movswl %ax, %edi
movl 0x3c(%r14), %r8d
movq %rbp, %rcx
jmp 0x3b8e4
xorl %edi, %edi
cmpw %ax, %r14w
jle 0x3b105
leaq 0xe(%rsp), %rcx
movl 0x30(%rsp), %edi
movw %di, (%rcx)
incl %eax
movw %ax, 0x2(%rcx)
leaq 0x16(%rsp), %rbx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x3bf98
xorl %edi, %edi
movzwl 0x12(%rbx), %eax
movl %eax, %ecx
negw %cx
cmovnsw %ax, %cx
movw %cx, 0x12(%rbx)
jmp 0x3b105
xorl %edi, %edi
cmpw %ax, %si
jle 0x3b105
incl %eax
leaq 0xe(%rsp), %rcx
movw %ax, (%rcx)
movl 0x38(%rsp), %eax
movw %ax, 0x2(%rcx)
leaq 0x16(%rsp), %rbx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x3bf98
xorl %edi, %edi
movzwl 0xe(%rbx), %eax
movl %eax, %ecx
negw %cx
cmovnsw %ax, %cx
movw %cx, 0xe(%rbx)
jmp 0x3b105
addl %edx, %ecx
movswl %cx, %esi
movswl %ax, %edi
movswl %bp, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x36833
movzwl 0x1a(%rsp), %eax
addw (%r12,%r15,4), %ax
addw 0x1c(%rsp), %r13w
incl %eax
addw 0x2(%r12,%r15,4), %r13w
movl %ebx, %r15d
negl %ebp
movswl %r13w, %esi
movswl %ax, %edi
movswl %bp, %edx
movl 0x3c(%r14), %r8d
movq 0x48(%rsp), %rcx
movl %ebx, %r9d
callq 0x36833
jmp 0x3b8ec
addl %edx, %ecx
movswl %cx, %edi
movswl %ax, %esi
movswl %bp, %edx
movq 0x48(%rsp), %rcx
movl 0x8(%rsp), %ebx
movl %ebx, %r9d
callq 0x368cc
addw 0x1a(%rsp), %r13w
addw (%r12,%r15,4), %r13w
movzwl 0x1c(%rsp), %eax
addw 0x2(%r12,%r15,4), %ax
movl %ebx, %r15d
incl %eax
negl %ebp
movswl %r13w, %edi
movswl %ax, %esi
movswl %bp, %edx
movl 0x3c(%r14), %r8d
movq 0x48(%rsp), %rcx
movl %ebx, %r9d
callq 0x368cc
movb 0x40(%rsp), %dil
movl 0x64(%rsp), %esi
movzbl %dil, %eax
xorl %edx, %edx
movl %esi, %ecx
negw %cx
sbbl %edx, %edx
cmpw $0x0, 0x24(%rsp,%rax,4)
movl $0x1, %eax
movl %edx, %ecx
cmovsl %eax, %ecx
movl %ecx, 0x34(%rsp)
cmovnsl %eax, %edx
movl %edx, 0x4(%rsp)
movzwl 0x16(%rsp), %eax
movzwl 0x18(%rsp), %ecx
movw %ax, 0x2(%rsp)
movw %cx, (%rsp)
movswq 0x38(%rsp), %rax
movq %rax, 0x58(%rsp)
movzwl %si, %eax
movq %rax, 0x40(%rsp)
testb $0x1, %dil
je 0x3bb42
movzwl 0x1e(%rsp), %eax
movzwl 0x20(%rsp), %ecx
movb $0x1, %dl
movl %edx, 0x38(%rsp)
movzwl 0x1a(%rsp), %edx
movzwl 0x1c(%rsp), %esi
movzwl 0x2a(%rsp), %ebp
movswl 0x22(%rsp), %edi
movl %edi, %r8d
negl %r8d
movzwl 0x26(%rsp), %r9d
movzwl 0x24(%rsp), %r10d
movzwl 0x28(%rsp), %r11d
addw %cx, %r11w
cmpw %dx, %ax
jne 0x3b99b
cmpw %si, %cx
je 0x3bd2f
movw %bp, 0x2c(%rsp)
movswl %bp, %ebx
cmpl %r8d, %ebx
jle 0x3b9be
movl %ebp, %r13d
subl %r9d, %r13d
movw %r13w, 0x2a(%rsp)
addl %r10d, %eax
movw %ax, 0x1e(%rsp)
jmp 0x3b9c1
movl %ebp, %r13d
cmpw %r9w, %bp
jge 0x3b9db
addl %edi, %r13d
movw %r13w, 0x2a(%rsp)
movw %r11w, 0x20(%rsp)
movl %r11d, %r15d
jmp 0x3b9de
movl %ecx, %r15d
movl %r13d, %ebp
cmpw %r15w, %cx
movl 0x8(%rsp), %r15d
je 0x3b98d
cmpb $0x0, 0x68(%rsp)
movq 0x48(%rsp), %rbx
leaq 0xe(%rsp), %rbp
je 0x3ba9b
xorl %r13d, %r13d
movzwl 0x2(%rsp), %eax
addw (%r12,%r13,4), %ax
movw %ax, 0xe(%rsp)
movzwl (%rsp), %ecx
addw 0x2(%r12,%r13,4), %cx
movw %cx, 0x10(%rsp)
addw 0x1e(%rsp), %ax
movzwl 0x2(%rsp), %edx
notl %edx
addl %eax, %edx
movw %dx, 0x12(%rsp)
movw %cx, 0x14(%rsp)
movl 0x3c(%r14), %edx
movq %rbp, %rdi
movq %rbx, %rsi
movl %r15d, %ecx
callq 0x35793
testq %r13, %r13
je 0x3ba88
movzwl (%r12,%r13,4), %eax
cmpw -0x4(%r12,%r13,4), %ax
sete %al
orb 0x38(%rsp), %al
testb $0x1, %al
jne 0x3ba88
movswl 0xe(%rsp), %edi
movzwl 0x10(%rsp), %eax
subw 0x28(%rsp), %ax
movl 0x3c(%r14), %ecx
movswl %ax, %esi
movq %rbx, %rdx
movl %r15d, %r8d
callq 0x35638
incq %r13
cmpq %r13, 0x40(%rsp)
jne 0x3ba04
movzwl 0x1e(%rsp), %eax
cmpb $0x0, 0x30(%rsp)
je 0x3bb27
movzwl 0x2(%rsp), %ecx
addw (%r12), %cx
movzwl (%rsp), %edx
addw 0x34(%rsp), %dx
addw 0x2(%r12), %dx
movzwl 0x2(%rsp), %r8d
subl %eax, %r8d
movswl %cx, %edi
movswl %dx, %esi
movswl %r8w, %edx
movl 0x3c(%r14), %r8d
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x368cc
movzwl 0x2(%rsp), %eax
movq 0x58(%rsp), %rdx
addw -0x4(%r12,%rdx,4), %ax
movzwl (%rsp), %ecx
addw 0x4(%rsp), %cx
addw -0x2(%r12,%rdx,4), %cx
movzwl 0x1e(%rsp), %edx
subw 0x2(%rsp), %dx
movswl %ax, %edi
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movswl %dx, %edx
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x368cc
movzwl 0x1e(%rsp), %eax
movw %ax, 0x2(%rsp)
movzwl 0x20(%rsp), %ecx
movw %cx, (%rsp)
movl $0x0, 0x38(%rsp)
jmp 0x3b95d
movzwl 0x1e(%rsp), %r15d
movzwl 0x20(%rsp), %eax
movb $0x1, %cl
movl %ecx, 0x38(%rsp)
movzwl 0x1a(%rsp), %edx
movzwl 0x1c(%rsp), %esi
movzwl 0x2a(%rsp), %ebp
movswl 0x22(%rsp), %edi
movl %edi, %r8d
negl %r8d
movzwl 0x26(%rsp), %r9d
movzwl 0x28(%rsp), %r10d
movzwl 0x24(%rsp), %r11d
addw %r15w, %r11w
cmpw %dx, %r15w
jne 0x3bb92
cmpw %si, %ax
je 0x3be62
movw %bp, 0x2c(%rsp)
movswl %bp, %ebx
movl %ebp, %r13d
movl %r15d, %ecx
cmpl %r8d, %ebx
jle 0x3bbba
movl %ebp, %r13d
subl %r9d, %r13d
movw %r13w, 0x2a(%rsp)
movw %r11w, 0x1e(%rsp)
movl %r11d, %ecx
cmpw %r9w, %bp
jge 0x3bbd1
addl %edi, %r13d
movw %r13w, 0x2a(%rsp)
addl %r10d, %eax
movw %ax, 0x20(%rsp)
movl %r13d, %ebp
cmpw %cx, %r15w
je 0x3bb83
cmpb $0x0, 0x68(%rsp)
movq 0x48(%rsp), %rbx
movl 0x8(%rsp), %ebp
leaq 0xe(%rsp), %r15
je 0x3bc8c
xorl %r13d, %r13d
movzwl 0x2(%rsp), %eax
addw (%r12,%r13,4), %ax
movw %ax, 0xe(%rsp)
movzwl (%rsp), %ecx
addw 0x2(%r12,%r13,4), %cx
movw %cx, 0x10(%rsp)
movw %ax, 0x12(%rsp)
addw 0x20(%rsp), %cx
movzwl (%rsp), %eax
notl %eax
addl %ecx, %eax
movw %ax, 0x14(%rsp)
movl 0x3c(%r14), %edx
movq %r15, %rdi
movq %rbx, %rsi
movl %ebp, %ecx
callq 0x35793
testq %r13, %r13
je 0x3bc79
movzwl 0x2(%r12,%r13,4), %eax
cmpw -0x2(%r12,%r13,4), %ax
sete %al
orb 0x38(%rsp), %al
testb $0x1, %al
jne 0x3bc79
movzwl 0xe(%rsp), %eax
subw 0x24(%rsp), %ax
movswl 0x10(%rsp), %esi
movl 0x3c(%r14), %ecx
movswl %ax, %edi
movq %rbx, %rdx
movl %ebp, %r8d
callq 0x35638
incq %r13
cmpq %r13, 0x40(%rsp)
jne 0x3bbf6
movzwl 0x20(%rsp), %eax
cmpb $0x0, 0x30(%rsp)
je 0x3bd12
movzwl 0x2(%rsp), %ecx
addw 0x34(%rsp), %cx
addw (%r12), %cx
movzwl (%rsp), %edx
addw 0x2(%r12), %dx
movzwl (%rsp), %r8d
subl %eax, %r8d
movswl %cx, %edi
movswl %dx, %esi
movswl %r8w, %edx
movl 0x3c(%r14), %r8d
movq %rbx, %rcx
movl %ebp, %r9d
callq 0x36833
movzwl 0x2(%rsp), %eax
addw 0x4(%rsp), %ax
movq 0x58(%rsp), %rdx
addw -0x4(%r12,%rdx,4), %ax
movzwl (%rsp), %ecx
addw -0x2(%r12,%rdx,4), %cx
movzwl 0x20(%rsp), %edx
subw (%rsp), %dx
movswl %ax, %edi
movswl %cx, %esi
movl 0x3c(%r14), %r8d
movswl %dx, %edx
movq %rbx, %rcx
movl %ebp, %r9d
callq 0x36833
movzwl 0x20(%rsp), %eax
movzwl 0x1e(%rsp), %r15d
movw %r15w, 0x2(%rsp)
movw %ax, (%rsp)
movl $0x0, 0x38(%rsp)
jmp 0x3bb53
cmpb $0x0, 0x68(%rsp)
movq 0x48(%rsp), %rbx
je 0x3bdd4
xorl %ebp, %ebp
leaq 0xe(%rsp), %r13
movzwl 0x2(%rsp), %eax
addw (%r12,%rbp,4), %ax
movw %ax, 0xe(%rsp)
movzwl (%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
movw %cx, 0x10(%rsp)
addw 0x1e(%rsp), %ax
subw 0x2(%rsp), %ax
movw %ax, 0x12(%rsp)
movw %cx, 0x14(%rsp)
movl 0x3c(%r14), %edx
movq %r13, %rdi
movq %rbx, %rsi
movl %r15d, %ecx
callq 0x35793
testq %rbp, %rbp
je 0x3bdc6
movzwl (%r12,%rbp,4), %eax
cmpw -0x4(%r12,%rbp,4), %ax
sete %al
orb 0x38(%rsp), %al
testb $0x1, %al
jne 0x3bdc6
movswl 0xe(%rsp), %edi
movzwl 0x10(%rsp), %eax
subw 0x28(%rsp), %ax
movl 0x3c(%r14), %ecx
movswl %ax, %esi
movq %rbx, %rdx
movl %r15d, %r8d
callq 0x35638
incq %rbp
cmpq %rbp, 0x40(%rsp)
jne 0x3bd46
cmpb $0x0, 0x30(%rsp)
je 0x3b0ad
movzwl 0x2(%rsp), %eax
addw (%r12), %ax
movl 0x34(%rsp), %edx
addw (%rsp), %dx
addw 0x2(%r12), %dx
movzwl 0x1e(%rsp), %ecx
notl %ecx
addw 0x2(%rsp), %cx
movswl %ax, %edi
movswl %dx, %esi
movl 0x3c(%r14), %r8d
movswl %cx, %edx
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x368cc
movzwl 0x2(%rsp), %eax
movq 0x58(%rsp), %rcx
addw -0x4(%r12,%rcx,4), %ax
movl 0x4(%rsp), %edx
addw (%rsp), %dx
addw -0x2(%r12,%rcx,4), %dx
movzwl 0x1e(%rsp), %ecx
subw 0x2(%rsp), %cx
incl %ecx
movswl %ax, %edi
movswl %dx, %esi
movswl %cx, %edx
movl 0x3c(%r14), %r8d
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x368cc
jmp 0x3b0ad
cmpb $0x0, 0x68(%rsp)
movq 0x48(%rsp), %rbx
movl 0x8(%rsp), %r15d
je 0x3bf0c
xorl %ebp, %ebp
leaq 0xe(%rsp), %r13
movzwl 0x2(%rsp), %eax
addw (%r12,%rbp,4), %ax
movw %ax, 0xe(%rsp)
movzwl (%rsp), %ecx
addw 0x2(%r12,%rbp,4), %cx
movw %cx, 0x10(%rsp)
movw %ax, 0x12(%rsp)
addw 0x20(%rsp), %cx
subw (%rsp), %cx
movw %cx, 0x14(%rsp)
movl 0x3c(%r14), %edx
movq %r13, %rdi
movq %rbx, %rsi
movl %r15d, %ecx
callq 0x35793
testq %rbp, %rbp
je 0x3befe
movzwl 0x2(%r12,%rbp,4), %eax
cmpw -0x2(%r12,%rbp,4), %ax
sete %al
orb 0x38(%rsp), %al
testb $0x1, %al
jne 0x3befe
movzwl 0xe(%rsp), %eax
subw 0x24(%rsp), %ax
movswl 0x10(%rsp), %esi
movl 0x3c(%r14), %ecx
movswl %ax, %edi
movq %rbx, %rdx
movl %r15d, %r8d
callq 0x35638
incq %rbp
cmpq %rbp, 0x40(%rsp)
jne 0x3be7e
cmpb $0x0, 0x30(%rsp)
je 0x3b0ad
movl 0x34(%rsp), %edx
addw 0x2(%rsp), %dx
addw (%r12), %dx
movzwl (%rsp), %eax
addw 0x2(%r12), %ax
movzwl 0x20(%rsp), %ecx
notl %ecx
addw (%rsp), %cx
movswl %dx, %edi
movswl %ax, %esi
movl 0x3c(%r14), %r8d
movswl %cx, %edx
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x36833
movl 0x4(%rsp), %edx
addw 0x2(%rsp), %dx
movq 0x58(%rsp), %rcx
addw -0x4(%r12,%rcx,4), %dx
movzwl (%rsp), %eax
addw -0x2(%r12,%rcx,4), %ax
movzwl 0x20(%rsp), %ecx
subw (%rsp), %cx
incl %ecx
movswl %dx, %edi
movswl %ax, %esi
movswl %cx, %edx
movl 0x3c(%r14), %r8d
movq %rbx, %rcx
movl %r15d, %r9d
callq 0x36833
jmp 0x3b0ad