// File: /workspace/github_c_makefile_star2_O0/OnionIoT[P]lv_example/lvgl/src/lv_objx/lv_canvas.c
// Function: lv_canvas_rotate
void lv_canvas_rotate(lv_obj_t * canvas, lv_img_dsc_t * img, int16_t angle, lv_coord_t offset_x, lv_coord_t offset_y,
                      int32_t pivot_x, int32_t pivot_y)
{
    LV_ASSERT_OBJ(canvas, LV_OBJX_NAME);
    LV_ASSERT_NULL(img);

    lv_canvas_ext_t * ext_dst = lv_obj_get_ext_attr(canvas);
    const lv_style_t * style  = lv_canvas_get_style(canvas, LV_CANVAS_STYLE_MAIN);
    int32_t sinma             = lv_trigo_sin(-angle);
    int32_t cosma             = lv_trigo_sin(-angle + 90); /* cos */

    int32_t img_width   = img->header.w;
    int32_t img_height  = img->header.h;
    int32_t dest_width  = ext_dst->dsc.header.w;
    int32_t dest_height = ext_dst->dsc.header.h;

    int32_t x;
    int32_t y;
    for(x = -offset_x; x < dest_width - offset_x; x++) {
        for(y = -offset_y; y < dest_height - offset_y; y++) {
            /*Get the target point relative coordinates to the pivot*/
            int32_t xt = x - pivot_x;
            int32_t yt = y - pivot_y;

            /*Get the source pixel from the upscaled image*/
            int32_t xs = ((cosma * xt - sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + pivot_x * 256;
            int32_t ys = ((sinma * xt + cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + pivot_y * 256;

            /*Get the integer part of the source pixel*/
            int xs_int = xs >> 8;
            int ys_int = ys >> 8;

            if(xs_int >= img_width)
                continue;
            else if(xs_int < 0)
                continue;

            if(ys_int >= img_height)
                continue;
            else if(ys_int < 0)
                continue;

            /*Get the fractional part of the source pixel*/
            int xs_fract = xs & 0xff;
            int ys_fract = ys & 0xff;

            /* If the fractional < 0x70 mix the source pixel with the left/top pixel
             * If the fractional > 0x90 mix the source pixel with the right/bottom pixel
             * In the 0x70..0x90 range use the unchanged source pixel */

            int xn;      /*x neightboor*/
            lv_opa_t xr; /*x mix ratio*/
            if(xs_fract < 0x70) {
                xn = xs_int - 1;
                xr = xs_fract * 2;
            } else if(xs_fract > 0x90) {
                xn = xs_int + 1;
                xr = (0xFF - xs_fract) * 2;
            } else {
                xn = xs_int;
                xr = 0xFF;
            }

            /*Handle under/overflow*/
            if(xn >= img_width)
                continue;
            else if(xn < 0)
                continue;

            int yn;      /*y neightboor*/
            lv_opa_t yr; /*y mix ratio*/
            if(ys_fract < 0x70) {
                yn = ys_int - 1;
                yr = ys_fract * 2;
            } else if(ys_fract > 0x90) {
                yn = ys_int + 1;
                yr = (0xFF - ys_fract) * 2;
            } else {
                yn = ys_int;
                yr = 0xFF;
            }

            /*Handle under/overflow*/
            if(yn >= img_height)
                continue;
            else if(yn < 0)
                continue;

            /*Get the mixture of the original source and the neightboor pixels in both directions*/
            lv_color_t c_dest_int = lv_img_buf_get_px_color(img, xs_int, ys_int, style);

            if(lv_img_color_format_is_chroma_keyed(img->header.cf)) {
                lv_color_t ct = LV_COLOR_TRANSP;
                if(c_dest_int.full == ct.full) continue;
            }

            lv_color_t c_dest_xn = lv_img_buf_get_px_color(img, xn, ys_int, style);
            lv_color_t c_dest_yn = lv_img_buf_get_px_color(img, xs_int, yn, style);
            lv_color_t x_dest    = lv_color_mix(c_dest_int, c_dest_xn, xr);
            lv_color_t y_dest    = lv_color_mix(c_dest_int, c_dest_yn, yr);
            lv_color_t color_res = lv_color_mix(x_dest, y_dest, LV_OPA_50);

            if(x + offset_x >= 0 && x + offset_x < dest_width && y + offset_y >= 0 && y + offset_y < dest_height) {
                /*If the image has no alpha channel just simple set the result color on the canvas*/
                if(lv_img_color_format_has_alpha(img->header.cf) == false) {
                    lv_img_buf_set_px_color(&ext_dst->dsc, x + offset_x, y + offset_y, color_res);
                } else {
                    /*Get result pixel opacity*/
                    lv_opa_t opa_int = lv_img_buf_get_px_alpha(img, xs_int, ys_int);
                    lv_opa_t opa_xn  = lv_img_buf_get_px_alpha(img, xn, ys_int);
                    lv_opa_t opa_yn  = lv_img_buf_get_px_alpha(img, xs_int, yn);
                    lv_opa_t opa_x   = (opa_int * xr + (opa_xn * (255 - xr))) >> 8;
                    lv_opa_t opa_y   = (opa_int * yr + (opa_yn * (255 - yr))) >> 8;
                    lv_opa_t opa_res = (opa_x + opa_y) / 2;
                    if(opa_res <= LV_OPA_MIN) continue;

                    lv_color_t bg_color = lv_img_buf_get_px_color(&ext_dst->dsc, x + offset_x, y + offset_y, style);

                    /*If the canvas has no alpha but the image has mix the image's color with
                     * canvas*/
                    if(lv_img_color_format_has_alpha(ext_dst->dsc.header.cf) == false) {
                        if(opa_res < LV_OPA_MAX) color_res = lv_color_mix(color_res, bg_color, opa_res);
                        lv_img_buf_set_px_color(&ext_dst->dsc, x + offset_x, y + offset_y, color_res);
                    }
                    /*Both the image and canvas has alpha channel. Some extra calculation is
                       required*/
                    else {
                        lv_opa_t bg_opa = lv_img_buf_get_px_alpha(&ext_dst->dsc, x + offset_x, y + offset_y);
                        /* Pick the foreground if it's fully opaque or the Background is fully
                         * transparent*/
                        if(opa_res >= LV_OPA_MAX || bg_opa <= LV_OPA_MIN) {
                            lv_img_buf_set_px_color(&ext_dst->dsc, x + offset_x, y + offset_y, color_res);
                            lv_img_buf_set_px_alpha(&ext_dst->dsc, x + offset_x, y + offset_y, opa_res);
                        }
                        /*Opaque background: use simple mix*/
                        else if(bg_opa >= LV_OPA_MAX) {
                            lv_img_buf_set_px_color(&ext_dst->dsc, x + offset_x, y + offset_y,
                                                    lv_color_mix(color_res, bg_color, opa_res));
                        }
                        /*Both colors have alpha. Expensive calculation need to be applied*/
                        else {

                            /*Info:
                             * https://en.wikipedia.org/wiki/Alpha_compositing#Analytical_derivation_of_the_over_operator*/
                            lv_opa_t opa_res_2 = 255 - ((uint16_t)((uint16_t)(255 - opa_res) * (255 - bg_opa)) >> 8);
                            if(opa_res_2 == 0) {
                                opa_res_2 = 1; /*never happens, just to be sure*/
                            }
                            lv_opa_t ratio = (uint16_t)((uint16_t)opa_res * 255) / opa_res_2;

                            lv_img_buf_set_px_color(&ext_dst->dsc, x + offset_x, y + offset_y,
                                                    lv_color_mix(color_res, bg_color, ratio));
                            lv_img_buf_set_px_alpha(&ext_dst->dsc, x + offset_x, y + offset_y, opa_res_2);
                        }
                    }
                }
            }
        }
    }

    lv_obj_invalidate(canvas);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movw %r8w, %ax
movl 0x10(%rbp), %r8d
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movw %dx, -0x12(%rbp)
movw %cx, -0x14(%rbp)
movw %ax, -0x16(%rbp)
movl %r9d, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26efa
movq -0x8(%rbp), %rsi
leaq 0x41209(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26ef8
movq -0x10(%rbp), %rdi
callq 0xd120
testb $0x1, %al
jne 0x26f19
movq -0x10(%rbp), %rsi
leaq 0x411ea(%rip), %rdi     # 0x680fc
callq 0xd410
jmp 0x26f17
movq -0x8(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x26c20
movq %rax, -0x30(%rbp)
movswl -0x12(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movswl %ax, %edi
callq 0x47220
cwtl
movl %eax, -0x34(%rbp)
movswl -0x12(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
addl $0x5a, %eax
movswl %ax, %edi
callq 0x47220
cwtl
movl %eax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
shrl $0xa, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
shrl $0x15, %eax
movl %eax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movl 0x18(%rax), %eax
shrl $0xa, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movl %eax, -0x44(%rbp)
movq -0x28(%rbp), %rax
movl 0x18(%rax), %eax
shrl $0x15, %eax
movl %eax, -0x48(%rbp)
movswl -0x14(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movl -0x44(%rbp), %ecx
movswl -0x14(%rbp), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jge 0x2770a
movswl -0x16(%rbp), %ecx
xorl %eax, %eax
subl %ecx, %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
movl -0x48(%rbp), %ecx
movswl -0x16(%rbp), %edx
subl %edx, %ecx
cmpl %ecx, %eax
jge 0x276fa
movl -0x4c(%rbp), %eax
subl -0x1c(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x50(%rbp), %eax
subl 0x10(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x38(%rbp), %eax
imull -0x54(%rbp), %eax
movl -0x34(%rbp), %ecx
imull -0x58(%rbp), %ecx
subl %ecx, %eax
sarl $0x7, %eax
movl -0x1c(%rbp), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x34(%rbp), %eax
imull -0x54(%rbp), %eax
movl -0x38(%rbp), %ecx
imull -0x58(%rbp), %ecx
addl %ecx, %eax
sarl $0x7, %eax
movl 0x10(%rbp), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
sarl $0x8, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
sarl $0x8, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jl 0x27047
jmp 0x276ec
cmpl $0x0, -0x64(%rbp)
jge 0x27052
jmp 0x276ec
jmp 0x27054
movl -0x68(%rbp), %eax
cmpl -0x40(%rbp), %eax
jl 0x27061
jmp 0x276ec
cmpl $0x0, -0x68(%rbp)
jge 0x2706c
jmp 0x276ec
jmp 0x2706e
movl -0x5c(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x6c(%rbp)
movl -0x60(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x70(%rbp)
cmpl $0x70, -0x6c(%rbp)
jge 0x2709d
movl -0x64(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x74(%rbp)
movl -0x6c(%rbp), %eax
shll %eax
movb %al, -0x75(%rbp)
jmp 0x270ca
cmpl $0x90, -0x6c(%rbp)
jle 0x270be
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
movl $0xff, %eax
subl -0x6c(%rbp), %eax
shll %eax
movb %al, -0x75(%rbp)
jmp 0x270c8
movl -0x64(%rbp), %eax
movl %eax, -0x74(%rbp)
movb $-0x1, -0x75(%rbp)
jmp 0x270ca
movl -0x74(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jl 0x270d7
jmp 0x276ec
cmpl $0x0, -0x74(%rbp)
jge 0x270e2
jmp 0x276ec
jmp 0x270e4
cmpl $0x70, -0x70(%rbp)
jge 0x270fd
movl -0x68(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x7c(%rbp)
movl -0x70(%rbp), %eax
shll %eax
movb %al, -0x7d(%rbp)
jmp 0x2712a
cmpl $0x90, -0x70(%rbp)
jle 0x2711e
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
movl $0xff, %eax
subl -0x70(%rbp), %eax
shll %eax
movb %al, -0x7d(%rbp)
jmp 0x27128
movl -0x68(%rbp), %eax
movl %eax, -0x7c(%rbp)
movb $-0x1, -0x7d(%rbp)
jmp 0x2712a
movl -0x7c(%rbp), %eax
cmpl -0x40(%rbp), %eax
jl 0x27137
jmp 0x276ec
cmpl $0x0, -0x7c(%rbp)
jge 0x27142
jmp 0x276ec
jmp 0x27144
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %eax
movw %ax, %dx
movl -0x68(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl %dx, %esi
movswl %ax, %edx
callq 0x62160
movw %ax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0x1f, %eax
movzbl %al, %edi
callq 0x63080
testb $0x1, %al
jne 0x2717b
jmp 0x2719f
movw 0x4144c(%rip), %ax      # 0x685ce
movw %ax, -0x82(%rbp)
movzwl -0x80(%rbp), %eax
movzwl -0x82(%rbp), %ecx
cmpl %ecx, %eax
jne 0x2719d
jmp 0x276ec
jmp 0x2719f
movq -0x10(%rbp), %rdi
movl -0x74(%rbp), %eax
movw %ax, %dx
movl -0x68(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl %dx, %esi
movswl %ax, %edx
callq 0x62160
movw %ax, -0x84(%rbp)
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %eax
movw %ax, %dx
movl -0x7c(%rbp), %eax
movq -0x30(%rbp), %rcx
movswl %dx, %esi
movswl %ax, %edx
callq 0x62160
movw %ax, -0x86(%rbp)
movb -0x75(%rbp), %al
movw -0x80(%rbp), %cx
movzwl %cx, %edi
movzwl -0x84(%rbp), %esi
movzbl %al, %edx
callq 0x27720
movw %ax, -0x88(%rbp)
movb -0x7d(%rbp), %al
movw -0x80(%rbp), %cx
movzwl %cx, %edi
movzwl -0x86(%rbp), %esi
movzbl %al, %edx
callq 0x27720
movw %ax, -0x8a(%rbp)
movw -0x88(%rbp), %ax
movl $0x7f, %edx
movzwl %ax, %edi
movzwl -0x8a(%rbp), %esi
callq 0x27720
movw %ax, -0x8c(%rbp)
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
cmpl $0x0, %eax
jl 0x276ea
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
cmpl -0x44(%rbp), %eax
jge 0x276ea
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %ecx
addl %ecx, %eax
cmpl $0x0, %eax
jl 0x276ea
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %ecx
addl %ecx, %eax
cmpl -0x48(%rbp), %eax
jge 0x276ea
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0x1f, %eax
movzbl %al, %edi
callq 0x630c0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x272de
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x8c(%rbp), %ecx
callq 0x628a0
jmp 0x276e8
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %eax
movw %ax, %cx
movl -0x68(%rbp), %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x625a0
movb %al, -0x8d(%rbp)
movq -0x10(%rbp), %rdi
movl -0x74(%rbp), %eax
movw %ax, %cx
movl -0x68(%rbp), %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x625a0
movb %al, -0x8e(%rbp)
movq -0x10(%rbp), %rdi
movl -0x64(%rbp), %eax
movw %ax, %cx
movl -0x7c(%rbp), %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x625a0
movb %al, -0x8f(%rbp)
movzbl -0x8d(%rbp), %eax
movzbl -0x75(%rbp), %ecx
imull %ecx, %eax
movzbl -0x8e(%rbp), %ecx
movzbl -0x75(%rbp), %esi
movl $0xff, %edx
subl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
sarl $0x8, %eax
movb %al, -0x90(%rbp)
movzbl -0x8d(%rbp), %eax
movzbl -0x7d(%rbp), %ecx
imull %ecx, %eax
movzbl -0x8f(%rbp), %ecx
movzbl -0x7d(%rbp), %esi
movl $0xff, %edx
subl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
sarl $0x8, %eax
movb %al, -0x91(%rbp)
movzbl -0x90(%rbp), %eax
movzbl -0x91(%rbp), %ecx
addl %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movb %al, -0x92(%rbp)
movzbl -0x92(%rbp), %eax
cmpl $0x10, %eax
jg 0x273c3
jmp 0x276ec
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %dx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %ecx
addl %ecx, %eax
movq -0x30(%rbp), %rcx
movswl %dx, %esi
movswl %ax, %edx
callq 0x62160
movw %ax, -0x94(%rbp)
movq -0x28(%rbp), %rax
movl 0x18(%rax), %eax
andl $0x1f, %eax
movzbl %al, %edi
callq 0x630c0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x27488
movzbl -0x92(%rbp), %eax
cmpl $0xfb, %eax
jge 0x27454
movb -0x92(%rbp), %al
movw -0x8c(%rbp), %cx
movzwl %cx, %edi
movzwl -0x94(%rbp), %esi
movzbl %al, %edx
callq 0x27720
movw %ax, -0x96(%rbp)
movw -0x96(%rbp), %ax
movw %ax, -0x8c(%rbp)
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x8c(%rbp), %ecx
callq 0x628a0
jmp 0x276e6
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
callq 0x625a0
movb %al, -0x97(%rbp)
movzbl -0x92(%rbp), %eax
cmpl $0xfb, %eax
jge 0x274d0
movzbl -0x97(%rbp), %eax
cmpl $0x10, %eax
jg 0x27533
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x8c(%rbp), %ecx
callq 0x628a0
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
movzbl -0x92(%rbp), %ecx
callq 0x62c50
jmp 0x276e4
movzbl -0x97(%rbp), %eax
cmpl $0xfb, %eax
jl 0x275c9
movq -0x28(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xb0(%rbp)
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xa2(%rbp)
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xa0(%rbp)
movb -0x92(%rbp), %al
movw -0x8c(%rbp), %cx
movzwl %cx, %edi
movzwl -0x94(%rbp), %esi
movzbl %al, %edx
callq 0x27720
movq -0xb0(%rbp), %rdi
movw -0xa2(%rbp), %cx
movw %ax, %dx
movw -0xa0(%rbp), %ax
movw %dx, -0x9a(%rbp)
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x9a(%rbp), %ecx
callq 0x628a0
jmp 0x276e2
movzbl -0x92(%rbp), %ecx
movl $0xff, %eax
subl %ecx, %eax
movzwl %ax, %eax
movzbl -0x97(%rbp), %edx
movl $0xff, %ecx
subl %edx, %ecx
imull %ecx, %eax
movzwl %ax, %ecx
sarl $0x8, %ecx
movl $0xff, %eax
subl %ecx, %eax
movb %al, -0x9b(%rbp)
movzbl -0x9b(%rbp), %eax
cmpl $0x0, %eax
jne 0x27611
movb $0x1, -0x9b(%rbp)
movzbl -0x92(%rbp), %eax
movzwl %ax, %eax
imull $0xff, %eax, %eax
movzwl %ax, %eax
movzbl -0x9b(%rbp), %ecx
cltd
idivl %ecx
movb %al, -0x9c(%rbp)
movq -0x28(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xc0(%rbp)
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xb4(%rbp)
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xb2(%rbp)
movb -0x9c(%rbp), %al
movw -0x8c(%rbp), %cx
movzwl %cx, %edi
movzwl -0x94(%rbp), %esi
movzbl %al, %edx
callq 0x27720
movq -0xc0(%rbp), %rdi
movw -0xb4(%rbp), %cx
movw %ax, %dx
movw -0xb2(%rbp), %ax
movw %dx, -0x9e(%rbp)
movswl %cx, %esi
movswl %ax, %edx
movzwl -0x9e(%rbp), %ecx
callq 0x628a0
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
movl -0x4c(%rbp), %eax
movswl -0x14(%rbp), %ecx
addl %ecx, %eax
movw %ax, %cx
movl -0x50(%rbp), %eax
movswl -0x16(%rbp), %edx
addl %edx, %eax
movswl %cx, %esi
movswl %ax, %edx
movzbl -0x9b(%rbp), %ecx
callq 0x62c50
jmp 0x276e4
jmp 0x276e6
jmp 0x276e8
jmp 0x276ea
jmp 0x276ec
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x26fc6
jmp 0x276fc
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x26fa7
movq -0x8(%rbp), %rdi
callq 0x7430
addq $0xc0, %rsp
popq %rbp
retq
nopl (%rax)