// File: /workspace/github_c_makefile_star2_O0/akumrao[P]videoAnalyzer/encoder/me.c
// Function: x264_me_umhexagons(x264_t*, unsigned char*, int, unsigned char*, int, int, int, int*, int*)
static int x264_me_umhexagons( x264_t *h, uint8_t *p_ref, int i_ref,  
                                   uint8_t *p_img, int i_img,  
                                   int i_sad_mode,  
                                   int i_lambda_motion,  
                                   int *pi_mvx, int *pi_mvy )  
    {  
        int i, n, dx, dy;  
      
        int i_bsatd;  
        int i_bmx,i_bmy;  
        int mvx, mvy;  
        int bw, bh;  
      
        int ok;  
      
        static const int hgrid_x[16]= { -4,-4,-4,-2, 0, 2, 4, 4, 4, 4, 4, 2, 0,-2,-4,-4 };  
        static const int hgrid_y[16]= {  0, 1, 2, 3, 4, 3, 2, 1, 0,-1,-2,-3,-4,-3, 2, 1 };  
      
        static const int hexa_x[6] = { -2,-1, 1, 2, 1,-1 };  
        static const int hexa_y[6] = { 0,  2, 2, 0, 2, 2 };  
      
        static const int star_x[4] = { -1, 0, 1,  0 };  
        static const int star_y[4] = {  0, 1, 0, -1 };  
      
        /* block size */  
        switch( i_sad_mode )  
        {  
            case PIXEL_16x16:  
                bw = bh = 16;  
                break;  
            case PIXEL_16x8:  
                bw = 16; bh = 8;  
                break;  
            case PIXEL_8x16:  
                bw = 8; bh = 16;  
                break;  
            case PIXEL_8x8:  
                bw = 8; bh = 8;  
                break;  
            case PIXEL_8x4:  
                bw = 8; bh = 4;  
                break;  
            case PIXEL_4x8:  
                bw = 4; bh = 8;  
                break;  
            case PIXEL_4x4:  
            default:  
                bw = 4; bh = 4;  
                break;  
        }  
      
        /* mv start (clipped) */  
        mvx = x264_clip3( (*pi_mvx)>>2, -16, 16 );  
        mvy = x264_clip3( (*pi_mvy)>>2, -16, 16 );  
      
        /* init with center */  
        i_bmx = mvx;  
        i_bmy = mvy;  
        i_bsatd = h->pixf.sad[i_sad_mode]( p_img, i_img, &p_ref[mvy*i_ref+mvx], i_ref );  
      
        /* First step: Unsymetrical cross edge */  
        for( dx = mvx - 16; dx <= mvx + 16; dx += 2 )  
        {  
            if( dx >= -16 && dx <= 16 )  
            {  
                me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                            i_sad_mode, p_img, i_img, p_ref, i_ref, dx, mvy,  
                            i_lambda_motion, *pi_mvx, *pi_mvy );  
            }  
        }  
        for( dy = mvy - 8; dy <= mvy + 8; dy += 2 )  
        {  
            if( dy >= - 16 && dy <= 16 )  
            {  
                me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                            i_sad_mode, p_img, i_img, p_ref, i_ref, mvx, dy,  
                            i_lambda_motion, *pi_mvx, *pi_mvy );  
            }  
        }  
      
        /* Second step-part 1: full search -2/2 */  
        mvx = i_bmx; mvy = i_bmy;  
        for( dy = -2; dy <= 2; dy++ )  
        {  
            for( dx = -2; dx <= 2; dx++ )  
            {  
                int mx, my;  
                mx = mvx+dx;  
                my = mvy+dy;  
      
                if( mx >= -16 && mx <= 16 && my >= -16 && my < 16 )  
                {  
                    me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                                i_sad_mode, p_img, i_img, p_ref, i_ref, mx, my,  
                                i_lambda_motion, *pi_mvx, *pi_mvy );  
                }  
            }  
        }  
        /* Second step-part 2: multi hexa research */  
        ok = 1;  
        mvx = i_bmx; mvy = i_bmy;  
        for( n = 1; n <= 4; n++ )  
        {  
            for( i = 0; i < 16; i++ )  
            {  
                dx = mvx + hgrid_x[i] * n;  
                dy = mvy + hgrid_y[i] * n;  
                if( dx >= -16 && dx <= 16 && dy >= -16 && dy <= 16 )  
                {  
                    if( me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                                    i_sad_mode, p_img, i_img, p_ref, i_ref, dx, dy,  
                                    i_lambda_motion, *pi_mvx, *pi_mvy ) )  
                    {  
                        ok = 0; /* we will have to do EHS step */  
                    }  
                }  
            }  
        }  
      
        /* Third step: EHS */  
        if( !ok )  
        {  
            do  
            {  
                ok = 1;  
                mvx = i_bmx; mvy = i_bmy;  
      
                for( i = 0; i < 6; i++ )  
                {  
                    dx = mvx + hexa_x[i];  
                    dy = mvy + hexa_y[i];  
                    if( dx >= -16 && dx <= 16 && dy >= -16 && dy <= 16 )  
                    {  
                        if( me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                                        i_sad_mode, p_img, i_img, p_ref, i_ref, dx, dy,  
                                        i_lambda_motion, *pi_mvx, *pi_mvy ) )  
                        {  
                            ok = 0;  
                        }  
                    }  
                }  
            } while( !ok );  
      
            do  
            {  
                ok = 1;  
                mvx = i_bmx; mvy = i_bmy;  
      
                for( i = 0; i < 4; i++ )  
                {  
                    dx = mvx + star_x[i];  
                    dy = mvy + star_y[i];  
                    if( dx >= -16 && dx <= 16 && dy >= -16 && dy <= 16 )  
                    {  
                        if( me_mv_test( h, &i_bsatd, &i_bmx, &i_bmy,  
                                        i_sad_mode, p_img, i_img, p_ref, i_ref, dx, dy,  
                                        i_lambda_motion, *pi_mvx, *pi_mvy ) )  
                        {  
                            ok = 0;  
                        }  
                    }  
                }  
            } while( !ok );  
        }  
      
        /* 1/4 pixel rafinement using diamond research */  
        i_bsatd = h->pixf.satd[i_sad_mode]( p_img, i_img, &p_ref[i_bmx+i_bmy*i_ref], i_ref ) +  
                    i_lambda_motion * ( bs_size_se((i_bmx<<2) - (*pi_mvx))+bs_size_se((i_bmy<<2) - (*pi_mvy)) );  
      
        i_bmx <<= 2;  
        i_bmy <<= 2;  
        {  
            uint8_t pix[16*16];  
            int satd[4];  
            int i, i_b;  
      
    #define TEST_MV( s, mx, my ) \
            h->mc[MC_LUMA]( p_ref, i_ref, pix, bw, (mx), (my), bw, bh ); \
            (s) = h->pixf.satd[i_sad_mode]( p_img, i_img, pix, bw ) + \
                i_lambda_motion * ( bs_size_se((mx) - (*pi_mvx))+bs_size_se((my) - (*pi_mvy)) )  
      
            TEST_MV( satd[0], i_bmx,   i_bmy-1 );  
            TEST_MV( satd[1], i_bmx,   i_bmy+1 );  
            TEST_MV( satd[2], i_bmx-1, i_bmy );  
            TEST_MV( satd[3], i_bmx+1, i_bmy );  
            for( i = 1, i_b = 0; i < 4; i++ )  
            {  
                if( satd[i] < satd[i_b] )  
                {  
                    i_b = i;  
                }  
            }  
            if( satd[i_b] < i_bsatd )  
            {  
                if( i_b == 0 )      i_bmy--;  
                else if( i_b == 1 ) i_bmy++;  
                else if( i_b == 2 ) i_bmx--;  
                else if( i_b == 3 ) i_bmx++;  
                i_bsatd = satd[i_b];  
      
                if( i_b != 1 ) { TEST_MV( satd[0], i_bmx,   i_bmy-1 ); } else { satd[0] = i_bsatd; }  
                if( i_b != 0 ) { TEST_MV( satd[1], i_bmx,   i_bmy+1 ); } else { satd[1] = i_bsatd; }  
                if( i_b != 3 ) { TEST_MV( satd[2], i_bmx-1, i_bmy   ); } else { satd[2] = i_bsatd; }  
                if( i_b != 2 ) { TEST_MV( satd[3], i_bmx+1, i_bmy   ); } else { satd[3] = i_bsatd; }  
      
                for( i = 1, i_b = 0; i < 4; i++ )  
                {  
                    if( satd[i] < satd[i_b] )  
                    {  
                        i_b = i;  
                    }  
                }  
                if( satd[i_b] < i_bsatd )  
                {  
                    if( i_b == 0 )      i_bmy--;  
                    else if( i_b == 1 ) i_bmy++;  
                    else if( i_b == 2 ) i_bmx--;  
                    else if( i_b == 3 ) i_bmx++;  
                    i_bsatd = satd[i_b];  
                }  
            }  
    #undef TEST_MV  
        }  
        *pi_mvx = i_bmx;  
        *pi_mvy = i_bmy;  
      
        return i_bsatd;  
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movl %edx, -0x3c(%rbp)
movq %rcx, -0x48(%rbp)
movl %r8d, -0x4c(%rbp)
movl %r9d, -0x50(%rbp)
movl -0x50(%rbp), %eax
movq %rax, -0x1b0(%rbp)
subq $0x6, %rax
ja 0x210ef
movq -0x1b0(%rbp), %rax
leaq 0xf0bc(%rip), %rcx      # 0x30140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, -0x7c(%rbp)
movl $0x10, -0x78(%rbp)
jmp 0x210fd
movl $0x10, -0x78(%rbp)
movl $0x8, -0x7c(%rbp)
jmp 0x210fd
movl $0x8, -0x78(%rbp)
movl $0x10, -0x7c(%rbp)
jmp 0x210fd
movl $0x8, -0x78(%rbp)
movl $0x8, -0x7c(%rbp)
jmp 0x210fd
movl $0x8, -0x78(%rbp)
movl $0x4, -0x7c(%rbp)
jmp 0x210fd
movl $0x4, -0x78(%rbp)
movl $0x8, -0x7c(%rbp)
jmp 0x210fd
jmp 0x210ef
movl $0x4, -0x78(%rbp)
movl $0x4, -0x7c(%rbp)
movq 0x18(%rbp), %rax
movl (%rax), %edi
sarl $0x2, %edi
movl $0xfffffff0, %esi       # imm = 0xFFFFFFF0
movl $0x10, %edx
callq 0x22bc0
movl %eax, -0x70(%rbp)
movq 0x20(%rbp), %rax
movl (%rax), %edi
sarl $0x2, %edi
movl $0xfffffff0, %esi       # imm = 0xFFFFFFF0
movl $0x10, %edx
callq 0x22bc0
movl %eax, -0x74(%rbp)
movl -0x70(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x6c(%rbp)
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
movq -0x38(%rbp), %rdx
movl -0x74(%rbp), %ecx
imull -0x3c(%rbp), %ecx
addl -0x70(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x3c(%rbp), %ecx
callq *%rax
movl %eax, -0x64(%rbp)
movl -0x70(%rbp), %eax
subl $0x10, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movl -0x70(%rbp), %ecx
addl $0x10, %ecx
cmpl %ecx, %eax
jg 0x2120e
cmpl $-0x10, -0x5c(%rbp)
jl 0x211fe
cmpl $0x10, -0x5c(%rbp)
jg 0x211fe
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x5c(%rbp), %r14d
movl -0x74(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
jmp 0x21200
movl -0x5c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x5c(%rbp)
jmp 0x2117b
movl -0x74(%rbp), %eax
subl $0x8, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
movl -0x74(%rbp), %ecx
addl $0x8, %ecx
cmpl %ecx, %eax
jg 0x212aa
cmpl $-0x10, -0x60(%rbp)
jl 0x2129a
cmpl $0x10, -0x60(%rbp)
jg 0x2129a
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x70(%rbp), %r14d
movl -0x60(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
jmp 0x2129c
movl -0x60(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x60(%rbp)
jmp 0x21217
movl -0x68(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x74(%rbp)
movl $0xfffffffe, -0x60(%rbp) # imm = 0xFFFFFFFE
cmpl $0x2, -0x60(%rbp)
jg 0x213a4
movl $0xfffffffe, -0x5c(%rbp) # imm = 0xFFFFFFFE
cmpl $0x2, -0x5c(%rbp)
jg 0x21394
movl -0x70(%rbp), %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x74(%rbp), %eax
addl -0x60(%rbp), %eax
movl %eax, -0x88(%rbp)
cmpl $-0x10, -0x84(%rbp)
jl 0x21384
cmpl $0x10, -0x84(%rbp)
jg 0x21384
cmpl $-0x10, -0x88(%rbp)
jl 0x21384
cmpl $0x10, -0x88(%rbp)
jge 0x21384
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x84(%rbp), %r14d
movl -0x88(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
jmp 0x21386
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x212ce
jmp 0x21396
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x212bd
movl $0x1, -0x80(%rbp)
movl -0x68(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x74(%rbp)
movl $0x1, -0x58(%rbp)
cmpl $0x4, -0x58(%rbp)
jg 0x214c1
movl $0x0, -0x54(%rbp)
cmpl $0x10, -0x54(%rbp)
jge 0x214b1
movl -0x70(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xed99(%rip), %rcx      # 0x30180
movl (%rcx,%rdx,4), %ecx
imull -0x58(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x74(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xedbf(%rip), %rcx      # 0x301c0
movl (%rcx,%rdx,4), %ecx
imull -0x58(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x60(%rbp)
cmpl $-0x10, -0x5c(%rbp)
jl 0x214a1
cmpl $0x10, -0x5c(%rbp)
jg 0x214a1
cmpl $-0x10, -0x60(%rbp)
jl 0x214a1
cmpl $0x10, -0x60(%rbp)
jg 0x214a1
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x5c(%rbp), %r14d
movl -0x60(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
cmpl $0x0, %eax
je 0x2149f
movl $0x0, -0x80(%rbp)
jmp 0x214a1
jmp 0x214a3
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x213cf
jmp 0x214b3
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x213be
cmpl $0x0, -0x80(%rbp)
jne 0x216d7
jmp 0x214cd
movl $0x1, -0x80(%rbp)
movl -0x68(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0x54(%rbp)
cmpl $0x6, -0x54(%rbp)
jge 0x215bd
movl -0x70(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xed01(%rip), %rcx      # 0x30200
addl (%rcx,%rdx,4), %eax
movl %eax, -0x5c(%rbp)
movl -0x74(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xed0d(%rip), %rcx      # 0x30220
addl (%rcx,%rdx,4), %eax
movl %eax, -0x60(%rbp)
cmpl $-0x10, -0x5c(%rbp)
jl 0x215ad
cmpl $0x10, -0x5c(%rbp)
jg 0x215ad
cmpl $-0x10, -0x60(%rbp)
jl 0x215ad
cmpl $0x10, -0x60(%rbp)
jg 0x215ad
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x5c(%rbp), %r14d
movl -0x60(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
cmpl $0x0, %eax
je 0x215ab
movl $0x0, -0x80(%rbp)
jmp 0x215ad
jmp 0x215af
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x214e7
jmp 0x215bf
cmpl $0x0, -0x80(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x214cd
jmp 0x215d2
movl $0x1, -0x80(%rbp)
movl -0x68(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x74(%rbp)
movl $0x0, -0x54(%rbp)
cmpl $0x4, -0x54(%rbp)
jge 0x216c2
movl -0x70(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xec3c(%rip), %rcx      # 0x30240
addl (%rcx,%rdx,4), %eax
movl %eax, -0x5c(%rbp)
movl -0x74(%rbp), %eax
movslq -0x54(%rbp), %rdx
leaq 0xec38(%rip), %rcx      # 0x30250
addl (%rcx,%rdx,4), %eax
movl %eax, -0x60(%rbp)
cmpl $-0x10, -0x5c(%rbp)
jl 0x216b2
cmpl $0x10, -0x5c(%rbp)
jg 0x216b2
cmpl $-0x10, -0x60(%rbp)
jl 0x216b2
cmpl $0x10, -0x60(%rbp)
jg 0x216b2
movq -0x30(%rbp), %rdi
movl -0x50(%rbp), %r8d
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %r13d
movq -0x38(%rbp), %r12
movl -0x3c(%rbp), %r15d
movl -0x5c(%rbp), %r14d
movl -0x60(%rbp), %ebx
movl 0x10(%rbp), %r11d
movq 0x18(%rbp), %rax
movl (%rax), %r10d
movq 0x20(%rbp), %rax
movl (%rax), %eax
leaq -0x64(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x6c(%rbp), %rcx
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movl %r14d, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl %r11d, 0x28(%rsp)
movl %r10d, 0x30(%rsp)
movl %eax, 0x38(%rsp)
callq 0x22c00
cmpl $0x0, %eax
je 0x216b0
movl $0x0, -0x80(%rbp)
jmp 0x216b2
jmp 0x216b4
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x215ec
jmp 0x216c4
cmpl $0x0, -0x80(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x215d2
jmp 0x216d7
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
movq -0x38(%rbp), %rdx
movl -0x68(%rbp), %ecx
movl -0x6c(%rbp), %r8d
imull -0x3c(%rbp), %r8d
addl %r8d, %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x3c(%rbp), %ecx
callq *%rax
movl %eax, -0x1e4(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1e8(%rbp)
movl -0x68(%rbp), %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1ec(%rbp)
movl -0x6c(%rbp), %edi
shll $0x2, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1ec(%rbp), %edx
movl -0x1e8(%rbp), %ecx
movl %eax, %esi
movl -0x1e4(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x68(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x68(%rbp)
movl -0x6c(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x6c(%rbp)
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
movl -0x6c(%rbp), %r9d
subl $0x1, %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1d8(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1dc(%rbp)
movl -0x68(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1e0(%rbp)
movl -0x6c(%rbp), %edi
subl $0x1, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1e0(%rbp), %edx
movl -0x1dc(%rbp), %ecx
movl %eax, %esi
movl -0x1d8(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x1a0(%rbp)
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
movl -0x6c(%rbp), %r9d
addl $0x1, %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1cc(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1d0(%rbp)
movl -0x68(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1d4(%rbp)
movl -0x6c(%rbp), %edi
addl $0x1, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1d4(%rbp), %edx
movl -0x1d0(%rbp), %ecx
movl %eax, %esi
movl -0x1cc(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x19c(%rbp)
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
subl $0x1, %r8d
movl -0x6c(%rbp), %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1c0(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1c4(%rbp)
movl -0x68(%rbp), %edi
subl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1c8(%rbp)
movl -0x6c(%rbp), %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1c8(%rbp), %edx
movl -0x1c4(%rbp), %ecx
movl %eax, %esi
movl -0x1c0(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x198(%rbp)
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
addl $0x1, %r8d
movl -0x6c(%rbp), %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1b4(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1b8(%rbp)
movl -0x68(%rbp), %edi
addl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1bc(%rbp)
movl -0x6c(%rbp), %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1bc(%rbp), %edx
movl -0x1b8(%rbp), %ecx
movl %eax, %esi
movl -0x1b4(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x194(%rbp)
movl $0x1, -0x1a4(%rbp)
movl $0x0, -0x1a8(%rbp)
cmpl $0x4, -0x1a4(%rbp)
jge 0x21a99
movslq -0x1a4(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
movslq -0x1a8(%rbp), %rcx
cmpl -0x1a0(%rbp,%rcx,4), %eax
jge 0x21a86
movl -0x1a4(%rbp), %eax
movl %eax, -0x1a8(%rbp)
jmp 0x21a88
movl -0x1a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a4(%rbp)
jmp 0x21a53
movslq -0x1a8(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
cmpl -0x64(%rbp), %eax
jge 0x21f15
cmpl $0x0, -0x1a8(%rbp)
jne 0x21ac4
movl -0x6c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x21b04
cmpl $0x1, -0x1a8(%rbp)
jne 0x21ad8
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x21b02
cmpl $0x2, -0x1a8(%rbp)
jne 0x21aec
movl -0x68(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x21b00
cmpl $0x3, -0x1a8(%rbp)
jne 0x21afe
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x21b00
jmp 0x21b02
jmp 0x21b04
movslq -0x1a8(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
movl %eax, -0x64(%rbp)
cmpl $0x1, -0x1a8(%rbp)
je 0x21bd7
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
movl -0x6c(%rbp), %r9d
subl $0x1, %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1f0(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1f4(%rbp)
movl -0x68(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1f8(%rbp)
movl -0x6c(%rbp), %edi
subl $0x1, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1f8(%rbp), %edx
movl -0x1f4(%rbp), %ecx
movl %eax, %esi
movl -0x1f0(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x1a0(%rbp)
jmp 0x21be0
movl -0x64(%rbp), %eax
movl %eax, -0x1a0(%rbp)
cmpl $0x0, -0x1a8(%rbp)
je 0x21ca2
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
movl -0x6c(%rbp), %r9d
addl $0x1, %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x1fc(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x200(%rbp)
movl -0x68(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x204(%rbp)
movl -0x6c(%rbp), %edi
addl $0x1, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x204(%rbp), %edx
movl -0x200(%rbp), %ecx
movl %eax, %esi
movl -0x1fc(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x19c(%rbp)
jmp 0x21cab
movl -0x64(%rbp), %eax
movl %eax, -0x19c(%rbp)
cmpl $0x3, -0x1a8(%rbp)
je 0x21d6d
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
subl $0x1, %r8d
movl -0x6c(%rbp), %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x208(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x20c(%rbp)
movl -0x68(%rbp), %edi
subl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x210(%rbp)
movl -0x6c(%rbp), %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x210(%rbp), %edx
movl -0x20c(%rbp), %ecx
movl %eax, %esi
movl -0x208(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x198(%rbp)
jmp 0x21d76
movl -0x64(%rbp), %eax
movl %eax, -0x198(%rbp)
cmpl $0x2, -0x1a8(%rbp)
je 0x21e38
movq -0x30(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x38(%rbp), %rdi
movl -0x3c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
movl -0x68(%rbp), %r8d
addl $0x1, %r8d
movl -0x6c(%rbp), %r9d
movl -0x78(%rbp), %r11d
movl -0x7c(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x30(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x48(%rbp), %rdi
movl -0x4c(%rbp), %esi
leaq -0x190(%rbp), %rdx
movl -0x78(%rbp), %ecx
callq *%rax
movl %eax, -0x214(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x218(%rbp)
movl -0x68(%rbp), %edi
addl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x21c(%rbp)
movl -0x6c(%rbp), %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x21c(%rbp), %edx
movl -0x218(%rbp), %ecx
movl %eax, %esi
movl -0x214(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x194(%rbp)
jmp 0x21e41
movl -0x64(%rbp), %eax
movl %eax, -0x194(%rbp)
movl $0x1, -0x1a4(%rbp)
movl $0x0, -0x1a8(%rbp)
cmpl $0x4, -0x1a4(%rbp)
jge 0x21e9b
movslq -0x1a4(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
movslq -0x1a8(%rbp), %rcx
cmpl -0x1a0(%rbp,%rcx,4), %eax
jge 0x21e88
movl -0x1a4(%rbp), %eax
movl %eax, -0x1a8(%rbp)
jmp 0x21e8a
movl -0x1a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a4(%rbp)
jmp 0x21e55
movslq -0x1a8(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
cmpl -0x64(%rbp), %eax
jge 0x21f13
cmpl $0x0, -0x1a8(%rbp)
jne 0x21ec2
movl -0x6c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x21f02
cmpl $0x1, -0x1a8(%rbp)
jne 0x21ed6
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x21f00
cmpl $0x2, -0x1a8(%rbp)
jne 0x21eea
movl -0x68(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x21efe
cmpl $0x3, -0x1a8(%rbp)
jne 0x21efc
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x21efe
jmp 0x21f00
jmp 0x21f02
movslq -0x1a8(%rbp), %rax
movl -0x1a0(%rbp,%rax,4), %eax
movl %eax, -0x64(%rbp)
jmp 0x21f15
movl -0x68(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x6c(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x64(%rbp), %eax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)