// File: /workspace/github_cpp_makefile_star2_O3/carellano8[P]Proyecto-Redes-I-2017/main.cpp
// Function: emisor(int)
void emisor(int c){
    ifstream archivo("entrada.txt");
    string mensaje="";
    int i,j=0;
    char buff;
    bool error=false;
    if(archivo.is_open()){
        i=0;
        while (!archivo.eof()&&!error)
        {

             buff=archivo.get();
             if((buff>=32&&buff<=126)/*||buff=='\n'*/){
                mensaje+=buff;
            }else{
                
                if(buff!= EOF&&buff!='\n' ){//solo se ecepta un salto de linea y fin de archivo
                   // cout<<buff<<endl;
                    error=true;
                }
                if(buff=='\n'){
                        j++;
                   }
                if(buff==EOF){i--;}
            }
            if(j>=2){error=true;}
            i++;
        }
        
        if(i-1>MAXMSJ){error=true;}
        if(!error){
            if(c){
                crc16::enviar(mensaje);
                }
            else{
                hamming::enviar(mensaje);
                }   
        }
        if(error){
            cout<<"Se ha detectado algun un error"<<endl;
        }
        archivo.close();
    }else{

            cout<<"Se ha detectado algun un error"<<endl;
        }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movl %edi, %ebx
leaq 0x5a38(%rip), %rsi      # 0x80d3
leaq -0x298(%rbp), %rdi
movl $0x8, %edx
callq 0x2260
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x5a9e(%rip), %rdx      # 0x8159
leaq -0x50(%rbp), %rdi
movq %rdx, %rsi
callq 0x3140
leaq -0x220(%rbp), %rdi
callq 0x2060
testb %al, %al
je 0x27de
movq -0x298(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x278(%rbp,%rax)
jne 0x27a6
movl %ebx, -0x2c(%rbp)
xorl %r13d, %r13d
leaq -0x298(%rbp), %r14
movl $0x1, %r12d
xorl %ebx, %ebx
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x21b0
movsbl %al, %ecx
addl $-0x20, %ecx
cmpl $0x5e, %ecx
ja 0x2730
movsbl %al, %esi
leaq -0x50(%rbp), %rdi
callq 0x2120
movl %r15d, %eax
jmp 0x2760
shll $0x18, %eax
cmpl $0xff000000, %eax       # imm = 0xFF000000
je 0x2744
cmpl $0xa000000, %eax        # imm = 0xA000000
je 0x2744
movb $0x1, %r13b
xorl %ecx, %ecx
cmpl $0xa000000, %eax        # imm = 0xA000000
sete %cl
addl %ecx, %ebx
xorl %ecx, %ecx
cmpl $0xff000000, %eax       # imm = 0xFF000000
sete %cl
subl %ecx, %r15d
movl %r15d, %eax
cmpl $0x2, %ebx
movzbl %r13b, %r13d
cmovgel %r12d, %r13d
movq -0x298(%rbp), %rcx
movq -0x18(%rcx), %rcx
testb $0x2, -0x278(%rbp,%rcx)
jne 0x278a
leal 0x1(%rax), %r15d
testb $0x1, %r13b
je 0x270c
cmpl $0x7d0, %eax            # imm = 0x7D0
leaq -0x40(%rbp), %r15
movl -0x2c(%rbp), %ebx
jg 0x2864
testb $0x1, %r13b
jne 0x2864
testl %ebx, %ebx
je 0x2829
leaq -0x80(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x90(%rbp), %rdi
callq 0x30a2
leaq -0x90(%rbp), %rdi
callq 0x31e0
movq -0x90(%rbp), %rdi
jmp 0x2852
movq 0x87eb(%rip), %rbx      # 0xafd0
leaq 0x58a3(%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 0x87b9(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
jmp 0x28b6
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x70(%rbp), %rdi
callq 0x30a2
leaq -0x70(%rbp), %rdi
callq 0x52c4
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x28aa
movq (%r14), %rsi
incq %rsi
callq 0x2160
jmp 0x28aa
movq 0x8765(%rip), %rbx      # 0xafd0
leaq 0x581d(%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 0x8733(%rip), %rdi      # 0xafd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
leaq -0x298(%rbp), %rdi
callq 0x2050
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x28cb
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2160
leaq -0x298(%rbp), %rdi
callq 0x2070
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x2922
movq -0x60(%rbp), %rsi
jmp 0x290e
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x2922
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2160
jmp 0x2922
movq %rax, %rbx
jmp 0x293b
jmp 0x291f
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x293b
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2160
leaq -0x298(%rbp), %rdi
callq 0x2070
movq %rbx, %rdi
callq 0x2240