// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_cpicker.c
// Function: lv_cpicker_signal
static lv_res_t lv_cpicker_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param)
{
    /* Include the ancient signal function */
    lv_res_t res = ancestor_signal(cpicker, sign, param);
    if(res != LV_RES_OK) return res;
    if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);

    lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);

    if(sign == LV_SIGNAL_CLEANUP) {
        /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
    } else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
        const lv_style_t * style_indic = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_INDICATOR);
        lv_coord_t indic_pad = LV_MATH_MAX(style_indic->body.padding.left, style_indic->body.padding.right);
        indic_pad = LV_MATH_MAX(indic_pad, style_indic->body.padding.top);
        indic_pad = LV_MATH_MAX(indic_pad, style_indic->body.padding.bottom);

        if(ext->type == LV_CPICKER_TYPE_RECT) indic_pad += LV_MATH_MAX(indic_pad, lv_obj_get_height(cpicker) / 2);

        cpicker->ext_draw_pad = LV_MATH_MAX(cpicker->ext_draw_pad, indic_pad);
    } else if(sign == LV_SIGNAL_CORD_CHG) {
        /*Refresh extended draw area to make knob visible*/
        if(lv_obj_get_width(cpicker) != lv_area_get_width(param) ||
           lv_obj_get_height(cpicker) != lv_area_get_height(param)) {
            lv_obj_refresh_ext_draw_pad(cpicker);
            refr_indic_pos(cpicker);
        }
    }  else if(sign == LV_SIGNAL_STYLE_CHG) {
        /*Refresh extended draw area to make knob visible*/
        lv_obj_refresh_ext_draw_pad(cpicker);
        refr_indic_pos(cpicker);
    }
    else if(sign == LV_SIGNAL_CONTROL) {
        uint32_t c = *((uint32_t *)param); /*uint32_t because can be UTF-8*/
        if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
            lv_color_hsv_t hsv_cur;
            hsv_cur = ext->hsv;

            switch(ext->color_mode) {
            case LV_CPICKER_COLOR_MODE_HUE:
                hsv_cur.h = (ext->hsv.h + 1) % 360;
                break;
            case LV_CPICKER_COLOR_MODE_SATURATION:
                hsv_cur.s = (ext->hsv.s + 1) % 100;
                break;
            case LV_CPICKER_COLOR_MODE_VALUE:
                hsv_cur.v = (ext->hsv.v + 1) % 100;
                break;
            }

            if (lv_cpicker_set_hsv(cpicker, hsv_cur)) {
                res = lv_event_send(cpicker, LV_EVENT_VALUE_CHANGED, NULL);
                if(res != LV_RES_OK) return res;
            }
        }
        else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN)  {
            lv_color_hsv_t hsv_cur;
            hsv_cur = ext->hsv;

            switch(ext->color_mode) {
            case LV_CPICKER_COLOR_MODE_HUE:
                hsv_cur.h = ext->hsv.h > 0?(ext->hsv.h - 1) : 360;
                break;
            case LV_CPICKER_COLOR_MODE_SATURATION:
                hsv_cur.s = ext->hsv.s > 0?(ext->hsv.s - 1) : 100;
                break;
            case LV_CPICKER_COLOR_MODE_VALUE:
                hsv_cur.v = ext->hsv.v > 0?(ext->hsv.v - 1) : 100;
                break;
            }

            if (lv_cpicker_set_hsv(cpicker, hsv_cur)) {
                res = lv_event_send(cpicker, LV_EVENT_VALUE_CHANGED, NULL);
                if(res != LV_RES_OK) return res;
            }
        }
    }
    else if(sign == LV_SIGNAL_PRESSED) {
        ext->last_change_time = lv_tick_get();
        lv_indev_get_point(lv_indev_get_act(), &ext->last_press_point);
        res = double_click_reset(cpicker);
        if(res != LV_RES_OK) return res;
    } else if(sign == LV_SIGNAL_PRESSING) {
        lv_indev_t * indev = lv_indev_get_act();
        if(indev == NULL) return res;

        lv_point_t p;
        lv_indev_get_point(indev, &p);

        if((LV_MATH_ABS(p.x - ext->last_press_point.x) > indev->driver.drag_limit / 2) ||
           (LV_MATH_ABS(p.y - ext->last_press_point.y) > indev->driver.drag_limit / 2)) {
            ext->last_change_time = lv_tick_get();
            ext->last_press_point.x = p.x;
            ext->last_press_point.y = p.y;
        }

        p.x -= cpicker->coords.x1;
        p.y -= cpicker->coords.y1;

        /*Ignore pressing in the inner area*/
        uint16_t w = lv_obj_get_width(cpicker);

        int16_t angle = 0;

        if(ext->type == LV_CPICKER_TYPE_RECT) {
            /*If pressed long enough without change go to next color mode*/
            uint32_t diff = lv_tick_elaps(ext->last_change_time);
            if(diff > (uint32_t)indev->driver.long_press_time * 2 && !ext->color_mode_fixed) {
                next_color_mode(cpicker);
                lv_indev_wait_release(lv_indev_get_act());
                return res;
            }

            angle = (p.x * 360) / w;
            if(angle < 0) angle = 0;
            if(angle >= 360) angle = 359;

        } else if(ext->type == LV_CPICKER_TYPE_DISC) {
            const lv_style_t * style_main = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
            lv_coord_t r_in = w / 2;
            p.x -= r_in;
            p.y -= r_in;
            r_in -= style_main->line.width;

            if(r_in > LV_DPI / 2) {
            	r_in -= style_main->line.width; /* to let some sensitive space inside*/

            	if(r_in < LV_DPI / 2) r_in = LV_DPI / 2;
            }

            /*If the inner area is being pressed, go to the next color mode on long press*/
            if(p.x * p.x + p.y * p.y < r_in * r_in) {
                uint32_t diff = lv_tick_elaps(ext->last_change_time);
                if(diff > indev->driver.long_press_time && !ext->color_mode_fixed) {
                    next_color_mode(cpicker);
                    lv_indev_wait_release(lv_indev_get_act());
                }
                return res;
            }

            angle = lv_atan2(p.x, p.y) % 360;
        }

        lv_color_hsv_t hsv_cur;
        hsv_cur = ext->hsv;

        switch(ext->color_mode) {
        case LV_CPICKER_COLOR_MODE_HUE:
            hsv_cur.h = angle;
            break;
        case LV_CPICKER_COLOR_MODE_SATURATION:
            hsv_cur.s = (angle * 100) / 360;
            break;
        case LV_CPICKER_COLOR_MODE_VALUE:
            hsv_cur.v = (angle * 100) / 360;
            break;
        }

        if (lv_cpicker_set_hsv(cpicker, hsv_cur)) {
            res = lv_event_send(cpicker, LV_EVENT_VALUE_CHANGED, NULL);
            if(res != LV_RES_OK) return res;
        }
    }

    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x78d30(%rip), %rax     # 0x89390
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 0x10687
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
movzbl -0x11(%rbp), %eax
cmpl $0x7, %eax
jne 0x106a8
movq -0x20(%rbp), %rdi
leaq 0x57ae5(%rip), %rsi     # 0x68180
callq 0xaa80
movb %al, -0x1(%rbp)
jmp 0x10f06
movq -0x10(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x30(%rbp)
movzbl -0x11(%rbp), %eax
cmpl $0x0, %eax
jne 0x106c3
jmp 0x10f00
movzbl -0x11(%rbp), %eax
cmpl $0x6, %eax
jne 0x1081b
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x11900
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movswl 0x1a(%rax), %eax
movq -0x38(%rbp), %rcx
movswl 0x1c(%rcx), %ecx
cmpl %ecx, %eax
jle 0x10703
movq -0x38(%rbp), %rax
movswl 0x1a(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0x1070e
movq -0x38(%rbp), %rax
movswl 0x1c(%rax), %eax
movl %eax, -0x78(%rbp)
movl -0x78(%rbp), %eax
movw %ax, -0x3a(%rbp)
movswl -0x3a(%rbp), %eax
movq -0x38(%rbp), %rcx
movswl 0x16(%rcx), %ecx
cmpl %ecx, %eax
jle 0x1072e
movswl -0x3a(%rbp), %eax
movl %eax, -0x7c(%rbp)
jmp 0x10739
movq -0x38(%rbp), %rax
movswl 0x16(%rax), %eax
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movw %ax, -0x3a(%rbp)
movswl -0x3a(%rbp), %eax
movq -0x38(%rbp), %rcx
movswl 0x18(%rcx), %ecx
cmpl %ecx, %eax
jle 0x10759
movswl -0x3a(%rbp), %eax
movl %eax, -0x80(%rbp)
jmp 0x10764
movq -0x38(%rbp), %rax
movswl 0x18(%rax), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movw %ax, -0x3a(%rbp)
movq -0x30(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x107db
movswl -0x3a(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8350
cwtl
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x84(%rbp), %eax
cmpl %ecx, %eax
jle 0x107b3
movswl -0x3a(%rbp), %eax
movl %eax, -0x88(%rbp)
jmp 0x107cb
movq -0x10(%rbp), %rdi
callq 0x8350
cwtl
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %ecx
movswl -0x3a(%rbp), %eax
addl %ecx, %eax
movw %ax, -0x3a(%rbp)
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movswl -0x3a(%rbp), %ecx
cmpl %ecx, %eax
jle 0x107fb
movq -0x10(%rbp), %rax
movswl 0x5c(%rax), %eax
movl %eax, -0x8c(%rbp)
jmp 0x10805
movswl -0x3a(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, 0x5c(%rax)
jmp 0x10efe
movzbl -0x11(%rbp), %eax
cmpl $0x2, %eax
jne 0x1088d
movq -0x10(%rbp), %rdi
callq 0x8310
cwtl
movl %eax, -0x90(%rbp)
movq -0x20(%rbp), %rdi
callq 0x12880
movw %ax, %cx
movl -0x90(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
jne 0x10876
movq -0x10(%rbp), %rdi
callq 0x8350
cwtl
movl %eax, -0x94(%rbp)
movq -0x20(%rbp), %rdi
callq 0x129e0
movw %ax, %cx
movl -0x94(%rbp), %eax
movswl %cx, %ecx
cmpl %ecx, %eax
je 0x10888
movq -0x10(%rbp), %rdi
callq 0x9dc0
movq -0x10(%rbp), %rdi
callq 0x11080
jmp 0x10efc
movzbl -0x11(%rbp), %eax
cmpl $0x4, %eax
jne 0x108ad
movq -0x10(%rbp), %rdi
callq 0x9dc0
movq -0x10(%rbp), %rdi
callq 0x11080
jmp 0x10efa
movzbl -0x11(%rbp), %eax
cmpl $0x12, %eax
jne 0x10ad0
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x40(%rbp)
cmpl $0x13, -0x40(%rbp)
je 0x108d3
cmpl $0x11, -0x40(%rbp)
jne 0x1099a
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x30(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0x98(%rbp)
je 0x1090b
jmp 0x108f1
movl -0x98(%rbp), %eax
subl $0x1, %eax
je 0x10926
jmp 0x108fe
movl -0x98(%rbp), %eax
subl $0x2, %eax
je 0x10940
jmp 0x10958
movq -0x30(%rbp), %rax
movzwl (%rax), %eax
addl $0x1, %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x44(%rbp)
jmp 0x10958
movq -0x30(%rbp), %rax
movzbl 0x2(%rax), %eax
addl $0x1, %eax
movl $0x64, %ecx
cltd
idivl %ecx
movb %dl, %al
movb %al, -0x42(%rbp)
jmp 0x10958
movq -0x30(%rbp), %rax
movzbl 0x3(%rax), %eax
addl $0x1, %eax
movl $0x64, %ecx
cltd
idivl %ecx
movb %dl, %al
movb %al, -0x41(%rbp)
movq -0x10(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0x113d0
testb $0x1, %al
jne 0x1096a
jmp 0x10995
movq -0x10(%rbp), %rdi
movl $0xe, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x10993
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
jmp 0x10995
jmp 0x10acb
cmpl $0x14, -0x40(%rbp)
je 0x109aa
cmpl $0x12, -0x40(%rbp)
jne 0x10ac9
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
movq -0x30(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0x9c(%rbp)
je 0x109e5
jmp 0x109c8
movl -0x9c(%rbp), %eax
subl $0x1, %eax
je 0x10a1c
jmp 0x109d5
movl -0x9c(%rbp), %eax
subl $0x2, %eax
je 0x10a54
jmp 0x10a8a
movq -0x30(%rbp), %rax
movzwl (%rax), %eax
cmpl $0x0, %eax
jle 0x10a03
movq -0x30(%rbp), %rax
movzwl (%rax), %eax
subl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x10a10
movl $0x168, %eax            # imm = 0x168
movl %eax, -0xa0(%rbp)
jmp 0x10a10
movl -0xa0(%rbp), %eax
movw %ax, -0x48(%rbp)
jmp 0x10a8a
movq -0x30(%rbp), %rax
movzbl 0x2(%rax), %eax
cmpl $0x0, %eax
jle 0x10a3c
movq -0x30(%rbp), %rax
movzbl 0x2(%rax), %eax
subl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x10a49
movl $0x64, %eax
movl %eax, -0xa4(%rbp)
jmp 0x10a49
movl -0xa4(%rbp), %eax
movb %al, -0x46(%rbp)
jmp 0x10a8a
movq -0x30(%rbp), %rax
movzbl 0x3(%rax), %eax
cmpl $0x0, %eax
jle 0x10a74
movq -0x30(%rbp), %rax
movzbl 0x3(%rax), %eax
subl $0x1, %eax
movl %eax, -0xa8(%rbp)
jmp 0x10a81
movl $0x64, %eax
movl %eax, -0xa8(%rbp)
jmp 0x10a81
movl -0xa8(%rbp), %eax
movb %al, -0x45(%rbp)
movq -0x10(%rbp), %rdi
movl -0x48(%rbp), %esi
callq 0x113d0
testb $0x1, %al
jne 0x10a9c
jmp 0x10ac7
movq -0x10(%rbp), %rdi
movl $0xe, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x10ac5
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
jmp 0x10ac7
jmp 0x10ac9
jmp 0x10acb
jmp 0x10ef8
movzbl -0x11(%rbp), %eax
cmpl $0x8, %eax
jne 0x10b21
callq 0xdfe0
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x1c(%rax)
callq 0x4b70
movq %rax, %rdi
movq -0x30(%rbp), %rsi
addq $0x20, %rsi
callq 0x4d30
movq -0x10(%rbp), %rdi
callq 0x12a00
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x10b1c
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
jmp 0x10ef6
movzbl -0x11(%rbp), %eax
cmpl $0x9, %eax
jne 0x10ef4
callq 0x4b70
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x10b49
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
movq -0x50(%rbp), %rdi
leaq -0x54(%rbp), %rsi
callq 0x4d30
movswl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl 0x20(%rcx), %ecx
subl %ecx, %eax
cmpl $0x0, %eax
jle 0x10b7f
movswl -0x54(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl 0x20(%rcx), %ecx
subl %ecx, %eax
movl %eax, -0xac(%rbp)
jmp 0x10b97
movswl -0x54(%rbp), %ecx
movq -0x30(%rbp), %rax
movswl 0x20(%rax), %eax
subl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0xb0(%rbp)
movq -0x50(%rbp), %rax
movzbl 0x28(%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0xb0(%rbp), %eax
cmpl %ecx, %eax
jg 0x10c28
movswl -0x52(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
cmpl $0x0, %eax
jle 0x10be8
movswl -0x52(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl 0x22(%rcx), %ecx
subl %ecx, %eax
movl %eax, -0xb4(%rbp)
jmp 0x10c00
movswl -0x52(%rbp), %ecx
movq -0x30(%rbp), %rax
movswl 0x22(%rax), %eax
subl %eax, %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
movl %eax, -0xb8(%rbp)
movq -0x50(%rbp), %rax
movzbl 0x28(%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0xb8(%rbp), %eax
cmpl %ecx, %eax
jle 0x10c4e
callq 0xdfe0
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x1c(%rax)
movw -0x54(%rbp), %cx
movq -0x30(%rbp), %rax
movw %cx, 0x20(%rax)
movw -0x52(%rbp), %cx
movq -0x30(%rbp), %rax
movw %cx, 0x22(%rax)
movq -0x10(%rbp), %rax
movswl 0x20(%rax), %ecx
movswl -0x54(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x54(%rbp)
movq -0x10(%rbp), %rax
movswl 0x22(%rax), %ecx
movswl -0x52(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x52(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8310
movw %ax, -0x56(%rbp)
movw $0x0, -0x58(%rbp)
movq -0x30(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x10d28
movq -0x30(%rbp), %rax
movl 0x1c(%rax), %edi
callq 0xe010
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x50(%rbp), %rcx
movzwl 0x2a(%rcx), %ecx
shll %ecx
cmpl %ecx, %eax
jbe 0x10cee
movq -0x30(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x2, %al
andb $0x1, %al
cmpb $0x0, %al
jne 0x10cee
movq -0x10(%rbp), %rdi
callq 0x12ae0
callq 0x4b70
movq %rax, %rdi
callq 0x4ea0
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
movswl -0x54(%rbp), %eax
imull $0x168, %eax, %eax      # imm = 0x168
movzwl -0x56(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0x58(%rbp)
movswl -0x58(%rbp), %eax
cmpl $0x0, %eax
jge 0x10d12
movw $0x0, -0x58(%rbp)
movswl -0x58(%rbp), %eax
cmpl $0x168, %eax            # imm = 0x168
jl 0x10d23
movw $0x167, -0x58(%rbp)     # imm = 0x167
jmp 0x10e50
movq -0x30(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x3, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x10e4e
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x11900
movq %rax, -0x68(%rbp)
movzwl -0x56(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movw %ax, -0x6a(%rbp)
movswl -0x6a(%rbp), %ecx
movswl -0x54(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x54(%rbp)
movswl -0x6a(%rbp), %ecx
movswl -0x52(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x52(%rbp)
movq -0x68(%rbp), %rax
movswl 0x3e(%rax), %ecx
movswl -0x6a(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x6a(%rbp)
movswl -0x6a(%rbp), %eax
cmpl $0x32, %eax
jle 0x10db9
movq -0x68(%rbp), %rax
movswl 0x3e(%rax), %ecx
movswl -0x6a(%rbp), %eax
subl %ecx, %eax
movw %ax, -0x6a(%rbp)
movswl -0x6a(%rbp), %eax
cmpl $0x32, %eax
jge 0x10db7
movw $0x32, -0x6a(%rbp)
jmp 0x10db9
movswl -0x54(%rbp), %eax
movswl -0x54(%rbp), %ecx
imull %ecx, %eax
movswl -0x52(%rbp), %ecx
movswl -0x52(%rbp), %edx
imull %edx, %ecx
addl %ecx, %eax
movswl -0x6a(%rbp), %ecx
movswl -0x6a(%rbp), %edx
imull %edx, %ecx
cmpl %ecx, %eax
jge 0x10e2f
movq -0x30(%rbp), %rax
movl 0x1c(%rax), %edi
callq 0xe010
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x50(%rbp), %rcx
movzwl 0x2a(%rcx), %ecx
cmpl %ecx, %eax
jbe 0x10e24
movq -0x30(%rbp), %rax
movb 0x24(%rax), %al
shrb $0x2, %al
andb $0x1, %al
cmpb $0x0, %al
jne 0x10e24
movq -0x10(%rbp), %rdi
callq 0x12ae0
callq 0x4b70
movq %rax, %rdi
callq 0x4ea0
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
movswl -0x54(%rbp), %edi
movswl -0x52(%rbp), %esi
callq 0x473d0
movzwl %ax, %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movw %dx, %ax
movw %ax, -0x58(%rbp)
jmp 0x10e50
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x74(%rbp)
movq -0x30(%rbp), %rax
movzbl 0x24(%rax), %eax
andl $0x3, %eax
movl %eax, -0xbc(%rbp)
je 0x10e88
jmp 0x10e6e
movl -0xbc(%rbp), %eax
subl $0x1, %eax
je 0x10e92
jmp 0x10e7b
movl -0xbc(%rbp), %eax
subl $0x2, %eax
je 0x10ea6
jmp 0x10eb8
movw -0x58(%rbp), %ax
movw %ax, -0x74(%rbp)
jmp 0x10eb8
movswl -0x58(%rbp), %eax
imull $0x64, %eax, %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movb %al, -0x72(%rbp)
jmp 0x10eb8
movswl -0x58(%rbp), %eax
imull $0x64, %eax, %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movb %al, -0x71(%rbp)
movq -0x10(%rbp), %rdi
movl -0x74(%rbp), %esi
callq 0x113d0
testb $0x1, %al
jne 0x10eca
jmp 0x10ef2
movq -0x10(%rbp), %rdi
movl $0xe, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %eax
cmpl $0x1, %eax
je 0x10ef0
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
jmp 0x10f06
jmp 0x10ef2
jmp 0x10ef4
jmp 0x10ef6
jmp 0x10ef8
jmp 0x10efa
jmp 0x10efc
jmp 0x10efe
jmp 0x10f00
movb -0x21(%rbp), %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)