// File: 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
subq $0xd30, %rsp            # imm = 0xD30
movl %edi, -0x4(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0xc98(%rbp)
callq 0x33a0
movq -0xc98(%rbp), %rdx
leaq 0x659d(%rip), %rsi      # 0xa159
leaq -0x28(%rbp), %rdi
callq 0x4340
jmp 0x3bc7
leaq -0x29(%rbp), %rdi
callq 0x3240
movb $0x0, -0x3e(%rbp)
cmpl $0x0, -0x4(%rbp)
je 0x3fa5
leaq 0x649d(%rip), %rsi      # 0xa082
leaq -0x248(%rbp), %rdi
movl $0x8, %edx
callq 0x33c0
jmp 0x3bf8
leaq -0x248(%rbp), %rdi
callq 0x3340
movb %al, -0xc99(%rbp)
jmp 0x3c0c
movb -0xc99(%rbp), %al
testb $0x1, %al
jne 0x3c1b
jmp 0x3e7b
jmp 0x3c1d
movq -0x248(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x248(%rbp,%rax), %rdi
callq 0x33d0
movb %al, -0xc9a(%rbp)
jmp 0x3c3d
movb -0xc9a(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xc9b(%rbp)
jne 0x3c5d
jmp 0x3c52
movb -0x3e(%rbp), %al
xorb $-0x1, %al
movb %al, -0xc9b(%rbp)
movb -0xc9b(%rbp), %al
testb $0x1, %al
jne 0x3c6c
jmp 0x3d05
leaq -0x248(%rbp), %rdi
callq 0x3280
movl %eax, -0xca0(%rbp)
jmp 0x3c80
movl -0xca0(%rbp), %eax
movb %al, -0x3d(%rbp)
movsbl -0x3d(%rbp), %eax
cmpl $0x30, %eax
je 0x3c9b
movsbl -0x3d(%rbp), %eax
cmpl $0x31, %eax
jne 0x3ce8
movsbl -0x3d(%rbp), %esi
leaq -0x28(%rbp), %rdi
callq 0x3150
jmp 0x3caa
jmp 0x3d00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x3240
jmp 0x4332
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x4329
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x3f94
movsbl -0x3d(%rbp), %eax
cmpl $-0x1, %eax
je 0x3cfe
movsbl -0x3d(%rbp), %eax
cmpl $0xa, %eax
je 0x3cfe
movb $0x1, -0x3e(%rbp)
jmp 0x3d00
jmp 0x3c1d
testb $0x1, -0x3e(%rbp)
jne 0x3d56
leaq -0x268(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x30e0
jmp 0x3d1d
leaq -0x268(%rbp), %rdi
callq 0x5830
jmp 0x3d2b
leaq -0x268(%rbp), %rdi
callq 0x3140
jmp 0x3d56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x3140
jmp 0x3f94
leaq -0x248(%rbp), %rdi
callq 0x3070
jmp 0x3d64
testb $0x1, -0x3e(%rbp)
je 0x3e76
movq 0x925b(%rip), %rdi      # 0xcfd0
leaq 0x6313(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xca8(%rbp)
jmp 0x3d8a
movq -0xca8(%rbp), %rdi
movq 0x9228(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3d9f
leaq 0x6308(%rip), %rsi      # 0xa0ae
leaq -0x468(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x3db9
leaq -0x468(%rbp), %rdi
callq 0x3190
movb %al, -0xca9(%rbp)
jmp 0x3dcd
movb -0xca9(%rbp), %al
testb $0x1, %al
jne 0x3dd9
jmp 0x3e37
leaq 0x62af(%rip), %rsi      # 0xa08f
leaq -0x468(%rbp), %rdi
callq 0x31f0
movq %rax, -0xcb8(%rbp)
jmp 0x3df5
movq -0xcb8(%rbp), %rdi
movq 0x91bd(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3e0a
leaq -0x468(%rbp), %rdi
callq 0x32e0
jmp 0x3e18
jmp 0x3e6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x3300
jmp 0x3f94
movq 0x9192(%rip), %rdi      # 0xcfd0
leaq 0x624a(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xcc0(%rbp)
jmp 0x3e53
movq -0xcc0(%rbp), %rdi
movq 0x915f(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3e68
jmp 0x3e6a
leaq -0x468(%rbp), %rdi
callq 0x3300
jmp 0x3f83
leaq 0x622c(%rip), %rsi      # 0xa0ae
leaq -0x668(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x3e95
leaq -0x668(%rbp), %rdi
callq 0x3190
movb %al, -0xcc1(%rbp)
jmp 0x3ea9
movb -0xcc1(%rbp), %al
testb $0x1, %al
jne 0x3eb5
jmp 0x3f13
leaq 0x61d3(%rip), %rsi      # 0xa08f
leaq -0x668(%rbp), %rdi
callq 0x31f0
movq %rax, -0xcd0(%rbp)
jmp 0x3ed1
movq -0xcd0(%rbp), %rdi
movq 0x90e1(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3ee6
leaq -0x668(%rbp), %rdi
callq 0x32e0
jmp 0x3ef4
jmp 0x3f46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x3300
jmp 0x3f94
movq 0x90b6(%rip), %rdi      # 0xcfd0
leaq 0x616e(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xcd8(%rbp)
jmp 0x3f2f
movq -0xcd8(%rbp), %rdi
movq 0x9083(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3f44
jmp 0x3f46
movq 0x9083(%rip), %rdi      # 0xcfd0
leaq 0x613b(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xce0(%rbp)
jmp 0x3f62
movq -0xce0(%rbp), %rdi
movq 0x9050(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3f77
leaq -0x668(%rbp), %rdi
callq 0x3300
leaq -0x248(%rbp), %rdi
callq 0x3090
jmp 0x4317
leaq -0x248(%rbp), %rdi
callq 0x3090
jmp 0x4329
leaq 0x6110(%rip), %rsi      # 0xa0bc
leaq -0x870(%rbp), %rdi
movl $0x8, %edx
callq 0x33c0
jmp 0x3fbf
leaq -0x870(%rbp), %rdi
callq 0x3340
movb %al, -0xce1(%rbp)
jmp 0x3fd3
movb -0xce1(%rbp), %al
testb $0x1, %al
jne 0x3fe2
jmp 0x41f6
jmp 0x3fe4
movq -0x870(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x870(%rbp,%rax), %rdi
callq 0x33d0
movb %al, -0xce2(%rbp)
jmp 0x4004
movb -0xce2(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4012
jmp 0x4080
leaq -0x870(%rbp), %rdi
callq 0x3280
movl %eax, -0xce8(%rbp)
jmp 0x4026
movl -0xce8(%rbp), %eax
movb %al, -0x3d(%rbp)
movsbl -0x3d(%rbp), %eax
cmpl $0x30, %eax
je 0x4041
movsbl -0x3d(%rbp), %eax
cmpl $0x31, %eax
jne 0x4063
movsbl -0x3d(%rbp), %esi
leaq -0x28(%rbp), %rdi
callq 0x3150
jmp 0x4050
jmp 0x407b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x4309
movsbl -0x3d(%rbp), %eax
cmpl $-0x1, %eax
je 0x4079
movsbl -0x3d(%rbp), %eax
cmpl $0xa, %eax
je 0x4079
movb $0x1, -0x3e(%rbp)
jmp 0x407b
jmp 0x3fe4
testb $0x1, -0x3e(%rbp)
jne 0x40d1
leaq -0x890(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x30e0
jmp 0x4098
leaq -0x890(%rbp), %rdi
callq 0x8070
jmp 0x40a6
leaq -0x890(%rbp), %rdi
callq 0x3140
jmp 0x40d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x890(%rbp), %rdi
callq 0x3140
jmp 0x4309
leaq -0x870(%rbp), %rdi
callq 0x3070
jmp 0x40df
testb $0x1, -0x3e(%rbp)
je 0x41f1
movq 0x8ee0(%rip), %rdi      # 0xcfd0
leaq 0x5f98(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xcf0(%rbp)
jmp 0x4105
movq -0xcf0(%rbp), %rdi
movq 0x8ead(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x411a
leaq 0x5fa6(%rip), %rsi      # 0xa0c7
leaq -0xa90(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x4134
leaq -0xa90(%rbp), %rdi
callq 0x3190
movb %al, -0xcf1(%rbp)
jmp 0x4148
movb -0xcf1(%rbp), %al
testb $0x1, %al
jne 0x4154
jmp 0x41b2
leaq 0x5f34(%rip), %rsi      # 0xa08f
leaq -0xa90(%rbp), %rdi
callq 0x31f0
movq %rax, -0xd00(%rbp)
jmp 0x4170
movq -0xd00(%rbp), %rdi
movq 0x8e42(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x4185
leaq -0xa90(%rbp), %rdi
callq 0x32e0
jmp 0x4193
jmp 0x41e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa90(%rbp), %rdi
callq 0x3300
jmp 0x4309
movq 0x8e17(%rip), %rdi      # 0xcfd0
leaq 0x5ecf(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xd08(%rbp)
jmp 0x41ce
movq -0xd08(%rbp), %rdi
movq 0x8de4(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x41e3
jmp 0x41e5
leaq -0xa90(%rbp), %rdi
callq 0x3300
jmp 0x42fb
leaq 0x5eca(%rip), %rsi      # 0xa0c7
leaq -0xc90(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x4210
leaq -0xc90(%rbp), %rdi
callq 0x3190
movb %al, -0xd09(%rbp)
jmp 0x4224
movb -0xd09(%rbp), %al
testb $0x1, %al
jne 0x4230
jmp 0x428b
leaq 0x5e58(%rip), %rsi      # 0xa08f
leaq -0xc90(%rbp), %rdi
callq 0x31f0
movq %rax, -0xd18(%rbp)
jmp 0x424c
movq -0xd18(%rbp), %rdi
movq 0x8d66(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x4261
leaq -0xc90(%rbp), %rdi
callq 0x32e0
jmp 0x426f
jmp 0x42be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xc90(%rbp), %rdi
callq 0x3300
jmp 0x4309
movq 0x8d3e(%rip), %rdi      # 0xcfd0
leaq 0x5df6(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xd20(%rbp)
jmp 0x42a7
movq -0xd20(%rbp), %rdi
movq 0x8d0b(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x42bc
jmp 0x42be
movq 0x8d0b(%rip), %rdi      # 0xcfd0
leaq 0x5dc3(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0xd28(%rbp)
jmp 0x42da
movq -0xd28(%rbp), %rdi
movq 0x8cd8(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x42ef
leaq -0xc90(%rbp), %rdi
callq 0x3300
leaq -0x870(%rbp), %rdi
callq 0x3090
jmp 0x4317
leaq -0x870(%rbp), %rdi
callq 0x3090
jmp 0x4329
leaq -0x28(%rbp), %rdi
callq 0x3140
addq $0xd30, %rsp            # imm = 0xD30
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x3140
movq -0x38(%rbp), %rdi
callq 0x3390
nopl (%rax,%rax)