// File: rapirent[P]JPEG/decoder.c
// Function: calculate_mcu(_IO_FILE*, char const*)
void calculate_mcu(FILE* fp, const char* fwrite)
{
    int mcu_width = 8 * f0.hmax;
    int mcu_height = 8 * f0.vmax;
    int mcus_on_x = (f0.width - 1) / mcu_width + 1;
    int mcus_on_y = (f0.height - 1) / mcu_height + 1;
    mcu_small_block* data_unit = (mcu_small_block*) malloc(mcus_on_y*mcus_on_x*5*mcu_width*mcu_height*sizeof(
                                     mcu_small_block));

    for (int i  = 0; i<mcus_on_y; i++) {
        for (int j = 0; j<mcus_on_x; j++) {
            for (int component_id = 0; component_id<f0.components_num; component_id++)  {
                for (int a =0; a<f0.frame_components[component_id].vertical_sample; a++) {
                    for (int b = 0; b<f0.frame_components[component_id].horizontal_sample; b++) {
                        calcualte_mcu_block(fp, component_id);
                        for (int x = 0; x < 8; x++) {
                            for (int y = 0; y < 8; y++) {
                                data_unit[i*mcus_on_x*5*mcu_width*mcu_height
                                          + j*5*mcu_width*mcu_height
                                          + component_id*mcu_width*mcu_height
                                          + a*mcu_height
                                          + b][x][y] = block[x][y];
                            }
                        }
                    }
                }
            }
        }
    }
    rgb_element mcu_rgb[mcus_on_x*mcus_on_y][mcu_height][mcu_width];
    rgb_element rgb_image[f0.width][f0.height];
    int yV = f0.vmax/f0.frame_components[0].vertical_sample,
        yH = f0.hmax/f0.frame_components[0].horizontal_sample,
        cbV = f0.vmax/f0.frame_components[1].vertical_sample,
        cbH =f0.hmax/ f0.frame_components[1].horizontal_sample,
        crV = f0.vmax/f0.frame_components[2].vertical_sample,
        crH =f0.hmax/ f0.frame_components[2].horizontal_sample;
    for (int i  = 0; i<mcus_on_y; i++) {
        for (int j = 0; j<mcus_on_x; j++) {
            //1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q
            for (int a = 0; a < mcu_height; a++) {
                for (int b = 0; b < mcu_width; b++) {
                    double Y = data_unit[i*mcus_on_x*5*mcu_width*mcu_height
                                         + j*5*mcu_width*mcu_height
                                         + 0*mcu_width*mcu_height
                                         + (a/(8*yV))*mcu_height
                                         + (b/(8*yH))][(a % (8*yV)) /yV][(b % (8*yH)) /yH],
                               Cb = data_unit[i*mcus_on_x*5*mcu_width*mcu_height
                                              + j*5*mcu_width*mcu_height
                                              + 1*mcu_width*mcu_height
                                              + (a/(8*cbV))*mcu_height
                                              + b/(8*cbH)][(a % (8*cbV)) /cbV][(b % (8*cbH)) /cbH],
                                    Cr = data_unit[i*mcus_on_x*5*mcu_width*mcu_height
                                                   + j*5*mcu_width*mcu_height
                                                   + 2*mcu_width*mcu_height
                                                   + (a/(8*crV))*mcu_height
                                                   + b/(8*crH)][(a % (8*crV)) /crV][(b % (8*crH)) /crH];
                    double R = Y + 1.402*(Cr - 128),
                           G = Y - 0.34414*(Cb - 128) - 0.71414*(Cr -  128),
                           B = Y + 1.772*(Cb - 128);
                    mcu_rgb[i*mcus_on_x + j][a][b].r = (byte)(R > 255.0 ? 255.0 : (R < 0.0 ? 0.0 : R));
                    mcu_rgb[i*mcus_on_x + j][a][b].g = (byte)(G > 255.0 ? 255.0 : (G < 0.0 ? 0.0 : G));
                    mcu_rgb[i*mcus_on_x + j][a][b].b = (byte)(B > 255.0 ? 255.0 : (B < 0.0 ? 0.0 : B));
                }
            }
        }
    }
    free(data_unit);
    bitmap_image outimg(f0.width,f0.height);

    for (int y = 0; y < f0.height; y++) {
        for (int x = 0; x < f0.width; x++) {
            outimg.set_pixel(x,y,mcu_rgb[y/mcu_height * mcus_on_x + x/mcu_width][y%mcu_height][x%mcu_width].r
                             ,mcu_rgb[y/mcu_height * mcus_on_x + x/mcu_width][y%mcu_height][x%mcu_width].g
                             ,mcu_rgb[y/mcu_height * mcus_on_x + x/mcu_width][y%mcu_height][x%mcu_width].b);
        }
    }
    outimg.save_image(fwrite);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movzbl 0x863b(%rip), %eax      # 0xece5
shll $0x3, %eax
movl %eax, -0x14(%rbp)
movzbl 0x862d(%rip), %eax      # 0xece4
shll $0x3, %eax
movl %eax, -0x18(%rbp)
movzwl 0x861e(%rip), %eax      # 0xece2
subl $0x1, %eax
cltd
idivl -0x14(%rbp)
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movzwl 0x8608(%rip), %eax      # 0xece0
subl $0x1, %eax
cltd
idivl -0x18(%rbp)
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %eax
imull -0x1c(%rbp), %eax
imull $0x5, %eax, %eax
imull -0x14(%rbp), %eax
imull -0x18(%rbp), %eax
movslq %eax, %rdi
shlq $0x9, %rdi
callq 0x5250
movq %rax, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x68b2
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x68a2
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movzbl 0x85a8(%rip), %ecx      # 0xece6
cmpl %ecx, %eax
jge 0x6892
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movslq -0x34(%rbp), %rdx
leaq 0x8585(%rip), %rcx      # 0xece0
addq $0x8, %rcx
imulq $0x3, %rdx, %rdx
addq %rdx, %rcx
movzbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jge 0x6882
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movslq -0x34(%rbp), %rdx
leaq 0x8559(%rip), %rcx      # 0xece0
addq $0x8, %rcx
imulq $0x3, %rdx, %rdx
addq %rdx, %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x6872
movq -0x8(%rbp), %rdi
movl -0x34(%rbp), %eax
movzbl %al, %esi
callq 0x5fd0
movl $0x0, -0x40(%rbp)
cmpl $0x8, -0x40(%rbp)
jge 0x6862
movl $0x0, -0x44(%rbp)
cmpl $0x8, -0x44(%rbp)
jge 0x6852
movslq -0x40(%rbp), %rcx
leaq 0x8577(%rip), %rax      # 0xed50
shlq $0x6, %rcx
addq %rcx, %rax
movslq -0x44(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x28(%rbp), %rax
movl -0x2c(%rbp), %ecx
imull -0x1c(%rbp), %ecx
imull $0x5, %ecx, %ecx
imull -0x14(%rbp), %ecx
imull -0x18(%rbp), %ecx
imull $0x5, -0x30(%rbp), %edx
imull -0x14(%rbp), %edx
imull -0x18(%rbp), %edx
addl %edx, %ecx
movl -0x34(%rbp), %edx
imull -0x14(%rbp), %edx
imull -0x18(%rbp), %edx
addl %edx, %ecx
movl -0x38(%rbp), %edx
imull -0x18(%rbp), %edx
addl %edx, %ecx
addl -0x3c(%rbp), %ecx
movslq %ecx, %rcx
shlq $0x9, %rcx
addq %rcx, %rax
movslq -0x40(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movslq -0x44(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x67c4
jmp 0x6854
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x67b3
jmp 0x6864
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x6779
jmp 0x6874
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x674d
jmp 0x6884
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x6734
jmp 0x6894
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x6721
jmp 0x68a4
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x670e
movl -0x1c(%rbp), %eax
movl -0x20(%rbp), %ecx
imull %ecx, %eax
movl %eax, %edx
movl -0x18(%rbp), %eax
movl %eax, %ecx
movq %rcx, -0x178(%rbp)
movl -0x14(%rbp), %eax
movq %rax, -0x170(%rbp)
movq %rsp, %rsi
movq %rsi, -0x50(%rbp)
movq %rdx, %rsi
imulq %rcx, %rsi
imulq %rax, %rsi
leaq 0xf(%rsi,%rsi,2), %rdi
andq $-0x10, %rdi
movq %rsp, %rsi
subq %rdi, %rsi
movq %rsi, -0x168(%rbp)
movq %rsi, %rsp
movq %rdx, -0x58(%rbp)
movq %rcx, -0x60(%rbp)
movq %rax, -0x68(%rbp)
movzwl 0x83d1(%rip), %eax      # 0xece2
movl %eax, %ecx
movzwl 0x83c6(%rip), %eax      # 0xece0
movq %rcx, -0x70(%rbp)
movq %rax, -0x78(%rbp)
movzbl 0x83bb(%rip), %eax      # 0xece4
movzbl 0x83b9(%rip), %ecx      # 0xece9
cltd
idivl %ecx
movl %eax, -0x7c(%rbp)
movzbl 0x83a8(%rip), %eax      # 0xece5
movzbl 0x83a4(%rip), %ecx      # 0xece8
cltd
idivl %ecx
movl %eax, -0x80(%rbp)
movzbl 0x8393(%rip), %eax      # 0xece4
movzbl 0x8394(%rip), %ecx      # 0xecec
cltd
idivl %ecx
movl %eax, -0x84(%rbp)
movzbl 0x837d(%rip), %eax      # 0xece5
movzbl 0x837c(%rip), %ecx      # 0xeceb
cltd
idivl %ecx
movl %eax, -0x88(%rbp)
movzbl 0x8365(%rip), %eax      # 0xece4
movzbl 0x8369(%rip), %ecx      # 0xecef
cltd
idivl %ecx
movl %eax, -0x8c(%rbp)
movzbl 0x834f(%rip), %eax      # 0xece5
movzbl 0x8351(%rip), %ecx      # 0xecee
cltd
idivl %ecx
movl %eax, -0x90(%rbp)
movl $0x0, -0x94(%rbp)
movl -0x94(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x7026
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x7010
movl $0x0, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x6ffa
movl $0x0, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x6fe4
movq -0x28(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movl -0x94(%rbp), %eax
imull -0x1c(%rbp), %eax
imull $0x5, %eax, %ecx
imull -0x14(%rbp), %ecx
imull -0x18(%rbp), %ecx
imull $0x5, -0x98(%rbp), %eax
imull -0x14(%rbp), %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
imull $0x0, -0x14(%rbp), %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0x9c(%rbp), %eax
movl -0x7c(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0xa0(%rbp), %eax
movl -0x80(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x1c0(%rbp), %rax
addl %edx, %ecx
movslq %ecx, %rcx
shlq $0x9, %rcx
addq %rcx, %rax
movq %rax, -0x1b8(%rbp)
movl -0x9c(%rbp), %eax
movl -0x7c(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x7c(%rbp)
movl %eax, %ecx
movq -0x1b8(%rbp), %rax
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
movl -0xa0(%rbp), %eax
movl -0x80(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x80(%rbp)
movl %eax, %ecx
movq -0x1b0(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movl -0x94(%rbp), %eax
imull -0x1c(%rbp), %eax
imull $0x5, %eax, %ecx
imull -0x14(%rbp), %ecx
imull -0x18(%rbp), %ecx
imull $0x5, -0x98(%rbp), %eax
imull -0x14(%rbp), %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0x14(%rbp), %eax
shll $0x0, %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0x9c(%rbp), %eax
movl -0x84(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0xa0(%rbp), %eax
movl -0x88(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x1a8(%rbp), %rax
addl %edx, %ecx
movslq %ecx, %rcx
shlq $0x9, %rcx
addq %rcx, %rax
movq %rax, -0x1a0(%rbp)
movl -0x9c(%rbp), %eax
movl -0x84(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x84(%rbp)
movl %eax, %ecx
movq -0x1a0(%rbp), %rax
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x198(%rbp)
movl -0xa0(%rbp), %eax
movl -0x88(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x88(%rbp)
movl %eax, %ecx
movq -0x198(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x190(%rbp)
movl -0x94(%rbp), %eax
imull -0x1c(%rbp), %eax
imull $0x5, %eax, %ecx
imull -0x14(%rbp), %ecx
imull -0x18(%rbp), %ecx
imull $0x5, -0x98(%rbp), %eax
imull -0x14(%rbp), %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0x14(%rbp), %eax
shll %eax
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0x9c(%rbp), %eax
movl -0x8c(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
imull -0x18(%rbp), %eax
addl %eax, %ecx
movl -0xa0(%rbp), %eax
movl -0x90(%rbp), %esi
shll $0x3, %esi
cltd
idivl %esi
movl %eax, %edx
movq -0x190(%rbp), %rax
addl %edx, %ecx
movslq %ecx, %rcx
shlq $0x9, %rcx
addq %rcx, %rax
movq %rax, -0x188(%rbp)
movl -0x9c(%rbp), %eax
movl -0x8c(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x8c(%rbp)
movl %eax, %ecx
movq -0x188(%rbp), %rax
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x180(%rbp)
movl -0xa0(%rbp), %eax
movl -0x90(%rbp), %ecx
shll $0x3, %ecx
cltd
idivl %ecx
movl %edx, %eax
cltd
idivl -0x90(%rbp)
movl %eax, %ecx
movq -0x180(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0xa8(%rbp), %xmm1
movsd -0xb8(%rbp), %xmm0
movsd 0x356f(%rip), %xmm2     # 0xa240
subsd %xmm2, %xmm0
movsd 0x3593(%rip), %xmm2     # 0xa270
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
movsd 0x353b(%rip), %xmm2     # 0xa240
subsd %xmm2, %xmm1
movsd 0x3557(%rip), %xmm2     # 0xa268
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0xb8(%rbp), %xmm0
movsd 0x3517(%rip), %xmm2     # 0xa240
subsd %xmm2, %xmm0
movsd 0x352b(%rip), %xmm2     # 0xa260
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0xa8(%rbp), %xmm1
movsd -0xb0(%rbp), %xmm0
movsd 0x34e3(%rip), %xmm2     # 0xa240
subsd %xmm2, %xmm0
movsd 0x34ef(%rip), %xmm2     # 0xa258
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd 0x34c7(%rip), %xmm1     # 0xa250
ucomisd %xmm1, %xmm0
jbe 0x6da1
movsd 0x34b9(%rip), %xmm0     # 0xa250
movsd %xmm0, -0x1c8(%rbp)
jmp 0x6ddb
xorps %xmm0, %xmm0
ucomisd -0xc0(%rbp), %xmm0
jbe 0x6dbb
xorps %xmm0, %xmm0
movsd %xmm0, -0x1d0(%rbp)
jmp 0x6dcb
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0x1d0(%rbp)
movsd -0x1d0(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rax
movq -0x178(%rbp), %rdi
movsd -0x1c8(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movl -0x94(%rbp), %edx
imull -0x1c(%rbp), %edx
addl -0x98(%rbp), %edx
movslq %edx, %rdx
imulq %rsi, %rdi
imulq %rdi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0x9c(%rbp), %rdx
imulq %rsi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0xa0(%rbp), %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movb %cl, (%rax)
movsd -0xc8(%rbp), %xmm0
movsd 0x3400(%rip), %xmm1     # 0xa250
ucomisd %xmm1, %xmm0
jbe 0x6e68
movsd 0x33f2(%rip), %xmm0     # 0xa250
movsd %xmm0, -0x1d8(%rbp)
jmp 0x6ea2
xorps %xmm0, %xmm0
ucomisd -0xc8(%rbp), %xmm0
jbe 0x6e82
xorps %xmm0, %xmm0
movsd %xmm0, -0x1e0(%rbp)
jmp 0x6e92
movsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0x1e0(%rbp)
movsd -0x1e0(%rbp), %xmm0
movsd %xmm0, -0x1d8(%rbp)
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rax
movq -0x178(%rbp), %rdi
movsd -0x1d8(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movl -0x94(%rbp), %edx
imull -0x1c(%rbp), %edx
addl -0x98(%rbp), %edx
movslq %edx, %rdx
imulq %rsi, %rdi
imulq %rdi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0x9c(%rbp), %rdx
imulq %rsi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0xa0(%rbp), %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movb %cl, 0x1(%rax)
movsd -0xd0(%rbp), %xmm0
movsd 0x3338(%rip), %xmm1     # 0xa250
ucomisd %xmm1, %xmm0
jbe 0x6f30
movsd 0x332a(%rip), %xmm0     # 0xa250
movsd %xmm0, -0x1e8(%rbp)
jmp 0x6f6a
xorps %xmm0, %xmm0
ucomisd -0xd0(%rbp), %xmm0
jbe 0x6f4a
xorps %xmm0, %xmm0
movsd %xmm0, -0x1f0(%rbp)
jmp 0x6f5a
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x1f0(%rbp)
movsd -0x1f0(%rbp), %xmm0
movsd %xmm0, -0x1e8(%rbp)
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rax
movq -0x178(%rbp), %rdi
movsd -0x1e8(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movl -0x94(%rbp), %edx
imull -0x1c(%rbp), %edx
addl -0x98(%rbp), %edx
movslq %edx, %rdx
imulq %rsi, %rdi
imulq %rdi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0x9c(%rbp), %rdx
imulq %rsi, %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movslq -0xa0(%rbp), %rdx
imulq $0x3, %rdx, %rdx
addq %rdx, %rax
movb %cl, 0x2(%rax)
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x69fb
jmp 0x6fe6
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0x69e2
jmp 0x6ffc
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x69c9
jmp 0x7012
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x69b0
movq -0x28(%rbp), %rdi
callq 0x5210
movzwl 0x7cac(%rip), %esi      # 0xece2
movzwl 0x7ca3(%rip), %edx      # 0xece0
leaq -0x120(%rbp), %rdi
callq 0x7440
movl $0x0, -0x124(%rbp)
movl -0x124(%rbp), %eax
movzwl 0x7c80(%rip), %ecx      # 0xece0
cmpl %ecx, %eax
jge 0x716a
movl $0x0, -0x128(%rbp)
movl -0x128(%rbp), %eax
movzwl 0x7c63(%rip), %ecx      # 0xece2
cmpl %ecx, %eax
jge 0x7154
movq -0x170(%rbp), %r8
movq -0x178(%rbp), %r10
movl -0x128(%rbp), %esi
movl -0x124(%rbp), %eax
movl %eax, -0x1f4(%rbp)
movl -0x18(%rbp), %ecx
movl -0x1c(%rbp), %edx
movl %edx, -0x1f8(%rbp)
cltd
idivl %ecx
movl %eax, %r9d
movl -0x1f8(%rbp), %eax
movl %edx, %edi
imull %eax, %r9d
movl -0x14(%rbp), %ecx
movl %esi, %eax
cltd
idivl %ecx
movl %eax, %r11d
movq -0x168(%rbp), %rax
movl %edx, %ecx
movl -0x1f4(%rbp), %edx
addl %r11d, %r9d
movslq %r9d, %r9
imulq %r8, %r10
imulq %r10, %r9
leaq (%r9,%r9,2), %r9
addq %r9, %rax
movslq %edi, %rdi
imulq %r8, %rdi
leaq (%rdi,%rdi,2), %rdi
addq %rdi, %rax
movslq %ecx, %rcx
leaq (%rcx,%rcx,2), %rdi
movzbl (%rax,%rdi), %ecx
movzbl 0x1(%rax,%rdi), %r8d
movzbl 0x2(%rax,%rdi), %r9d
leaq -0x120(%rbp), %rdi
callq 0x7520
jmp 0x7127
jmp 0x7129
movl -0x128(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x128(%rbp)
jmp 0x7072
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x7227
jmp 0x7156
movl -0x124(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x124(%rbp)
jmp 0x7053
movq -0x10(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x52e0
movq -0x208(%rbp), %rsi
movq -0x200(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x7960
jmp 0x71a4
leaq -0x120(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x7610
jmp 0x71b9
leaq -0x158(%rbp), %rdi
callq 0x50d0
leaq -0x159(%rbp), %rdi
callq 0x51c0
leaq -0x120(%rbp), %rdi
callq 0x7a20
movq -0x50(%rbp), %rax
movq %rax, %rsp
movq %rbp, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
jmp 0x721b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x50d0
leaq -0x159(%rbp), %rdi
callq 0x51c0
leaq -0x120(%rbp), %rdi
callq 0x7a20
movq -0x130(%rbp), %rdi
callq 0x52d0
nop