// File: carellano8[P]Proyecto-Redes-I-2017/hamming.cpp
// Function: hamming::recibir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void hamming::recibir(binario bin){
	size_t i,li,ls,j,a,b;
    int r;
    bool error=false;
    binario aux="";
    binario bufferB[MAXMSJ/MAXT*8];
    binario buffer2[MAXMSJ/MAXT*8];
    string bufferMsj;
    ofstream archivo("salidah.txt");
    
   
     i=0;j=0;
    while(i<bin.size()){

        li=bin.find("01111110",i);
        ls=bin.find("01111110",i+8);
        bufferB[j]=bin.substr(li,(ls+8)-li);

        //~ cout<<"Inferior "<<li<<" Superior "<<ls<<" Distancia "<<(ls+8)-li<<endl;
        //~ cout<<bufferB[j]<<endl;
        j++;
        i=ls+8;;
    }
    if(j>16){error=true;}// maximo 16 tramas 
    i=0;
    while(!error&&i<j){// Verfificar que no hay error en las banderas 
        if(bufferB[i].size()<=30){
            error=true;
        }
        if(!error){
            bufferB[i]=bufferB[i].substr(8,bufferB[i].size()-16);//quita las banderas 
        }
        i++;
    }
   	if(!error){// Quitar relleno de bits
        for (i = 0; i < j; i++)
        {
        	b=0;aux="";a=0;
        	while(a < bufferB[i].size())
        	{
        		if(bufferB[i].at(a)=='1'){
                    b++;
                }else{
                    b=0;
                    }
                aux+=bufferB[i].at(a);		
                if(b==5){
                a++;b=0;
                	}
            a++;
        	}
        	
        	bufferB[i]=aux;

       	}
    }
            
    
    if(!error){// decodificar hamming
        i=0;
        while(!error&&i<j){// decodificar hamming
        	// cout<<bufferB[i]<<endl;
        	// cout<<crc(bufferB[i])<<endl;
        	bufferB[i]=decodificadorHamming(bufferB[i],&r);
        	//~ cout<<"HOLA "<<r<<endl;
            if(r==-1){
                error=true;
            }
            i++;
        }
    }
   
       
    if(!error){// Cabecera, Que no hay desorden en las tramas y que hay trama final
        i=0;
        while(!error&&i<j){// 
            a=BitStringToInt(bufferB[i].substr(1,4));
            b=BitStringToInt(bufferB[i].substr(5,1));
            buffer2[a]=bufferB[i].substr(6);
            //cout<<a<<" "<<b<<" "<<buffer2[a]<<endl;
            i++;
        }
        if(!b){
            error=true;
        }
    }
    if(!error){
        bufferMsj="";
        for (i = 0; i <j ; i++)
        {
            for (a = 0; a <buffer2[i].size() ; a+=8)
            {
                bufferMsj+=(char)(BitStringToInt(buffer2[i].substr(a,8)));
            }   
        }

        cout<<bufferMsj<<endl;
        if(archivo.is_open()){
            archivo<<bufferMsj;
            if(r==0){
            	cout<<"Se ha detectado y corregido un error"<<endl;
            	archivo<<endl<<"Se ha detectado y corregido un error"<<endl;
            }
            archivo.close();
        }else{
        	cout<<"Se ha detectado algun un error"<<endl;
        }
    }
    
    
    
    
    if(error){
        cout<<"Se ha detectado algun un error"<<endl;
        if(archivo.is_open()){
            archivo<<"Se ha detectado algun un error"<<endl;
            archivo.close();
        }else{
        	cout<<"Se ha detectado algun un error"<<endl;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x24f0, %rsp           # imm = 0x24F0
movq %rdi, -0x23b0(%rbp)
movq %rdi, -0x8(%rbp)
movb $0x0, -0x3d(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x23a8(%rbp)
callq 0x33a0
movq -0x23a8(%rbp), %rdx
leaq 0x20b1(%rip), %rsi      # 0xa159
leaq -0x60(%rbp), %rdi
callq 0x4340
jmp 0x80b3
leaq -0x61(%rbp), %rdi
callq 0x3240
leaq -0x1080(%rbp), %rax
movq %rax, %rcx
addq $0x1000, %rcx           # imm = 0x1000
movq %rcx, -0x23c0(%rbp)
movq %rax, -0x23b8(%rbp)
movq -0x23b8(%rbp), %rdi
movq %rdi, -0x23c8(%rbp)
callq 0x32d0
movq -0x23c8(%rbp), %rax
movq -0x23c0(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x23b8(%rbp)
jne 0x80db
leaq -0x2080(%rbp), %rax
movq %rax, %rcx
addq $0x1000, %rcx           # imm = 0x1000
movq %rcx, -0x23d8(%rbp)
movq %rax, -0x23d0(%rbp)
movq -0x23d0(%rbp), %rdi
movq %rdi, -0x23e0(%rbp)
callq 0x32d0
movq -0x23e0(%rbp), %rax
movq -0x23d8(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x23d0(%rbp)
jne 0x812b
leaq -0x20a0(%rbp), %rdi
callq 0x32d0
leaq 0x1f58(%rip), %rsi      # 0xa0c7
leaq -0x22a0(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x8182
movq $0x0, -0x10(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x23b0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x23e8(%rbp)
callq 0x3170
movq %rax, %rcx
movq -0x23e8(%rbp), %rax
cmpq %rcx, %rax
jae 0x82a4
movq -0x23b0(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq 0x1f8c(%rip), %rsi      # 0xa15a
movq %rsi, -0x23f0(%rbp)
callq 0x3420
movq -0x23f0(%rbp), %rsi
movq -0x23b0(%rbp), %rdi
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdx
addq $0x8, %rdx
callq 0x3420
movq -0x23b0(%rbp), %rsi
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
subq %rdx, %rcx
addq $0x8, %rcx
leaq -0x22c0(%rbp), %rdi
callq 0x3200
jmp 0x8221
movq -0x28(%rbp), %rax
leaq -0x1080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x22c0(%rbp), %rsi
callq 0x3290
leaq -0x22c0(%rbp), %rdi
callq 0x3140
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10(%rbp)
jmp 0x8192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x61(%rbp), %rdi
callq 0x3240
jmp 0x8be7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x8b3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x8b2e
cmpq $0x10, -0x28(%rbp)
jbe 0x82af
movb $0x1, -0x3d(%rbp)
movq $0x0, -0x10(%rbp)
xorl %eax, %eax
testb $0x1, -0x3d(%rbp)
movb %al, -0x23f1(%rbp)
jne 0x82d6
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
setb %al
movb %al, -0x23f1(%rbp)
movb -0x23f1(%rbp), %al
testb $0x1, %al
jne 0x82e5
jmp 0x8384
movq -0x10(%rbp), %rax
leaq -0x1080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3170
cmpq $0x1e, %rax
ja 0x8306
movb $0x1, -0x3d(%rbp)
testb $0x1, -0x3d(%rbp)
jne 0x8373
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rdi
movq %rdi, -0x2400(%rbp)
callq 0x3170
movq -0x2400(%rbp), %rsi
movq %rax, %rcx
addq $-0x10, %rcx
leaq -0x22e0(%rbp), %rdi
movl $0x8, %edx
callq 0x3200
jmp 0x8349
movq -0x10(%rbp), %rax
leaq -0x1080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x22e0(%rbp), %rsi
callq 0x3290
leaq -0x22e0(%rbp), %rdi
callq 0x3140
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x82b7
testb $0x1, -0x3d(%rbp)
jne 0x84d5
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0x84d3
movq $0x0, -0x38(%rbp)
leaq 0x1da6(%rip), %rsi      # 0xa159
leaq -0x60(%rbp), %rdi
callq 0x32c0
jmp 0x83be
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x2408(%rbp)
movq -0x10(%rbp), %rax
leaq -0x1080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3170
movq %rax, %rcx
movq -0x2408(%rbp), %rax
cmpq %rcx, %rax
jae 0x84a5
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rdi
movq -0x30(%rbp), %rsi
callq 0x33f0
movq %rax, -0x2410(%rbp)
jmp 0x841d
movq -0x2410(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x31, %eax
jne 0x843a
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x8442
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rdi
movq -0x30(%rbp), %rsi
callq 0x33f0
movq %rax, -0x2418(%rbp)
jmp 0x8464
movq -0x2418(%rbp), %rax
movsbl (%rax), %esi
leaq -0x60(%rbp), %rdi
callq 0x3150
jmp 0x8479
cmpq $0x5, -0x38(%rbp)
jne 0x8494
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x83c6
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3040
jmp 0x84c0
jmp 0x84c2
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x8396
jmp 0x84d5
testb $0x1, -0x3d(%rbp)
jne 0x85be
movq $0x0, -0x10(%rbp)
xorl %eax, %eax
testb $0x1, -0x3d(%rbp)
movb %al, -0x2419(%rbp)
jne 0x8506
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
setb %al
movb %al, -0x2419(%rbp)
movb -0x2419(%rbp), %al
testb $0x1, %al
jne 0x8515
jmp 0x85bc
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rsi
leaq -0x2320(%rbp), %rdi
callq 0x30e0
jmp 0x8533
leaq -0x2300(%rbp), %rdi
leaq -0x2320(%rbp), %rsi
leaq -0x3c(%rbp), %rdx
callq 0x8bf0
jmp 0x854c
movq -0x10(%rbp), %rax
leaq -0x1080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x2300(%rbp), %rsi
callq 0x3290
leaq -0x2300(%rbp), %rdi
callq 0x3140
leaq -0x2320(%rbp), %rdi
callq 0x3140
cmpl $-0x1, -0x3c(%rbp)
jne 0x85ab
movb $0x1, -0x3d(%rbp)
jmp 0x85ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2320(%rbp), %rdi
callq 0x3140
jmp 0x8b2e
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x84e7
jmp 0x85be
testb $0x1, -0x3d(%rbp)
jne 0x8752
movq $0x0, -0x10(%rbp)
xorl %eax, %eax
testb $0x1, -0x3d(%rbp)
movb %al, -0x241a(%rbp)
jne 0x85ef
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
setb %al
movb %al, -0x241a(%rbp)
movb -0x241a(%rbp), %al
testb $0x1, %al
jne 0x85fe
jmp 0x8745
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rsi
leaq -0x2340(%rbp), %rdi
movl $0x1, %edx
movl $0x4, %ecx
callq 0x3200
jmp 0x8626
leaq -0x2340(%rbp), %rdi
callq 0x9130
movl %eax, -0x2420(%rbp)
jmp 0x863a
movl -0x2420(%rbp), %eax
cltq
movq %rax, -0x30(%rbp)
leaq -0x2340(%rbp), %rdi
callq 0x3140
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rsi
leaq -0x2360(%rbp), %rdi
movl $0x5, %edx
movl $0x1, %ecx
callq 0x3200
jmp 0x867a
leaq -0x2360(%rbp), %rdi
callq 0x9130
movl %eax, -0x2424(%rbp)
jmp 0x868e
movl -0x2424(%rbp), %eax
cltq
movq %rax, -0x38(%rbp)
leaq -0x2360(%rbp), %rdi
callq 0x3140
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x1080(%rbp,%rax), %rsi
leaq -0x2380(%rbp), %rdi
movl $0x6, %edx
movq $-0x1, %rcx
callq 0x3200
jmp 0x86d0
movq -0x30(%rbp), %rax
leaq -0x2080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x2380(%rbp), %rsi
callq 0x3290
leaq -0x2380(%rbp), %rdi
callq 0x3140
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x85d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2340(%rbp), %rdi
callq 0x3140
jmp 0x8b2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2360(%rbp), %rdi
callq 0x3140
jmp 0x8b2e
cmpq $0x0, -0x38(%rbp)
jne 0x8750
movb $0x1, -0x3d(%rbp)
jmp 0x8752
testb $0x1, -0x3d(%rbp)
jne 0x899b
leaq 0x19f6(%rip), %rsi      # 0xa159
leaq -0x20a0(%rbp), %rdi
callq 0x32c0
jmp 0x8771
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x28(%rbp), %rax
jae 0x8863
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x2430(%rbp)
movq -0x10(%rbp), %rax
leaq -0x2080(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3170
movq %rax, %rcx
movq -0x2430(%rbp), %rax
cmpq %rcx, %rax
jae 0x8850
movq -0x10(%rbp), %rax
shlq $0x5, %rax
leaq -0x2080(%rbp,%rax), %rsi
movq -0x30(%rbp), %rdx
leaq -0x23a0(%rbp), %rdi
movl $0x8, %ecx
callq 0x3200
jmp 0x87eb
leaq -0x23a0(%rbp), %rdi
callq 0x9130
movl %eax, -0x2434(%rbp)
jmp 0x87ff
movl -0x2434(%rbp), %eax
movsbl %al, %esi
leaq -0x20a0(%rbp), %rdi
callq 0x3150
jmp 0x8816
leaq -0x23a0(%rbp), %rdi
callq 0x3140
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
jmp 0x878f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x23a0(%rbp), %rdi
callq 0x3140
jmp 0x8b2e
jmp 0x8852
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x8779
movq 0x4766(%rip), %rdi      # 0xcfd0
leaq -0x20a0(%rbp), %rsi
callq 0x31d0
movq %rax, -0x2440(%rbp)
jmp 0x887f
movq -0x2440(%rbp), %rdi
movq 0x4733(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8894
leaq -0x22a0(%rbp), %rdi
callq 0x3190
movb %al, -0x2441(%rbp)
jmp 0x88a8
movb -0x2441(%rbp), %al
testb $0x1, %al
jne 0x88b7
jmp 0x8966
leaq -0x22a0(%rbp), %rdi
leaq -0x20a0(%rbp), %rsi
callq 0x31d0
jmp 0x88cc
cmpl $0x0, -0x3c(%rbp)
jne 0x8956
movq 0x46f3(%rip), %rdi      # 0xcfd0
leaq 0x1891(%rip), %rsi      # 0xa175
callq 0x31f0
movq %rax, -0x2450(%rbp)
jmp 0x88f2
movq -0x2450(%rbp), %rdi
movq 0x46c0(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8907
movq 0x46b2(%rip), %rsi      # 0xcfc0
leaq -0x22a0(%rbp), %rdi
callq 0x3210
movq %rax, -0x2458(%rbp)
jmp 0x8923
movq -0x2458(%rbp), %rdi
leaq 0x1844(%rip), %rsi      # 0xa175
callq 0x31f0
movq %rax, -0x2460(%rbp)
jmp 0x893f
movq -0x2460(%rbp), %rdi
movq 0x4673(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8954
jmp 0x8956
leaq -0x22a0(%rbp), %rdi
callq 0x32e0
jmp 0x8964
jmp 0x8999
movq 0x4663(%rip), %rdi      # 0xcfd0
leaq 0x171b(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0x2468(%rbp)
jmp 0x8982
movq -0x2468(%rbp), %rdi
movq 0x4630(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8997
jmp 0x8999
jmp 0x899b
testb $0x1, -0x3d(%rbp)
je 0x8a6c
movq 0x4624(%rip), %rdi      # 0xcfd0
leaq 0x16dc(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0x2470(%rbp)
jmp 0x89c1
movq -0x2470(%rbp), %rdi
movq 0x45f1(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x89d6
leaq -0x22a0(%rbp), %rdi
callq 0x3190
movb %al, -0x2471(%rbp)
jmp 0x89ea
movb -0x2471(%rbp), %al
testb $0x1, %al
jne 0x89f6
jmp 0x8a37
leaq 0x1692(%rip), %rsi      # 0xa08f
leaq -0x22a0(%rbp), %rdi
callq 0x31f0
movq %rax, -0x2480(%rbp)
jmp 0x8a12
movq -0x2480(%rbp), %rdi
movq 0x45a0(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8a27
leaq -0x22a0(%rbp), %rdi
callq 0x32e0
jmp 0x8a35
jmp 0x8a6a
movq 0x4592(%rip), %rdi      # 0xcfd0
leaq 0x164a(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0x2488(%rbp)
jmp 0x8a53
movq -0x2488(%rbp), %rdi
movq 0x455f(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x8a68
jmp 0x8a6a
jmp 0x8a6c
leaq -0x22a0(%rbp), %rdi
callq 0x3300
leaq -0x20a0(%rbp), %rdi
callq 0x3140
leaq -0x2080(%rbp), %rax
movq %rax, -0x2498(%rbp)
addq $0x1000, %rax           # imm = 0x1000
movq %rax, -0x2490(%rbp)
movq -0x2490(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x24a0(%rbp)
callq 0x3140
movq -0x2498(%rbp), %rcx
movq -0x24a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2490(%rbp)
jne 0x8a9f
leaq -0x1080(%rbp), %rax
movq %rax, -0x24b0(%rbp)
addq $0x1000, %rax           # imm = 0x1000
movq %rax, -0x24a8(%rbp)
movq -0x24a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x24b8(%rbp)
callq 0x3140
movq -0x24b0(%rbp), %rcx
movq -0x24b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x24a8(%rbp)
jne 0x8aeb
leaq -0x60(%rbp), %rdi
callq 0x3140
addq $0x24f0, %rsp           # imm = 0x24F0
popq %rbp
retq
leaq -0x22a0(%rbp), %rdi
callq 0x3300
leaq -0x20a0(%rbp), %rdi
callq 0x3140
leaq -0x2080(%rbp), %rax
movq %rax, -0x24c8(%rbp)
addq $0x1000, %rax           # imm = 0x1000
movq %rax, -0x24c0(%rbp)
movq -0x24c0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x24d0(%rbp)
callq 0x3140
movq -0x24c8(%rbp), %rcx
movq -0x24d0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x24c0(%rbp)
jne 0x8b61
leaq -0x1080(%rbp), %rax
movq %rax, -0x24e0(%rbp)
addq $0x1000, %rax           # imm = 0x1000
movq %rax, -0x24d8(%rbp)
movq -0x24d8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x24e8(%rbp)
callq 0x3140
movq -0x24e0(%rbp), %rcx
movq -0x24e8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x24d8(%rbp)
jne 0x8bad
leaq -0x60(%rbp), %rdi
callq 0x3140
movq -0x70(%rbp), %rdi
callq 0x3390