// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_page.c
// Function: lv_page_scrollable_signal
static lv_res_t lv_page_scrollable_signal(lv_obj_t * scrl, lv_signal_t sign, void * param)
{
    lv_res_t res;

    /* Include the ancient signal function */
    res = ancestor_signal(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 * page               = lv_obj_get_parent(scrl);
    const lv_style_t * page_style = lv_obj_get_style(page);
    lv_page_ext_t * page_ext      = lv_obj_get_ext_attr(page);

    if(sign == LV_SIGNAL_CORD_CHG) {
        /*Limit the position of the scrollable object to be always visible
         * (Do not let its edge inner then its parent respective edge)*/
        lv_coord_t new_x = lv_obj_get_x(scrl);
        lv_coord_t new_y = lv_obj_get_y(scrl);
        bool refr_x      = false;
        bool refr_y      = false;
        lv_area_t page_coords;
        lv_area_t scrl_coords;
        lv_obj_get_coords(scrl, &scrl_coords);
        lv_obj_get_coords(page, &page_coords);

        lv_area_t * ori_coords = (lv_area_t *)param;
        lv_coord_t diff_x      = scrl->coords.x1 - ori_coords->x1;
        lv_coord_t diff_y      = scrl->coords.y1 - ori_coords->y1;
        lv_coord_t hpad        = page_style->body.padding.left + page_style->body.padding.right;
        lv_coord_t vpad        = page_style->body.padding.top + page_style->body.padding.bottom;
        lv_obj_t * page_parent = lv_obj_get_parent(page);

        lv_indev_t * indev = lv_indev_get_act();
        lv_point_t drag_vect;
        lv_indev_get_vect(indev, &drag_vect);

        /* Start the scroll propagation if there is drag vector on the indev, but the drag is not
         * started yet and the scrollable is in a corner. It will enable the scroll propagation only
         * when a new scroll begins and not when the scrollable is already being scrolled.*/
        if(page_ext->scroll_prop && page_ext->scroll_prop_ip == 0 && lv_indev_is_dragging(indev) == false) {
            if(((drag_vect.y > 0 && scrl_coords.y1 == page_coords.y1 + page_style->body.padding.top) ||
                (drag_vect.y < 0 && scrl_coords.y2 == page_coords.y2 - page_style->body.padding.bottom)) &&
               ((drag_vect.x > 0 && scrl_coords.x1 == page_coords.x1 + page_style->body.padding.left) ||
                (drag_vect.x < 0 && scrl_coords.x2 == page_coords.x2 - page_style->body.padding.right))) {

                if(lv_obj_get_parent(page_parent) != NULL) { /*Do not propagate the scroll to a screen*/
                    page_ext->scroll_prop_ip = 1;
                }
            }
        }

        /*scrollable width smaller then page width? -> align to left*/
        if(lv_area_get_width(&scrl_coords) + hpad <= lv_area_get_width(&page_coords)) {
            if(scrl_coords.x1 != page_coords.x1 + page_style->body.padding.left) {
                new_x  = page_style->body.padding.left;
                refr_x = true;
            }
        } else {
            /*If the scroll propagation is in progress revert the original coordinates (don't let
             * the page scroll)*/
            if(page_ext->scroll_prop_ip) {
                if(drag_vect.x == diff_x) { /*`scrl` is bouncing: drag pos. it somewhere and here it
                                               is reverted. Handle only the pos. because of drag*/
                    new_x  = ori_coords->x1 - page_coords.x1;
                    refr_x = true;
                }
            }
            /*The edges of the scrollable can not be in the page (minus hpad) */
            else if(scrl_coords.x2 < page_coords.x2 - page_style->body.padding.right) {
                new_x = lv_area_get_width(&page_coords) - lv_area_get_width(&scrl_coords) -
                        page_style->body.padding.right; /* Right align */
                refr_x = true;
#if LV_USE_ANIMATION
                if(page_ext->edge_flash.enabled && page_ext->edge_flash.left_ip == 0 &&
                   page_ext->edge_flash.right_ip == 0 && page_ext->edge_flash.top_ip == 0 &&
                   page_ext->edge_flash.bottom_ip == 0) {
                    lv_page_start_edge_flash(page);
                    page_ext->edge_flash.right_ip = 1;
                }
#endif
            } else if(scrl_coords.x1 > page_coords.x1 + page_style->body.padding.left) {
                new_x  = page_style->body.padding.left; /*Left align*/
                refr_x = true;
#if LV_USE_ANIMATION
                if(page_ext->edge_flash.enabled && page_ext->edge_flash.left_ip == 0 &&
                   page_ext->edge_flash.right_ip == 0 && page_ext->edge_flash.top_ip == 0 &&
                   page_ext->edge_flash.bottom_ip == 0) {
                    lv_page_start_edge_flash(page);
                    page_ext->edge_flash.left_ip = 1;
                }
#endif
            }
        }

        /*scrollable height smaller then page height? -> align to top*/
        if(lv_area_get_height(&scrl_coords) + vpad <= lv_area_get_height(&page_coords)) {
            if(scrl_coords.y1 != page_coords.y1 + page_style->body.padding.top) {
                new_y  = page_style->body.padding.top;
                refr_y = true;
            }
        } else {
            /*If the scroll propagation is in progress revert the original coordinates (don't let
             * the page scroll)*/
            if(page_ext->scroll_prop_ip) {
                if(drag_vect.y == diff_y) { /*`scrl` is bouncing: drag pos. it somewhere and here it
                                               is reverted. Handle only the pos. because of drag*/
                    new_y  = ori_coords->y1 - page_coords.y1;
                    refr_y = true;
                }
            }
            /*The edges of the scrollable can not be in the page (minus vpad) */
            else if(scrl_coords.y2 < page_coords.y2 - page_style->body.padding.bottom) {
                new_y = lv_area_get_height(&page_coords) - lv_area_get_height(&scrl_coords) -
                        page_style->body.padding.bottom; /* Bottom align */
                refr_y = true;
#if LV_USE_ANIMATION
                if(page_ext->edge_flash.enabled && page_ext->edge_flash.left_ip == 0 &&
                   page_ext->edge_flash.right_ip == 0 && page_ext->edge_flash.top_ip == 0 &&
                   page_ext->edge_flash.bottom_ip == 0) {
                    lv_page_start_edge_flash(page);
                    page_ext->edge_flash.bottom_ip = 1;
                }
#endif
            } else if(scrl_coords.y1 > page_coords.y1 + page_style->body.padding.top) {
                new_y  = page_style->body.padding.top; /*Top align*/
                refr_y = true;
#if LV_USE_ANIMATION
                if(page_ext->edge_flash.enabled && page_ext->edge_flash.left_ip == 0 &&
                   page_ext->edge_flash.right_ip == 0 && page_ext->edge_flash.top_ip == 0 &&
                   page_ext->edge_flash.bottom_ip == 0) {
                    lv_page_start_edge_flash(page);
                    page_ext->edge_flash.top_ip = 1;
                }
#endif
            }
        }

        if(refr_x || refr_y) {
            lv_obj_set_pos(scrl, new_x, new_y);

            if(page_ext->scroll_prop_ip) {
                if(refr_y) lv_obj_set_y(page_parent, lv_obj_get_y(page_parent) + diff_y);
                if(refr_x) lv_obj_set_x(page_parent, lv_obj_get_x(page_parent) + diff_x);
            }
        }

        lv_page_sb_refresh(page);
    } else if(sign == LV_SIGNAL_DRAG_END) {

        /*Scroll propagation is finished on drag end*/
        page_ext->scroll_prop_ip = 0;

        /*Hide scrollbars if required*/
        if(page_ext->sb.mode == LV_SB_MODE_DRAG) {
            lv_disp_t * disp = lv_obj_get_disp(page);
            lv_area_t sb_area_tmp;
            if(page_ext->sb.hor_draw) {
                lv_area_copy(&sb_area_tmp, &page_ext->sb.hor_area);
                sb_area_tmp.x1 += page->coords.x1;
                sb_area_tmp.y1 += page->coords.y1;
                sb_area_tmp.x2 += page->coords.x1;
                sb_area_tmp.y2 += page->coords.y1;
                lv_inv_area(disp, &sb_area_tmp);
                page_ext->sb.hor_draw = 0;
            }
            if(page_ext->sb.ver_draw) {
                lv_area_copy(&sb_area_tmp, &page_ext->sb.ver_area);
                sb_area_tmp.x1 += page->coords.x1;
                sb_area_tmp.y1 += page->coords.y1;
                sb_area_tmp.x2 += page->coords.x1;
                sb_area_tmp.y2 += page->coords.y1;
                lv_inv_area(disp, &sb_area_tmp);
                page_ext->sb.ver_draw = 0;
            }
        }
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x4cca8(%rip), %rax     # 0x89538
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 0x3c8b7
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x3d113
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x3c8d8
movq -0x20(%rbp), %rdi
leaq 0x2f84a(%rip), %rsi     # 0x6c115
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x3d113
movq -0x10(%rbp), %rdi
callq 0x71b0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa080
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x40(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x2, %eax
jne 0x3cf68
movq -0x10(%rbp), %rdi
callq 0x7350
movw %ax, -0x42(%rbp)
movq -0x10(%rbp), %rdi
callq 0x73c0
movw %ax, -0x44(%rbp)
movb $0x0, -0x45(%rbp)
movb $0x0, -0x46(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x56(%rbp), %rsi
callq 0x7fb0
movq -0x30(%rbp), %rdi
leaq -0x4e(%rbp), %rsi
callq 0x7fb0
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movswl 0x20(%rax), %eax
movq -0x60(%rbp), %rcx
movswl (%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x62(%rbp)
movq -0x10(%rbp), %rax
movswl 0x22(%rax), %eax
movq -0x60(%rbp), %rcx
movswl 0x2(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x64(%rbp)
movq -0x38(%rbp), %rax
movswl 0x1a(%rax), %eax
movq -0x38(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x66(%rbp)
movq -0x38(%rbp), %rax
movswl 0x16(%rax), %eax
movq -0x38(%rbp), %rcx
movswl 0x18(%rcx), %ecx
addl %ecx, %eax
movw %ax, -0x68(%rbp)
movq -0x30(%rbp), %rdi
callq 0x71b0
movq %rax, -0x70(%rbp)
callq 0x4b70
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
leaq -0x7c(%rbp), %rsi
callq 0x4e20
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3caac
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3caac
movq -0x78(%rbp), %rdi
callq 0x4dc0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3caac
movswl -0x7a(%rbp), %eax
cmpl $0x0, %eax
jle 0x3ca2c
movswl -0x54(%rbp), %eax
movswl -0x4c(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
je 0x3ca4b
movswl -0x7a(%rbp), %eax
cmpl $0x0, %eax
jge 0x3caaa
movswl -0x50(%rbp), %eax
movswl -0x48(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x18(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jne 0x3caaa
movswl -0x7c(%rbp), %eax
cmpl $0x0, %eax
jle 0x3ca6a
movswl -0x56(%rbp), %eax
movswl -0x4e(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x1a(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
je 0x3ca89
movswl -0x7c(%rbp), %eax
cmpl $0x0, %eax
jge 0x3caaa
movswl -0x52(%rbp), %eax
movswl -0x4a(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x1c(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jne 0x3caaa
movq -0x70(%rbp), %rdi
callq 0x71b0
cmpq $0x0, %rax
je 0x3caa8
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %cl
andb $-0x3, %cl
orb $0x2, %cl
movb %cl, 0x4a(%rax)
jmp 0x3caaa
jmp 0x3caac
leaq -0x56(%rbp), %rdi
callq 0x3f610
cwtl
movswl -0x66(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x94(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x3f610
movw %ax, %cx
movl -0x94(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jg 0x3cb06
movswl -0x56(%rbp), %eax
movswl -0x4e(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x1a(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
je 0x3cb01
movq -0x38(%rbp), %rax
movw 0x1a(%rax), %ax
movw %ax, -0x42(%rbp)
movb $0x1, -0x45(%rbp)
jmp 0x3ccb7
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3cb3b
movswl -0x7c(%rbp), %eax
movswl -0x62(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3cb36
movq -0x60(%rbp), %rax
movswl (%rax), %eax
movswl -0x4e(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0x42(%rbp)
movb $0x1, -0x45(%rbp)
jmp 0x3ccb5
movswl -0x52(%rbp), %eax
movswl -0x4a(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x1c(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jge 0x3cc0c
leaq -0x4e(%rbp), %rdi
callq 0x3f610
cwtl
movl %eax, -0x98(%rbp)
leaq -0x56(%rbp), %rdi
callq 0x3f610
movw %ax, %cx
movl -0x98(%rbp), %eax
movswl %cx, %ecx
subl %ecx, %eax
movq -0x38(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x42(%rbp)
movb $0x1, -0x45(%rbp)
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3cc07
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cc07
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cc07
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cc07
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cc07
movq -0x30(%rbp), %rdi
callq 0x3f410
movq -0x40(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x9, %cl
orb $0x8, %cl
movb %cl, 0x40(%rax)
jmp 0x3ccb3
movswl -0x56(%rbp), %eax
movswl -0x4e(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x1a(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
jle 0x3ccb1
movq -0x38(%rbp), %rax
movw 0x1a(%rax), %ax
movw %ax, -0x42(%rbp)
movb $0x1, -0x45(%rbp)
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3ccaf
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ccaf
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ccaf
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ccaf
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ccaf
movq -0x30(%rbp), %rdi
callq 0x3f410
movq -0x40(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x11, %cl
orb $0x10, %cl
movb %cl, 0x40(%rax)
jmp 0x3ccb1
jmp 0x3ccb3
jmp 0x3ccb5
jmp 0x3ccb7
leaq -0x56(%rbp), %rdi
callq 0x3f630
cwtl
movswl -0x68(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x9c(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x3f630
movw %ax, %cx
movl -0x9c(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jg 0x3cd11
movswl -0x54(%rbp), %eax
movswl -0x4c(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
je 0x3cd0c
movq -0x38(%rbp), %rax
movw 0x16(%rax), %ax
movw %ax, -0x44(%rbp)
movb $0x1, -0x46(%rbp)
jmp 0x3cec3
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3cd47
movswl -0x7a(%rbp), %eax
movswl -0x64(%rbp), %ecx
cmpl %ecx, %eax
jne 0x3cd42
movq -0x60(%rbp), %rax
movswl 0x2(%rax), %eax
movswl -0x4c(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0x44(%rbp)
movb $0x1, -0x46(%rbp)
jmp 0x3cec1
movswl -0x50(%rbp), %eax
movswl -0x48(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x18(%rdx), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jge 0x3ce18
leaq -0x4e(%rbp), %rdi
callq 0x3f630
cwtl
movl %eax, -0xa0(%rbp)
leaq -0x56(%rbp), %rdi
callq 0x3f630
movw %ax, %cx
movl -0xa0(%rbp), %eax
movswl %cx, %ecx
subl %ecx, %eax
movq -0x38(%rbp), %rcx
movswl 0x18(%rcx), %ecx
subl %ecx, %eax
movw %ax, -0x44(%rbp)
movb $0x1, -0x46(%rbp)
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3ce13
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ce13
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ce13
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ce13
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3ce13
movq -0x30(%rbp), %rdi
callq 0x3f410
movq -0x40(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x5, %cl
orb $0x4, %cl
movb %cl, 0x40(%rax)
jmp 0x3cebf
movswl -0x54(%rbp), %eax
movswl -0x4c(%rbp), %ecx
movq -0x38(%rbp), %rdx
movswl 0x16(%rdx), %edx
addl %edx, %ecx
cmpl %ecx, %eax
jle 0x3cebd
movq -0x38(%rbp), %rax
movw 0x16(%rax), %ax
movw %ax, -0x44(%rbp)
movb $0x1, -0x46(%rbp)
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x3cebb
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cebb
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cebb
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cebb
movq -0x40(%rbp), %rax
movb 0x40(%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3cebb
movq -0x30(%rbp), %rdi
callq 0x3f410
movq -0x40(%rbp), %rax
movb 0x40(%rax), %cl
andb $-0x3, %cl
orb $0x2, %cl
movb %cl, 0x40(%rax)
jmp 0x3cebd
jmp 0x3cebf
jmp 0x3cec1
jmp 0x3cec3
testb $0x1, -0x45(%rbp)
jne 0x3ced3
testb $0x1, -0x46(%rbp)
je 0x3cf5a
movq -0x10(%rbp), %rdi
movw -0x42(%rbp), %ax
movswl %ax, %esi
movswl -0x44(%rbp), %edx
callq 0x71f0
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3cf58
testb $0x1, -0x46(%rbp)
je 0x3cf26
movq -0x70(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x70(%rbp), %rdi
callq 0x73c0
movq -0xa8(%rbp), %rdi
cwtl
movswl -0x64(%rbp), %ecx
addl %ecx, %eax
movswl %ax, %esi
callq 0x8120
testb $0x1, -0x45(%rbp)
je 0x3cf56
movq -0x70(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x70(%rbp), %rdi
callq 0x7350
movq -0xb0(%rbp), %rdi
cwtl
movswl -0x62(%rbp), %ecx
addl %ecx, %eax
movswl %ax, %esi
callq 0x80b0
jmp 0x3cf58
jmp 0x3cf5a
movq -0x30(%rbp), %rdi
callq 0x3e1c0
jmp 0x3d10d
movzbl -0x11(%rbp), %eax
cmpl $0xf, %eax
jne 0x3d10b
movq -0x40(%rbp), %rax
movb 0x4a(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x4a(%rax)
movq -0x40(%rbp), %rax
movb 0x28(%rax), %al
shrb $0x2, %al
andb $0x7, %al
movzbl %al, %eax
cmpl $0x2, %eax
jne 0x3d109
movq -0x30(%rbp), %rdi
callq 0x7a40
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rax
movb 0x28(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3d059
movq -0x40(%rbp), %rsi
addq $0x10, %rsi
addq $0x8, %rsi
leaq -0x90(%rbp), %rdi
callq 0x3f560
movq -0x30(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x90(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movswl 0x22(%rax), %ecx
movswl -0x8e(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8e(%rbp)
movq -0x30(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x8c(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8c(%rbp)
movq -0x30(%rbp), %rax
movswl 0x22(%rax), %ecx
movswl -0x8a(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8a(%rbp)
movq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xadd0
movq -0x40(%rbp), %rax
movb 0x28(%rax), %cl
andb $-0x2, %cl
orb $0x0, %cl
movb %cl, 0x28(%rax)
movq -0x40(%rbp), %rax
movb 0x28(%rax), %al
shrb %al
andb $0x1, %al
cmpb $0x0, %al
je 0x3d107
movq -0x40(%rbp), %rsi
addq $0x10, %rsi
addq $0x10, %rsi
leaq -0x90(%rbp), %rdi
callq 0x3f560
movq -0x30(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x90(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movswl 0x22(%rax), %ecx
movswl -0x8e(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8e(%rbp)
movq -0x30(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x8c(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8c(%rbp)
movq -0x30(%rbp), %rax
movswl 0x22(%rax), %ecx
movswl -0x8a(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x8a(%rbp)
movq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xadd0
movq -0x40(%rbp), %rax
movb 0x28(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x28(%rax)
jmp 0x3d109
jmp 0x3d10b
jmp 0x3d10d
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0xb0, %rsp
popq %rbp
retq
nop