// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_slider.c
// Function: lv_slider_design
static bool lv_slider_design(lv_obj_t * slider, const lv_area_t * mask, lv_design_mode_t mode)
{
    /*Return false if the object is not covers the mask_p area*/
    if(mode == LV_DESIGN_COVER_CHK) {
        return false;
    }
    /*Draw the object*/
    else if(mode == LV_DESIGN_DRAW_MAIN) {
        lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider);

        const lv_style_t * style_bg    = lv_slider_get_style(slider, LV_SLIDER_STYLE_BG);
        const lv_style_t * style_knob  = lv_slider_get_style(slider, LV_SLIDER_STYLE_KNOB);
        const lv_style_t * style_indic = lv_slider_get_style(slider, LV_SLIDER_STYLE_INDIC);

        lv_opa_t opa_scale = lv_obj_get_opa_scale(slider);

        lv_coord_t slider_w = lv_area_get_width(&slider->coords);
        lv_coord_t slider_h = lv_area_get_height(&slider->coords);

        /*Draw the bar*/
        lv_area_t area_bg;
        lv_area_copy(&area_bg, &slider->coords);

        /*Be sure at least LV_SLIDER_SIZE_MIN  size will remain*/
        lv_coord_t pad_top_bg    = style_bg->body.padding.top;
        lv_coord_t pad_bottom_bg = style_bg->body.padding.bottom;
        lv_coord_t pad_left_bg   = style_bg->body.padding.left;
        lv_coord_t pad_right_bg  = style_bg->body.padding.right;
        if(pad_top_bg + pad_bottom_bg + LV_SLIDER_SIZE_MIN > lv_area_get_height(&area_bg)) {
            pad_top_bg    = (lv_area_get_height(&area_bg) - LV_SLIDER_SIZE_MIN) >> 1;
            pad_bottom_bg = pad_top_bg;
        }
        if(pad_left_bg + pad_right_bg + LV_SLIDER_SIZE_MIN > lv_area_get_width(&area_bg)) {
            pad_left_bg  = (lv_area_get_width(&area_bg) - LV_SLIDER_SIZE_MIN) >> 1;
            pad_right_bg = (lv_area_get_width(&area_bg) - LV_SLIDER_SIZE_MIN) >> 1;
        }

        if(ext->knob_in) { /*Enable extra size if the knob is inside */
            area_bg.x1 += pad_left_bg;
            area_bg.x2 -= pad_right_bg;
            area_bg.y1 += pad_top_bg;
            area_bg.y2 -= pad_bottom_bg;
        } else {                                                   /*Let space only in the perpendicular directions*/
            area_bg.x1 += slider_w < slider_h ? pad_left_bg : 0;   /*Pad only for vertical slider*/
            area_bg.x2 -= slider_w < slider_h ? pad_right_bg : 0;  /*Pad only for vertical slider*/
            area_bg.y1 += slider_w > slider_h ? pad_top_bg : 0;    /*Pad only for horizontal slider*/
            area_bg.y2 -= slider_w > slider_h ? pad_bottom_bg : 0; /*Pad only for horizontal slider*/
        }

#if LV_USE_GROUP == 0
        lv_draw_rect(&area_bg, mask, style_bg, lv_obj_get_opa_scale(slider));
#else
        /* Draw the borders later if the slider is focused.
         * At value = 100% the indicator can cover to whole background and the focused style won't
         * be visible*/
        if(lv_obj_is_focused(slider)) {
            lv_style_t style_tmp;
            lv_style_copy(&style_tmp, style_bg);
            style_tmp.body.border.width = 0;
            lv_draw_rect(&area_bg, mask, &style_tmp, opa_scale);
        } else {
            lv_draw_rect(&area_bg, mask, style_bg, opa_scale);
        }
#endif

        /*Draw the indicator*/
        lv_area_t area_indic;
        lv_area_copy(&area_indic, &area_bg);

        /*Be sure at least ver pad/hor pad width indicator will remain*/
        lv_coord_t pad_top_indic    = style_indic->body.padding.top;
        lv_coord_t pad_bottom_indic = style_indic->body.padding.bottom;
        lv_coord_t pad_left_indic   = style_indic->body.padding.left;
        lv_coord_t pad_right_indic  = style_indic->body.padding.right;
        if(pad_top_indic + pad_bottom_indic + LV_SLIDER_SIZE_MIN > lv_area_get_height(&area_bg)) {
            pad_top_indic    = (lv_area_get_height(&area_bg) - LV_SLIDER_SIZE_MIN) >> 1;
            pad_bottom_indic = pad_top_indic;
        }
        if(pad_left_indic + pad_right_indic + LV_SLIDER_SIZE_MIN > lv_area_get_width(&area_bg)) {
            pad_left_indic  = (lv_area_get_width(&area_bg) - LV_SLIDER_SIZE_MIN) >> 1;
            pad_right_indic = pad_left_indic;
        }

        area_indic.x1 += pad_left_indic;
        area_indic.x2 -= pad_right_indic;
        area_indic.y1 += pad_top_indic;
        area_indic.y2 -= pad_bottom_indic;

        lv_coord_t cur_value = lv_slider_get_value(slider);
        lv_coord_t min_value = lv_slider_get_min_value(slider);
        lv_coord_t max_value = lv_slider_get_max_value(slider);

        /*If dragged draw to the drag position*/
        if(ext->drag_value != LV_SLIDER_NOT_PRESSED) cur_value = ext->drag_value;
        bool sym = false;
        if(ext->bar.sym && ext->bar.min_value < 0 && ext->bar.max_value > 0) sym = true;

        if(slider_w >= slider_h) {
            lv_coord_t indic_w = lv_area_get_width(&area_indic);
#if LV_USE_ANIMATION
            if(ext->bar.anim_state != LV_BAR_ANIM_STATE_INV) {
                /*Calculate the coordinates of anim. start and end*/
                lv_coord_t anim_start_x =
                    (int32_t)((int32_t)indic_w * (ext->bar.anim_start - min_value)) / (max_value - min_value);
                lv_coord_t anim_end_x =
                    (int32_t)((int32_t)indic_w * (ext->bar.anim_end - min_value)) / (max_value - min_value);

                /*Calculate the real position based on `anim_state` (between `anim_start` and
                 * `anim_end`)*/
                area_indic.x2 = anim_start_x + (((anim_end_x - anim_start_x) * ext->bar.anim_state) >> 8);
            } else
#endif
            {
                area_indic.x2 = (int32_t)((int32_t)indic_w * (cur_value - min_value)) / (max_value - min_value);
            }

            area_indic.x2 = area_indic.x1 + area_indic.x2 - 1;
            if(sym) {
                /*Calculate the coordinate of the zero point*/
                lv_coord_t zero;
                zero = area_indic.x1 + (-ext->bar.min_value * slider_w) / (ext->bar.max_value - ext->bar.min_value);
                if(area_indic.x2 > zero)
                    area_indic.x1 = zero;
                else {
                    area_indic.x1 = area_indic.x2;
                    area_indic.x2 = zero;
                }
            }

            /*Draw the indicator but don't draw an ugly 1px wide rectangle on the left on min.
             * value*/
            if(area_indic.x1 != area_indic.x2) lv_draw_rect(&area_indic, mask, style_indic, opa_scale);

        } else {
            lv_coord_t indic_h = lv_area_get_height(&area_indic);
#if LV_USE_ANIMATION
            if(ext->bar.anim_state != LV_BAR_ANIM_STATE_INV) {
                /*Calculate the coordinates of anim. start and end*/
                lv_coord_t anim_start_y =
                    (int32_t)((int32_t)indic_h * (ext->bar.anim_start - min_value)) / (max_value - min_value);
                lv_coord_t anim_end_y =
                    (int32_t)((int32_t)indic_h * (ext->bar.anim_end - min_value)) / (max_value - min_value);

                /*Calculate the real position based on `anim_state` (between `anim_start` and
                 * `anim_end`)*/
                area_indic.y1 = anim_start_y + (((anim_end_y - anim_start_y) * ext->bar.anim_state) >> 8);
            } else
#endif
            {
                area_indic.y1 = (int32_t)((int32_t)indic_h * (cur_value - min_value)) / (max_value - min_value);
            }

            area_indic.y1 = area_indic.y2 - area_indic.y1 + 1;

            if(sym) {
                /*Calculate the coordinate of the zero point*/
                lv_coord_t zero;
                zero = area_indic.y2 - (-ext->bar.min_value * slider_h) / (ext->bar.max_value - ext->bar.min_value);
                if(area_indic.y1 < zero)
                    area_indic.y2 = zero;
                else {
                    area_indic.y2 = area_indic.y1;
                    area_indic.y1 = zero;
                }
            }

            /*Draw the indicator but don't draw an ugly 1px height rectangle on the bottom on min.
             * value*/
            if(area_indic.x1 != area_indic.x2) lv_draw_rect(&area_indic, mask, style_indic, opa_scale);
        }

        /*Before the knob add the border if required*/
#if LV_USE_GROUP
        /* Draw the borders later if the bar is focused.
         * At value = 100% the indicator can cover to whole background and the focused style won't
         * be visible*/
        if(lv_obj_is_focused(slider)) {
            lv_style_t style_tmp;
            lv_style_copy(&style_tmp, style_bg);
            style_tmp.body.opa          = LV_OPA_TRANSP;
            style_tmp.body.shadow.width = 0;
            lv_draw_rect(&area_bg, mask, &style_tmp, opa_scale);
        }
#endif

        /*Draw the knob*/
        lv_area_t knob_area;
        lv_area_copy(&knob_area, &slider->coords);

        if(slider_w >= slider_h) {
            if(ext->knob_in == 0) {
                if(sym == false) {
                    knob_area.x1 = area_indic.x2 - slider_h / 2;
                } else {
                    if(cur_value > 0) knob_area.x1 = area_indic.x2 - slider_h / 2;
                    else knob_area.x1 = area_indic.x1 - slider_h / 2;
                }
                knob_area.x2 = knob_area.x1 + slider_h - 1;
            } else {
#if LV_USE_ANIMATION
                if(ext->bar.anim_state != LV_BAR_ANIM_STATE_INV) {
                    lv_coord_t w = slider_w - slider_h - 1;
                    lv_coord_t anim_start_x =
                        (int32_t)((int32_t)w * (ext->bar.anim_start - min_value)) / (max_value - min_value);
                    lv_coord_t anim_end_x =
                        (int32_t)((int32_t)w * (ext->bar.anim_end - min_value)) / (max_value - min_value);

                    /*Calculate the real position based on `anim_state` (between `anim_start` and
                     * `anim_end`)*/
                    knob_area.x1 = anim_start_x + (((anim_end_x - anim_start_x) * ext->bar.anim_state) >> 8);
                } else
#endif
                {
                    knob_area.x1 = (int32_t)((int32_t)(slider_w - slider_h - 1) * (cur_value - min_value)) /
                                   (max_value - min_value);
                }

                knob_area.x1 += slider->coords.x1;
                knob_area.x2 = knob_area.x1 + slider_h - 1;
            }

            knob_area.y1 = slider->coords.y1;
            knob_area.y2 = slider->coords.y2;
        } else {
            if(ext->knob_in == 0) {
                if(sym == false) {
                    knob_area.y1 = area_indic.y1 - slider_w / 2;
                } else {
                    if(cur_value > 0)  knob_area.y1 = area_indic.y1 - slider_w / 2;
                    else  knob_area.y1 = area_indic.y2 - slider_w / 2;
                }
                knob_area.y2 = knob_area.y1 + slider_w - 1;
            } else {
#if LV_USE_ANIMATION
                if(ext->bar.anim_state != LV_BAR_ANIM_STATE_INV) {
                    lv_coord_t h = slider_h - slider_w - 1;
                    lv_coord_t anim_start_x =
                        (int32_t)((int32_t)h * (ext->bar.anim_start - min_value)) / (max_value - min_value);
                    lv_coord_t anim_end_x =
                        (int32_t)((int32_t)h * (ext->bar.anim_end - min_value)) / (max_value - min_value);

                    /*Calculate the real position based on `anim_state` (between `anim_start` and
                     * `anim_end`)*/
                    knob_area.y2 = anim_start_x + (((anim_end_x - anim_start_x) * ext->bar.anim_state) >> 8);
                } else
#endif
                {
                    knob_area.y2 = (int32_t)((int32_t)(slider_h - slider_w - 1) * (cur_value - min_value)) /
                                   (max_value - min_value);
                }

                knob_area.y2 = slider->coords.y2 - knob_area.y2;
                knob_area.y1 = knob_area.y2 - slider_w - 1;
            }
            knob_area.x1 = slider->coords.x1;
            knob_area.x2 = slider->coords.x2;
        }
        lv_draw_rect(&knob_area, mask, style_knob, opa_scale);
    }
    /*Post draw when the children are drawn*/
    else if(mode == LV_DESIGN_DRAW_POST) {
    }

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
cmpl $0x2, %eax
jne 0x2f5ba
movb $0x0, -0x1(%rbp)
jmp 0x302c7
movzbl -0x19(%rbp), %eax
cmpl $0x0, %eax
jne 0x302b4
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x30560
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x30560
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x30560
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa710
movb %al, -0x41(%rbp)
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
callq 0x30610
movw %ax, -0x44(%rbp)
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
callq 0x30630
movw %ax, -0x46(%rbp)
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
leaq -0x4e(%rbp), %rdi
callq 0x30650
movq -0x30(%rbp), %rax
movw 0x16(%rax), %ax
movw %ax, -0x50(%rbp)
movq -0x30(%rbp), %rax
movw 0x18(%rax), %ax
movw %ax, -0x52(%rbp)
movq -0x30(%rbp), %rax
movw 0x1a(%rax), %ax
movw %ax, -0x54(%rbp)
movq -0x30(%rbp), %rax
movw 0x1c(%rax), %ax
movw %ax, -0x56(%rbp)
movswl -0x50(%rbp), %eax
movswl -0x52(%rbp), %ecx
addl %ecx, %eax
addl $0x4, %eax
movl %eax, -0x128(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x30630
movw %ax, %cx
movl -0x128(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jle 0x2f6bd
leaq -0x4e(%rbp), %rdi
callq 0x30630
cwtl
subl $0x4, %eax
sarl %eax
movw %ax, -0x50(%rbp)
movw -0x50(%rbp), %ax
movw %ax, -0x52(%rbp)
movswl -0x54(%rbp), %eax
movswl -0x56(%rbp), %ecx
addl %ecx, %eax
addl $0x4, %eax
movl %eax, -0x12c(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x30610
movw %ax, %cx
movl -0x12c(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jle 0x2f70f
leaq -0x4e(%rbp), %rdi
callq 0x30610
cwtl
subl $0x4, %eax
sarl %eax
movw %ax, -0x54(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x30610
cwtl
subl $0x4, %eax
sarl %eax
movw %ax, -0x56(%rbp)
movq -0x28(%rbp), %rax
movb 0x22(%rax), %al
andb $0x1, %al
cmpb $0x0, %al
je 0x2f759
movswl -0x54(%rbp), %ecx
movswl -0x4e(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x4e(%rbp)
movswl -0x56(%rbp), %ecx
movswl -0x4a(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x4a(%rbp)
movswl -0x50(%rbp), %ecx
movswl -0x4c(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x4c(%rbp)
movswl -0x52(%rbp), %ecx
movswl -0x48(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x48(%rbp)
jmp 0x2f821
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jge 0x2f771
movswl -0x54(%rbp), %eax
movl %eax, -0x130(%rbp)
jmp 0x2f77b
xorl %eax, %eax
movl %eax, -0x130(%rbp)
jmp 0x2f77b
movl -0x130(%rbp), %ecx
movswl -0x4e(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x4e(%rbp)
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jge 0x2f7a3
movswl -0x56(%rbp), %eax
movl %eax, -0x134(%rbp)
jmp 0x2f7ad
xorl %eax, %eax
movl %eax, -0x134(%rbp)
jmp 0x2f7ad
movl -0x134(%rbp), %ecx
movswl -0x4a(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x4a(%rbp)
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jle 0x2f7d5
movswl -0x50(%rbp), %eax
movl %eax, -0x138(%rbp)
jmp 0x2f7df
xorl %eax, %eax
movl %eax, -0x138(%rbp)
jmp 0x2f7df
movl -0x138(%rbp), %ecx
movswl -0x4c(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x4c(%rbp)
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jle 0x2f807
movswl -0x52(%rbp), %eax
movl %eax, -0x13c(%rbp)
jmp 0x2f811
xorl %eax, %eax
movl %eax, -0x13c(%rbp)
jmp 0x2f811
movl -0x13c(%rbp), %ecx
movswl -0x48(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0xaa20
testb $0x1, %al
jne 0x2f830
jmp 0x2f863
movq -0x30(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0xc550
movw $0x0, -0x94(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x4e(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
jmp 0x2f878
movq -0x18(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x4e(%rbp), %rdi
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
leaq -0xa8(%rbp), %rdi
leaq -0x4e(%rbp), %rsi
callq 0x30650
movq -0x40(%rbp), %rax
movw 0x16(%rax), %ax
movw %ax, -0xaa(%rbp)
movq -0x40(%rbp), %rax
movw 0x18(%rax), %ax
movw %ax, -0xac(%rbp)
movq -0x40(%rbp), %rax
movw 0x1a(%rax), %ax
movw %ax, -0xae(%rbp)
movq -0x40(%rbp), %rax
movw 0x1c(%rax), %ax
movw %ax, -0xb0(%rbp)
movswl -0xaa(%rbp), %eax
movswl -0xac(%rbp), %ecx
addl %ecx, %eax
addl $0x4, %eax
movl %eax, -0x140(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x30630
movw %ax, %cx
movl -0x140(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jle 0x2f91a
leaq -0x4e(%rbp), %rdi
callq 0x30630
cwtl
subl $0x4, %eax
sarl %eax
movw %ax, -0xaa(%rbp)
movw -0xaa(%rbp), %ax
movw %ax, -0xac(%rbp)
movswl -0xae(%rbp), %eax
movswl -0xb0(%rbp), %ecx
addl %ecx, %eax
addl $0x4, %eax
movl %eax, -0x144(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x30610
movw %ax, %cx
movl -0x144(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jle 0x2f970
leaq -0x4e(%rbp), %rdi
callq 0x30610
cwtl
subl $0x4, %eax
sarl %eax
movw %ax, -0xae(%rbp)
movw -0xae(%rbp), %ax
movw %ax, -0xb0(%rbp)
movswl -0xae(%rbp), %ecx
movswl -0xa8(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xa8(%rbp)
movswl -0xb0(%rbp), %ecx
movswl -0xa4(%rbp), %eax
subl %ecx, %eax
movw %ax, -0xa4(%rbp)
movswl -0xaa(%rbp), %ecx
movswl -0xa6(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xa6(%rbp)
movswl -0xac(%rbp), %ecx
movswl -0xa2(%rbp), %eax
subl %ecx, %eax
movw %ax, -0xa2(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30430
movw %ax, -0xb2(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30670
movw %ax, -0xb4(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30690
movw %ax, -0xb6(%rbp)
movq -0x28(%rbp), %rax
movswl 0x20(%rax), %eax
cmpl $0xffff8000, %eax       # imm = 0xFFFF8000
je 0x2fa1a
movq -0x28(%rbp), %rax
movw 0x20(%rax), %ax
movw %ax, -0xb2(%rbp)
movb $0x0, -0xb7(%rbp)
movq -0x28(%rbp), %rax
movb 0xe(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2fa53
movq -0x28(%rbp), %rax
movswl 0x2(%rax), %eax
cmpl $0x0, %eax
jge 0x2fa53
movq -0x28(%rbp), %rax
movswl 0x4(%rax), %eax
cmpl $0x0, %eax
jle 0x2fa53
movb $0x1, -0xb7(%rbp)
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jl 0x2fc31
leaq -0xa8(%rbp), %rdi
callq 0x30610
movw %ax, -0xba(%rbp)
movq -0x28(%rbp), %rax
movswl 0xa(%rax), %eax
cmpl $-0x1, %eax
je 0x2fb21
movswl -0xba(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x6(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xbc(%rbp)
movswl -0xba(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x8(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xbe(%rbp)
movswl -0xbc(%rbp), %eax
movswl -0xbe(%rbp), %ecx
movswl -0xbc(%rbp), %edx
subl %edx, %ecx
movq -0x28(%rbp), %rdx
movswl 0xa(%rdx), %edx
imull %edx, %ecx
sarl $0x8, %ecx
addl %ecx, %eax
movw %ax, -0xa4(%rbp)
jmp 0x2fb55
movswl -0xba(%rbp), %eax
movswl -0xb2(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xa4(%rbp)
movswl -0xa8(%rbp), %eax
movswl -0xa4(%rbp), %ecx
addl %ecx, %eax
subl $0x1, %eax
movw %ax, -0xa4(%rbp)
testb $0x1, -0xb7(%rbp)
je 0x2fc02
movswl -0xa8(%rbp), %eax
movl %eax, -0x148(%rbp)
movq -0x28(%rbp), %rax
movswl 0x2(%rax), %ecx
xorl %eax, %eax
subl %ecx, %eax
movswl -0x44(%rbp), %ecx
imull %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x4(%rcx), %ecx
movq -0x28(%rbp), %rdx
movswl 0x2(%rdx), %edx
subl %edx, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x148(%rbp), %eax
addl %ecx, %eax
movw %ax, -0xc0(%rbp)
movswl -0xa4(%rbp), %eax
movswl -0xc0(%rbp), %ecx
cmpl %ecx, %eax
jle 0x2fbe4
movw -0xc0(%rbp), %ax
movw %ax, -0xa8(%rbp)
jmp 0x2fc00
movw -0xa4(%rbp), %ax
movw %ax, -0xa8(%rbp)
movw -0xc0(%rbp), %ax
movw %ax, -0xa4(%rbp)
jmp 0x2fc02
movswl -0xa8(%rbp), %eax
movswl -0xa4(%rbp), %ecx
cmpl %ecx, %eax
je 0x2fc2c
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
jmp 0x2fdfc
leaq -0xa8(%rbp), %rdi
callq 0x30630
movw %ax, -0xc2(%rbp)
movq -0x28(%rbp), %rax
movswl 0xa(%rax), %eax
cmpl $-0x1, %eax
je 0x2fcef
movswl -0xc2(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x6(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xc4(%rbp)
movswl -0xc2(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x8(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xc6(%rbp)
movswl -0xc4(%rbp), %eax
movswl -0xc6(%rbp), %ecx
movswl -0xc4(%rbp), %edx
subl %edx, %ecx
movq -0x28(%rbp), %rdx
movswl 0xa(%rdx), %edx
imull %edx, %ecx
sarl $0x8, %ecx
addl %ecx, %eax
movw %ax, -0xa6(%rbp)
jmp 0x2fd23
movswl -0xc2(%rbp), %eax
movswl -0xb2(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0xa6(%rbp)
movswl -0xa2(%rbp), %eax
movswl -0xa6(%rbp), %ecx
subl %ecx, %eax
addl $0x1, %eax
movw %ax, -0xa6(%rbp)
testb $0x1, -0xb7(%rbp)
je 0x2fdd0
movswl -0xa2(%rbp), %eax
movl %eax, -0x14c(%rbp)
movq -0x28(%rbp), %rax
movswl 0x2(%rax), %ecx
xorl %eax, %eax
subl %ecx, %eax
movswl -0x46(%rbp), %ecx
imull %ecx, %eax
movq -0x28(%rbp), %rcx
movswl 0x4(%rcx), %ecx
movq -0x28(%rbp), %rdx
movswl 0x2(%rdx), %edx
subl %edx, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x14c(%rbp), %eax
subl %ecx, %eax
movw %ax, -0xc8(%rbp)
movswl -0xa6(%rbp), %eax
movswl -0xc8(%rbp), %ecx
cmpl %ecx, %eax
jge 0x2fdb2
movw -0xc8(%rbp), %ax
movw %ax, -0xa2(%rbp)
jmp 0x2fdce
movw -0xa6(%rbp), %ax
movw %ax, -0xa2(%rbp)
movw -0xc8(%rbp), %ax
movw %ax, -0xa6(%rbp)
jmp 0x2fdd0
movswl -0xa8(%rbp), %eax
movswl -0xa4(%rbp), %ecx
cmpl %ecx, %eax
je 0x2fdfa
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
jmp 0x2fdfc
movq -0x10(%rbp), %rdi
callq 0xaa20
testb $0x1, %al
jne 0x2fe0b
jmp 0x2fe43
movq -0x30(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0xc550
movb $0x0, -0x108(%rbp)
movw $0x0, -0xfe(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x4e(%rbp), %rdi
leaq -0x110(%rbp), %rdx
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
leaq -0x118(%rbp), %rdi
callq 0x30650
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
cmpl %ecx, %eax
jl 0x30083
movq -0x28(%rbp), %rax
movb 0x22(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2ff38
movb -0xb7(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x2feb8
movswl -0xa4(%rbp), %eax
movl %eax, -0x150(%rbp)
movswl -0x46(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x150(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x118(%rbp)
jmp 0x2ff1c
movswl -0xb2(%rbp), %eax
cmpl $0x0, %eax
jle 0x2fef0
movswl -0xa4(%rbp), %eax
movl %eax, -0x154(%rbp)
movswl -0x46(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x154(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x118(%rbp)
jmp 0x2ff1a
movswl -0xa8(%rbp), %eax
movl %eax, -0x158(%rbp)
movswl -0x46(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x158(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x118(%rbp)
jmp 0x2ff1c
movswl -0x118(%rbp), %eax
movswl -0x46(%rbp), %ecx
addl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x114(%rbp)
jmp 0x30060
movq -0x28(%rbp), %rax
movswl 0xa(%rax), %eax
cmpl $-0x1, %eax
je 0x2fff7
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
subl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x11a(%rbp)
movswl -0x11a(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x6(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x11c(%rbp)
movswl -0x11a(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x8(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x11e(%rbp)
movswl -0x11c(%rbp), %eax
movswl -0x11e(%rbp), %ecx
movswl -0x11c(%rbp), %edx
subl %edx, %ecx
movq -0x28(%rbp), %rdx
movswl 0xa(%rdx), %edx
imull %edx, %ecx
sarl $0x8, %ecx
addl %ecx, %eax
movw %ax, -0x118(%rbp)
jmp 0x30031
movswl -0x44(%rbp), %eax
movswl -0x46(%rbp), %ecx
subl %ecx, %eax
subl $0x1, %eax
movswl -0xb2(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x118(%rbp)
movq -0x10(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x118(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x118(%rbp)
movswl -0x118(%rbp), %eax
movswl -0x46(%rbp), %ecx
addl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x114(%rbp)
movq -0x10(%rbp), %rax
movw 0x22(%rax), %ax
movw %ax, -0x116(%rbp)
movq -0x10(%rbp), %rax
movw 0x26(%rax), %ax
movw %ax, -0x112(%rbp)
jmp 0x3029a
movq -0x28(%rbp), %rax
movb 0x22(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x30154
movb -0xb7(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x300d4
movswl -0xa6(%rbp), %eax
movl %eax, -0x15c(%rbp)
movswl -0x44(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x15c(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x116(%rbp)
jmp 0x30138
movswl -0xb2(%rbp), %eax
cmpl $0x0, %eax
jle 0x3010c
movswl -0xa6(%rbp), %eax
movl %eax, -0x160(%rbp)
movswl -0x44(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x160(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x116(%rbp)
jmp 0x30136
movswl -0xa2(%rbp), %eax
movl %eax, -0x164(%rbp)
movswl -0x44(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x164(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x116(%rbp)
jmp 0x30138
movswl -0x116(%rbp), %eax
movswl -0x44(%rbp), %ecx
addl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x112(%rbp)
jmp 0x3027c
movq -0x28(%rbp), %rax
movswl 0xa(%rax), %eax
cmpl $-0x1, %eax
je 0x30213
movswl -0x46(%rbp), %eax
movswl -0x44(%rbp), %ecx
subl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x120(%rbp)
movswl -0x120(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x6(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x122(%rbp)
movswl -0x120(%rbp), %eax
movq -0x28(%rbp), %rcx
movswl 0x8(%rcx), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x124(%rbp)
movswl -0x122(%rbp), %eax
movswl -0x124(%rbp), %ecx
movswl -0x122(%rbp), %edx
subl %edx, %ecx
movq -0x28(%rbp), %rdx
movswl 0xa(%rdx), %edx
imull %edx, %ecx
sarl $0x8, %ecx
addl %ecx, %eax
movw %ax, -0x112(%rbp)
jmp 0x3024d
movswl -0x46(%rbp), %eax
movswl -0x44(%rbp), %ecx
subl %ecx, %eax
subl $0x1, %eax
movswl -0xb2(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
imull %ecx, %eax
movswl -0xb6(%rbp), %ecx
movswl -0xb4(%rbp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movw %ax, -0x112(%rbp)
movq -0x10(%rbp), %rax
movswl 0x26(%rax), %eax
movswl -0x112(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0x112(%rbp)
movswl -0x112(%rbp), %eax
movswl -0x44(%rbp), %ecx
subl %ecx, %eax
subl $0x1, %eax
movw %ax, -0x116(%rbp)
movq -0x10(%rbp), %rax
movw 0x20(%rax), %ax
movw %ax, -0x118(%rbp)
movq -0x10(%rbp), %rax
movw 0x24(%rax), %ax
movw %ax, -0x114(%rbp)
movq -0x18(%rbp), %rsi
movq -0x38(%rbp), %rdx
leaq -0x118(%rbp), %rdi
movzbl -0x41(%rbp), %ecx
callq 0x5a9e0
jmp 0x302c1
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x302bf
jmp 0x302bf
jmp 0x302c1
jmp 0x302c3
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
nopw %cs:(%rax,%rax)