// File: /workspace/github_c_makefile_star2_O0/akumrao[P]videoAnalyzer/encoder/me.c
// Function: x264_me_diamond(x264_t*, unsigned char*, int, unsigned char*, int, int, int, int*, int*)
static int x264_me_diamond( 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 bw, bh;  
        int i_bsatd;  
        int i_bmx, i_bmy;  
      
        /* 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;  
        }  
      
        /* init with center */  
        i_bmx = x264_clip3( (*pi_mvx)>>2, -16, 16 );  
        i_bmy = x264_clip3( (*pi_mvy)>>2, -16, 16 );  
        i_bsatd = h->pixf.sad[i_sad_mode]( p_img, i_img, &p_ref[i_bmy*i_ref+i_bmx], i_ref );  
      
        for( ;; )  
        {  
            int satd[4];  
            int i, i_b;  
            if( i_bmx < -16 || i_bmx > 16 || i_bmy < -16 || i_bmy > 16 )  
            {  
                break;  
            }  
    #define TEST_MV( mx, my ) \
            h->pixf.sad[i_sad_mode]( p_img, i_img, &p_ref[(my)*i_ref+(mx)], i_ref ) + \
                i_lambda_motion * ( bs_size_se(((mx)<<2) - (*pi_mvx))+bs_size_se(((my)<<2) - (*pi_mvy)) )  
            satd[0] = TEST_MV( i_bmx,   i_bmy-1 );  
            satd[1] = TEST_MV( i_bmx,   i_bmy+1 );  
            satd[2] = TEST_MV( i_bmx-1, i_bmy );  
            satd[3] = TEST_MV( i_bmx+1, i_bmy );  
    #undef TEST_MV  
      
            for( i = 1, i_b = 0; i < 4; i++ )  
            {  
                if( satd[i] < satd[i_b] )  
                {  
                    i_b = i;  
                }  
            }  
            if( satd[i_b] >= i_bsatd )  
            {  
                break;  
            }  
      
            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];  
        }  
      
        /* 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
subq $0x230, %rsp            # imm = 0x230
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq %rax, -0x180(%rbp)
subq $0x6, %rax
ja 0x21ff6
movq -0x180(%rbp), %rax
leaq 0xe1d1(%rip), %rcx      # 0x3015c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, -0x30(%rbp)
movl $0x10, -0x2c(%rbp)
jmp 0x22004
movl $0x10, -0x2c(%rbp)
movl $0x8, -0x30(%rbp)
jmp 0x22004
movl $0x8, -0x2c(%rbp)
movl $0x10, -0x30(%rbp)
jmp 0x22004
movl $0x8, -0x2c(%rbp)
movl $0x8, -0x30(%rbp)
jmp 0x22004
movl $0x8, -0x2c(%rbp)
movl $0x4, -0x30(%rbp)
jmp 0x22004
movl $0x4, -0x2c(%rbp)
movl $0x8, -0x30(%rbp)
jmp 0x22004
jmp 0x21ff6
movl $0x4, -0x2c(%rbp)
movl $0x4, -0x30(%rbp)
movq 0x18(%rbp), %rax
movl (%rax), %edi
sarl $0x2, %edi
movl $0xfffffff0, %esi       # imm = 0xFFFFFFF0
movl $0x10, %edx
callq 0x22bc0
movl %eax, -0x38(%rbp)
movq 0x20(%rbp), %rax
movl (%rax), %edi
sarl $0x2, %edi
movl $0xfffffff0, %esi       # imm = 0xFFFFFFF0
movl $0x10, %edx
callq 0x22bc0
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x3c(%rbp), %ecx
imull -0x14(%rbp), %ecx
addl -0x38(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x34(%rbp)
cmpl $-0x10, -0x38(%rbp)
jl 0x22085
cmpl $0x10, -0x38(%rbp)
jg 0x22085
cmpl $-0x10, -0x3c(%rbp)
jl 0x22085
cmpl $0x10, -0x3c(%rbp)
jle 0x2208a
jmp 0x22360
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x3c(%rbp), %ecx
subl $0x1, %ecx
imull -0x14(%rbp), %ecx
addl -0x38(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x1a8(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1ac(%rbp)
movl -0x38(%rbp), %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1b0(%rbp)
movl -0x3c(%rbp), %edi
subl $0x1, %edi
shll $0x2, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1b0(%rbp), %edx
movl -0x1ac(%rbp), %ecx
movl %eax, %esi
movl -0x1a8(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x50(%rbp)
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
imull -0x14(%rbp), %ecx
addl -0x38(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x19c(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x38(%rbp), %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1a4(%rbp)
movl -0x3c(%rbp), %edi
addl $0x1, %edi
shll $0x2, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x1a4(%rbp), %edx
movl -0x1a0(%rbp), %ecx
movl %eax, %esi
movl -0x19c(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x4c(%rbp)
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x3c(%rbp), %ecx
imull -0x14(%rbp), %ecx
movl -0x38(%rbp), %r8d
subl $0x1, %r8d
addl %r8d, %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x190(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x194(%rbp)
movl -0x38(%rbp), %edi
subl $0x1, %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x198(%rbp)
movl -0x3c(%rbp), %edi
shll $0x2, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x198(%rbp), %edx
movl -0x194(%rbp), %ecx
movl %eax, %esi
movl -0x190(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x48(%rbp)
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2a8(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x3c(%rbp), %ecx
imull -0x14(%rbp), %ecx
movl -0x38(%rbp), %r8d
addl $0x1, %r8d
addl %r8d, %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x184(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x188(%rbp)
movl -0x38(%rbp), %edi
addl $0x1, %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x18c(%rbp)
movl -0x3c(%rbp), %edi
shll $0x2, %edi
movq 0x20(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl -0x18c(%rbp), %edx
movl -0x188(%rbp), %ecx
movl %eax, %esi
movl -0x184(%rbp), %eax
addl %esi, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x44(%rbp)
movl $0x1, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
cmpl $0x4, -0x54(%rbp)
jge 0x222f9
movslq -0x54(%rbp), %rax
movl -0x50(%rbp,%rax,4), %eax
movslq -0x58(%rbp), %rcx
cmpl -0x50(%rbp,%rcx,4), %eax
jge 0x222ec
movl -0x54(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x222ee
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x222ce
movslq -0x58(%rbp), %rax
movl -0x50(%rbp,%rax,4), %eax
cmpl -0x34(%rbp), %eax
jl 0x22308
jmp 0x22360
cmpl $0x0, -0x58(%rbp)
jne 0x22319
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x22350
cmpl $0x1, -0x58(%rbp)
jne 0x2232a
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2234e
cmpl $0x2, -0x58(%rbp)
jne 0x2233b
movl -0x38(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x2234c
cmpl $0x3, -0x58(%rbp)
jne 0x2234a
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x2234c
jmp 0x2234e
jmp 0x22350
movslq -0x58(%rbp), %rax
movl -0x50(%rbp,%rax,4), %eax
movl %eax, -0x34(%rbp)
jmp 0x2206d
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rdx
movl -0x38(%rbp), %ecx
movl -0x3c(%rbp), %r8d
imull -0x14(%rbp), %r8d
addl %r8d, %ecx
movslq %ecx, %rcx
addq %rcx, %rdx
movl -0x14(%rbp), %ecx
callq *%rax
movl %eax, -0x1e4(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1e8(%rbp)
movl -0x38(%rbp), %edi
shll $0x2, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1ec(%rbp)
movl -0x3c(%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, -0x34(%rbp)
movl -0x38(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x38(%rbp)
movl -0x3c(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
movl -0x3c(%rbp), %r9d
subl $0x1, %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1d8(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1dc(%rbp)
movl -0x38(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1e0(%rbp)
movl -0x3c(%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, -0x170(%rbp)
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
movl -0x3c(%rbp), %r9d
addl $0x1, %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1cc(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1d0(%rbp)
movl -0x38(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1d4(%rbp)
movl -0x3c(%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, -0x16c(%rbp)
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
subl $0x1, %r8d
movl -0x3c(%rbp), %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1c0(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1c4(%rbp)
movl -0x38(%rbp), %edi
subl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1c8(%rbp)
movl -0x3c(%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, -0x168(%rbp)
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
addl $0x1, %r8d
movl -0x3c(%rbp), %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1b4(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1b8(%rbp)
movl -0x38(%rbp), %edi
addl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1bc(%rbp)
movl -0x3c(%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, -0x164(%rbp)
movl $0x1, -0x174(%rbp)
movl $0x0, -0x178(%rbp)
cmpl $0x4, -0x174(%rbp)
jge 0x22722
movslq -0x174(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
movslq -0x178(%rbp), %rcx
cmpl -0x170(%rbp,%rcx,4), %eax
jge 0x2270f
movl -0x174(%rbp), %eax
movl %eax, -0x178(%rbp)
jmp 0x22711
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
jmp 0x226dc
movslq -0x178(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
cmpl -0x34(%rbp), %eax
jge 0x22b9e
cmpl $0x0, -0x178(%rbp)
jne 0x2274d
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2278d
cmpl $0x1, -0x178(%rbp)
jne 0x22761
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2278b
cmpl $0x2, -0x178(%rbp)
jne 0x22775
movl -0x38(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x22789
cmpl $0x3, -0x178(%rbp)
jne 0x22787
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x22789
jmp 0x2278b
jmp 0x2278d
movslq -0x178(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
movl %eax, -0x34(%rbp)
cmpl $0x1, -0x178(%rbp)
je 0x22860
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
movl -0x3c(%rbp), %r9d
subl $0x1, %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1f0(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x1f4(%rbp)
movl -0x38(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x1f8(%rbp)
movl -0x3c(%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, -0x170(%rbp)
jmp 0x22869
movl -0x34(%rbp), %eax
movl %eax, -0x170(%rbp)
cmpl $0x0, -0x178(%rbp)
je 0x2292b
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
movl -0x3c(%rbp), %r9d
addl $0x1, %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x1fc(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x200(%rbp)
movl -0x38(%rbp), %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x204(%rbp)
movl -0x3c(%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, -0x16c(%rbp)
jmp 0x22934
movl -0x34(%rbp), %eax
movl %eax, -0x16c(%rbp)
cmpl $0x3, -0x178(%rbp)
je 0x229f6
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
subl $0x1, %r8d
movl -0x3c(%rbp), %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x208(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x20c(%rbp)
movl -0x38(%rbp), %edi
subl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x210(%rbp)
movl -0x3c(%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, -0x168(%rbp)
jmp 0x229ff
movl -0x34(%rbp), %eax
movl %eax, -0x168(%rbp)
cmpl $0x2, -0x178(%rbp)
je 0x22ac1
movq -0x8(%rbp), %rax
movq 0x10f380(%rax), %rax
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
addl $0x1, %r8d
movl -0x3c(%rbp), %r9d
movl -0x2c(%rbp), %r11d
movl -0x30(%rbp), %r10d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
callq *%rax
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movq 0x10f2e0(%rax,%rcx,8), %rax
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
leaq -0x160(%rbp), %rdx
movl -0x2c(%rbp), %ecx
callq *%rax
movl %eax, -0x214(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x218(%rbp)
movl -0x38(%rbp), %edi
addl $0x1, %edi
movq 0x18(%rbp), %rax
subl (%rax), %edi
callq 0x22d30
movl %eax, -0x21c(%rbp)
movl -0x3c(%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, -0x164(%rbp)
jmp 0x22aca
movl -0x34(%rbp), %eax
movl %eax, -0x164(%rbp)
movl $0x1, -0x174(%rbp)
movl $0x0, -0x178(%rbp)
cmpl $0x4, -0x174(%rbp)
jge 0x22b24
movslq -0x174(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
movslq -0x178(%rbp), %rcx
cmpl -0x170(%rbp,%rcx,4), %eax
jge 0x22b11
movl -0x174(%rbp), %eax
movl %eax, -0x178(%rbp)
jmp 0x22b13
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
jmp 0x22ade
movslq -0x178(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
cmpl -0x34(%rbp), %eax
jge 0x22b9c
cmpl $0x0, -0x178(%rbp)
jne 0x22b4b
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x22b8b
cmpl $0x1, -0x178(%rbp)
jne 0x22b5f
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x22b89
cmpl $0x2, -0x178(%rbp)
jne 0x22b73
movl -0x38(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x22b87
cmpl $0x3, -0x178(%rbp)
jne 0x22b85
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x22b87
jmp 0x22b89
jmp 0x22b8b
movslq -0x178(%rbp), %rax
movl -0x170(%rbp,%rax,4), %eax
movl %eax, -0x34(%rbp)
jmp 0x22b9e
movl -0x38(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x3c(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x34(%rbp), %eax
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
nopl (%rax)