// File: /workspace/github_cpp_makefile_star2_O3/carellano8[P]Proyecto-Redes-I-2017/main.cpp
// Function: receptor(int)
void receptor(int c){
    string tramas="";
    char buff;
    bool error=false;
	if(c){
	    ifstream archivo2("canalcrc.txt");
	    if(archivo2.is_open()){
	        while (! archivo2.eof() &&!error){

	             buff=archivo2.get();
	             if(buff=='0'||buff=='1'){
                         tramas+=buff;
	               }else{
                        
                        if(buff!= EOF&&buff!='\n'){
                            error=true;
                            
                        }
                    
                 }
	        }
            if(!error){
	           crc16::recibir(tramas);
                }
	        archivo2.close();
            if(error){
                cout<<"Se ha detectado algun un error"<<endl;
                ofstream archivo("salidacrc.txt");  
                if(archivo.is_open()){
                    archivo<<"Se ha detectado algun un error"<<endl;
                    archivo.close();
                }else{
                    cout<<"Se ha detectado algun un error"<<endl;
                }
            }
	    }else{
            ofstream archivo("salidacrc.txt");  
            if(archivo.is_open()){
            archivo<<"Se ha detectado algun un error"<<endl;
            archivo.close();
            }else{
                cout<<"Se ha detectado algun un error"<<endl;
            }

            cout<<"Se ha detectado algun un error"<<endl;
        }
	}
	else{
	    ifstream archivo2("canalh.txt");
	    if(archivo2.is_open()){
	        while (! archivo2.eof() ){

	             buff=archivo2.get();
	             if(buff=='0'||buff=='1'){
                         tramas+=buff;
                   }else{
                        
                        if(buff!= EOF&&buff!='\n'){
                            error=true;
                            
                        }
                    
                 }
	        }
            if(!error){
	           hamming::recibir(tramas);
	        }
            archivo2.close();
            if(error){
                cout<<"Se ha detectado algun un error"<<endl;
                ofstream archivo("salidah.txt");
                if(archivo.is_open()){
                    archivo<<"Se ha detectado algun un error"<<endl;
                    archivo.close();
                }else{
                    cout<<"Se ha detectado algun un error"<<endl;
                }
            }
	    }else{
            ofstream archivo("salidah.txt");
            if(archivo.is_open()){
                archivo<<"Se ha detectado algun un error"<<endl;
                archivo.close();
            }else{
                cout<<"Se ha detectado algun un error"<<endl;
            }
            cout<<"Se ha detectado algun un error"<<endl;
        }

	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x470, %rsp            # imm = 0x470
movl %edi, %ebx
leaq -0x30(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x57e7(%rip), %rdx      # 0x8159
leaq -0x40(%rbp), %rdi
movq %rdx, %rsi
callq 0x3140
testl %ebx, %ebx
je 0x2b36
leaq 0x56f5(%rip), %rsi      # 0x8082
leaq -0x488(%rbp), %rdi
movl $0x8, %edx
callq 0x2260
leaq -0x410(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2cf2
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
jne 0x2a19
leaq -0x488(%rbp), %rbx
leaq -0x40(%rbp), %r14
movq %rbx, %rdi
callq 0x21b0
movl %eax, %ecx
andl $0xfe, %ecx
cmpl $0x30, %ecx
jne 0x29f4
movsbl %al, %esi
movq %r14, %rdi
callq 0x2120
jmp 0x2a04
cmpb $-0x1, %al
je 0x2a04
movzbl %al, %eax
cmpl $0xa, %eax
jne 0x3017
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
je 0x29d2
leaq -0x70(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
addq %rsi, %rdx
leaq -0x80(%rbp), %rdi
callq 0x30a2
leaq -0x80(%rbp), %rdi
callq 0x444c
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a53
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x2160
xorl %ebx, %ebx
leaq -0x488(%rbp), %rdi
callq 0x2050
testb %bl, %bl
je 0x2fe6
movq 0x8560(%rip), %rbx      # 0xafd0
leaq 0x5618(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x852e(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq 0x55f8(%rip), %rsi      # 0x80ae
leaq -0x280(%rbp), %rdi
movl $0x10, %edx
callq 0x2180
leaq -0x210(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2f22
leaq 0x55ad(%rip), %rsi      # 0x808f
leaq -0x280(%rbp), %rbx
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq -0x280(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
leaq -0x280(%rbp), %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq -0x280(%rbp), %rdi
callq 0x21d0
jmp 0x2fb0
leaq 0x557f(%rip), %rsi      # 0x80bc
leaq -0x488(%rbp), %rdi
movl $0x8, %edx
callq 0x2260
leaq -0x410(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2d79
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
jne 0x2bd5
xorl %r12d, %r12d
leaq -0x488(%rbp), %rbx
leaq -0x40(%rbp), %r14
movq %rbx, %rdi
callq 0x21b0
movl %eax, %ecx
andl $0xfe, %ecx
cmpl $0x30, %ecx
jne 0x2ba7
movsbl %al, %esi
movq %r14, %rdi
callq 0x2120
jmp 0x2bb8
cmpb $0xa, %al
je 0x2bb8
movzbl %al, %eax
cmpl $0xff, %eax
je 0x2bb8
movb $0x1, %r12b
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
je 0x2b85
movb $0x1, %bl
testb $0x1, %r12b
jne 0x2c11
leaq -0x50(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
addq %rsi, %rdx
leaq -0x60(%rbp), %rdi
callq 0x30a2
leaq -0x60(%rbp), %rdi
callq 0x606a
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x2c0f
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x2160
xorl %ebx, %ebx
leaq -0x488(%rbp), %rdi
callq 0x2050
testb %bl, %bl
je 0x2fe6
movq 0x83a4(%rip), %rbx      # 0xafd0
leaq 0x545c(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x8372(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq 0x5455(%rip), %rsi      # 0x80c7
leaq -0x280(%rbp), %rdi
movl $0x10, %edx
callq 0x2180
leaq -0x210(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2f6a
leaq 0x53f1(%rip), %rsi      # 0x808f
leaq -0x280(%rbp), %rbx
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq -0x280(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
leaq -0x280(%rbp), %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq -0x280(%rbp), %rdi
callq 0x21d0
jmp 0x2fb0
leaq 0x53b5(%rip), %rsi      # 0x80ae
leaq -0x280(%rbp), %rdi
movl $0x10, %edx
callq 0x2180
leaq -0x210(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2e00
leaq 0x536a(%rip), %rsi      # 0x808f
leaq -0x280(%rbp), %rbx
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq -0x280(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
leaq -0x280(%rbp), %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq -0x280(%rbp), %rdi
callq 0x21d0
jmp 0x2e46
leaq 0x5347(%rip), %rsi      # 0x80c7
leaq -0x280(%rbp), %rdi
movl $0x10, %edx
callq 0x2180
leaq -0x210(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x2e91
leaq 0x52e3(%rip), %rsi      # 0x808f
leaq -0x280(%rbp), %rbx
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq -0x280(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
leaq -0x280(%rbp), %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq -0x280(%rbp), %rdi
callq 0x21d0
jmp 0x2ed7
movq 0x81c9(%rip), %rbx      # 0xafd0
leaq 0x5281(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x8197(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq 0x8183(%rip), %rbx      # 0xafd0
leaq 0x523b(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x8151(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
jmp 0x2fb0
movq 0x8138(%rip), %rbx      # 0xafd0
leaq 0x51f0(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x8106(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq 0x80f2(%rip), %rbx      # 0xafd0
leaq 0x51aa(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x80c0(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
jmp 0x2fb0
movq 0x80a7(%rip), %rbx      # 0xafd0
leaq 0x515f(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x8075(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
jmp 0x2fb0
movq 0x805f(%rip), %rbx      # 0xafd0
leaq 0x5117(%rip), %rsi      # 0x808f
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq 0x802d(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq 0x8011(%rip), %rax      # 0xafc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x278(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x280(%rbp,%rcx)
callq 0x2110
leaq -0x188(%rbp), %rdi
callq 0x20a0
leaq -0x488(%rbp), %rdi
callq 0x2070
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x3007
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x2160
addq $0x470, %rsp            # imm = 0x470
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bl
jmp 0x2a55
jmp 0x3076
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x3079
movq -0x50(%rbp), %rsi
jmp 0x3046
jmp 0x3076
jmp 0x3076
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x3079
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x2160
jmp 0x3079
jmp 0x3076
jmp 0x3056
jmp 0x3063
movq %rax, %rbx
jmp 0x3085
jmp 0x3063
jmp 0x3076
jmp 0x3076
jmp 0x3063
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
callq 0x21e0
jmp 0x3079
jmp 0x3076
movq %rax, %rbx
leaq -0x488(%rbp), %rdi
callq 0x2070
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0x309a
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x2160
movq %rbx, %rdi
callq 0x2240