// File: /workspace/github_c_makefile_star2_O0/asford[P]tmalign/./TMalign.h
// Function: get_score_fast(double**, double**, int, int, int*)
double get_score_fast(double **x, double **y, int x_len, int y_len, int invmap[])
{
    double rms, tmscore, tmscore1, tmscore2;
    int i, j, k;

    k=0;
    for(j=0; j<y_len; j++)
    {
        i=invmap[j];
        if(i>=0)
        {
            r1[k][0]=x[i][0];
            r1[k][1]=x[i][1];
            r1[k][2]=x[i][2];

            r2[k][0]=y[j][0];
            r2[k][1]=y[j][1];
            r2[k][2]=y[j][2];
            
            xtm[k][0]=x[i][0];
            xtm[k][1]=x[i][1];
            xtm[k][2]=x[i][2];
            
            ytm[k][0]=y[j][0];
            ytm[k][1]=y[j][1];
            ytm[k][2]=y[j][2];                  
            
            k++;
        }
        else if(i!=-1)
        {
            PrintErrorAndQuit("Wrong map!\n");
        }       
    }
    Kabsch(r1, r2, k, 1, &rms, t, u);
    
    //evaluate score   
    double di;
	const int len=k;
    double dis[len];    
	double d00=d0_search;
	double d002=d00*d00;
	double d02=d0*d0;
	
    int n_ali=k;
	double xrot[3];
	tmscore=0;
	for(k=0; k<n_ali; k++)
	{
        transform(t, u, &xtm[k][0], xrot);        
        di=dist(xrot, &ytm[k][0]);
        dis[k]=di;
        tmscore += 1/(1+di/d02);
    }
	
   
   
   //second iteration 
    double d002t=d002;
    while(1)
    {
		j=0;
        for(k=0; k<n_ali; k++)
        {            
            if(dis[k]<=d002t)
            {
                r1[j][0]=xtm[k][0];
                r1[j][1]=xtm[k][1];
                r1[j][2]=xtm[k][2];
                
                r2[j][0]=ytm[k][0];
                r2[j][1]=ytm[k][1];
                r2[j][2]=ytm[k][2];
                
                j++;
            }
        }
        //there are not enough feasible pairs, relieve the threshold 
        if(j<3 && n_ali>3)
        {
            d002t += 0.5;
        }
        else
        {
            break;
        }
    }
    
    if(n_ali!=j)
    {
        Kabsch(r1, r2, j, 1, &rms, t, u);
    	tmscore1=0;
    	for(k=0; k<n_ali; k++)
    	{
            transform(t, u, &xtm[k][0], xrot);        
            di=dist(xrot, &ytm[k][0]);
            dis[k]=di;
            tmscore1 += 1/(1+di/d02);
        }
        
        //third iteration
        d002t=d002+1;
       
        while(1)
        {
			j=0;
            for(k=0; k<n_ali; k++)
            {            
                if(dis[k]<=d002t)
                {
                    r1[j][0]=xtm[k][0];
                    r1[j][1]=xtm[k][1];
                    r1[j][2]=xtm[k][2];
                    
                    r2[j][0]=ytm[k][0];
                    r2[j][1]=ytm[k][1];
                    r2[j][2]=ytm[k][2];
                                        
                    j++;
                }
            }
            //there are not enough feasible pairs, relieve the threshold 
            if(j<3 && n_ali>3)
            {
                d002t += 0.5;
            }
            else
            {
                break;
            }
        }

        //evaluate the score
        Kabsch(r1, r2, j, 1, &rms, t, u);
        tmscore2=0;
        for(k=0; k<n_ali; k++)
        {
            transform(t, u, &xtm[k][0], xrot);
            di=dist(xrot, &ytm[k][0]);
            tmscore2 += 1/(1+di/d02);
        }    
    }
    else
    {
        tmscore1=tmscore;
        tmscore2=tmscore;
    }
    
      
    if(tmscore1>=tmscore) tmscore=tmscore1;
    if(tmscore2>=tmscore) tmscore=tmscore2;

    
    return tmscore; // no need to normalize this score because it will not be used for latter scoring
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x40a422
movq -0x20(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x44(%rbp)
cmpl $0x0, -0x44(%rbp)
jl 0x40a3fe
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x2003c2(%rip), %rax    # 0x60a618
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x20039e(%rip), %rax    # 0x60a618
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x200379(%rip), %rax    # 0x60a618
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x20035d(%rip), %rax    # 0x60a620
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x200339(%rip), %rax    # 0x60a620
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x200314(%rip), %rax    # 0x60a620
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x2002b0(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x20028c(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq -0x8(%rbp), %rax
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x200267(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x20024b(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x200227(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq -0x10(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x200202(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a412
cmpl $-0x1, -0x44(%rbp)
je 0x40a410
leaq 0x181e01(%rip), %rdi    # 0x58c20c
callq 0x404740
jmp 0x40a412
jmp 0x40a414
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x40a21b
movq 0x2001ef(%rip), %rdi    # 0x60a618
movq 0x2001f0(%rip), %rsi    # 0x60a620
movl -0x4c(%rbp), %edx
subq $0x10, %rsp
leaq 0x200212(%rip), %rcx    # 0x60a650
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x2001e5(%rip), %r9     # 0x60a630
movl $0x1, %ecx
leaq -0x28(%rbp), %r8
callq 0x4070f0
addq $0x10, %rsp
movl -0x4c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x68(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0xc0(%rbp)
movq %rcx, %rsp
movq %rax, -0x70(%rbp)
movsd 0x2000f3(%rip), %xmm0   # 0x60a588
movsd %xmm0, -0x78(%rbp)
movsd -0x78(%rbp), %xmm0
mulsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x2000cf(%rip), %xmm0   # 0x60a580
mulsd 0x2000c7(%rip), %xmm0   # 0x60a580
movsd %xmm0, -0x88(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x8c(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x40a583
movq 0x2000f1(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq -0xb0(%rbp), %rcx
leaq 0x20012b(%rip), %rdi    # 0x60a630
leaq 0x200144(%rip), %rsi    # 0x60a650
callq 0x4060e0
leaq -0xb0(%rbp), %rdi
movq 0x2000c9(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x406000
movq -0xc0(%rbp), %rax
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x58(%rbp), %xmm0
divsd -0x88(%rbp), %xmm0
movsd 0x181aad(%rip), %xmm1   # 0x58c008
addsd %xmm0, %xmm1
movsd 0x181aa1(%rip), %xmm0   # 0x58c008
divsd %xmm1, %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a4d9
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0x40a592
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x40a6d6
movq -0xc0(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x40a6c6
movq 0x200008(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x20002d(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq 0x1fffe2(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x200006(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq 0x1fffba(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x1fffde(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movq 0x1fff9a(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x1fffbf(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq 0x1fff74(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x1fff98(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq 0x1fff4c(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x1fff70(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x40a6c8
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a5a0
cmpl $0x3, -0x48(%rbp)
jge 0x40a6ff
cmpl $0x3, -0x8c(%rbp)
jle 0x40a6ff
movsd 0x18194b(%rip), %xmm0   # 0x58c038
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0x40a701
jmp 0x40a706
jmp 0x40a590
movl -0x8c(%rbp), %eax
cmpl -0x48(%rbp), %eax
je 0x40aa71
movq 0x1ffefc(%rip), %rdi    # 0x60a618
movq 0x1ffefd(%rip), %rsi    # 0x60a620
movl -0x48(%rbp), %edx
movl $0x1, %ecx
leaq -0x28(%rbp), %r8
leaq 0x1ffefa(%rip), %r9     # 0x60a630
leaq 0x1fff13(%rip), %rax    # 0x60a650
subq $0x10, %rsp
movq %rax, (%rsp)
callq 0x4070f0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x40a807
movq 0x1ffe6d(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq -0xb0(%rbp), %rcx
leaq 0x1ffea7(%rip), %rdi    # 0x60a630
leaq 0x1ffec0(%rip), %rsi    # 0x60a650
callq 0x4060e0
leaq -0xb0(%rbp), %rdi
movq 0x1ffe45(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x406000
movq -0xc0(%rbp), %rax
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x58(%rbp), %xmm0
divsd -0x88(%rbp), %xmm0
movsd 0x181829(%rip), %xmm1   # 0x58c008
addsd %xmm0, %xmm1
movsd 0x18181d(%rip), %xmm0   # 0x58c008
divsd %xmm1, %xmm0
addsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a75d
movsd 0x1817f9(%rip), %xmm0   # 0x58c008
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0x40a81e
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x40a962
movq -0xc0(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd -0xb8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x40a952
movq 0x1ffd7c(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x1ffda1(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq 0x1ffd56(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x1ffd7a(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq 0x1ffd2e(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x1ffd52(%rip), %rax    # 0x60a618
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movq 0x1ffd0e(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax), %xmm0
movq 0x1ffd33(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax)
movq 0x1ffce8(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x8(%rax), %xmm0
movq 0x1ffd0c(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x8(%rax)
movq 0x1ffcc0(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd 0x10(%rax), %xmm0
movq 0x1ffce4(%rip), %rax    # 0x60a620
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, 0x10(%rax)
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x40a954
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a82c
cmpl $0x3, -0x48(%rbp)
jge 0x40a98b
cmpl $0x3, -0x8c(%rbp)
jle 0x40a98b
movsd 0x1816bf(%rip), %xmm0   # 0x58c038
addsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0x40a98d
jmp 0x40a992
jmp 0x40a81c
movq 0x1ffc7f(%rip), %rdi    # 0x60a618
movq 0x1ffc80(%rip), %rsi    # 0x60a620
movl -0x48(%rbp), %edx
movl $0x1, %ecx
leaq -0x28(%rbp), %r8
leaq 0x1ffc7d(%rip), %r9     # 0x60a630
leaq 0x1ffc96(%rip), %rax    # 0x60a650
subq $0x10, %rsp
movq %rax, (%rsp)
callq 0x4070f0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x40aa6f
movq 0x1ffbf0(%rip), %rax    # 0x60a5e0
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq -0xb0(%rbp), %rcx
leaq 0x1ffc2a(%rip), %rdi    # 0x60a630
leaq 0x1ffc43(%rip), %rsi    # 0x60a650
callq 0x4060e0
leaq -0xb0(%rbp), %rdi
movq 0x1ffbc8(%rip), %rax    # 0x60a5e8
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x406000
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
divsd -0x88(%rbp), %xmm0
movsd 0x1815c1(%rip), %xmm1   # 0x58c008
addsd %xmm0, %xmm1
movsd 0x1815b5(%rip), %xmm0   # 0x58c008
divsd %xmm1, %xmm0
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x40a9da
jmp 0x40aa85
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm0
ucomisd -0x30(%rbp), %xmm0
jb 0x40aa9b
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
ucomisd -0x30(%rbp), %xmm0
jb 0x40aab1
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movq -0x68(%rbp), %rax
movq %rax, %rsp
movq %rbp, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)